{
  "typeName" : "AWS::CodeDeploy::DeploymentGroup",
  "description" : "Resource type definition for AWS::CodeDeploy::DeploymentGroup",
  "sourceUrl" : "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git",
  "definitions" : {
    "OnPremisesTagSet" : {
      "type" : "object",
      "description" : "Specifies a list containing other lists of on-premises instance tag groups. In order for an instance to be included in the deployment group, it must be identified by all the tag groups in the list.",
      "additionalProperties" : false,
      "properties" : {
        "OnPremisesTagSetList" : {
          "type" : "array",
          "description" : "A list that contains other lists of on-premises instance tag groups. For an instance to be included in the deployment group, it must be identified by all of the tag groups in the list.",
          "uniqueItems" : true,
          "items" : {
            "$ref" : "#/definitions/OnPremisesTagSetListObject"
          }
        }
      }
    },
    "DeploymentStyle" : {
      "type" : "object",
      "description" : "Information about the type of deployment, either in-place or blue/green, you want to run and whether to route deployment traffic behind a load balancer.",
      "additionalProperties" : false,
      "properties" : {
        "DeploymentOption" : {
          "type" : "string",
          "description" : "Indicates whether to route deployment traffic behind a load balancer."
        },
        "DeploymentType" : {
          "type" : "string",
          "description" : "Indicates whether to run an in-place or blue/green deployment."
        }
      }
    },
    "BlueGreenDeploymentConfiguration" : {
      "type" : "object",
      "description" : "Information about blue/green deployment options for a deployment group.",
      "additionalProperties" : false,
      "properties" : {
        "GreenFleetProvisioningOption" : {
          "$ref" : "#/definitions/GreenFleetProvisioningOption",
          "description" : "Information about how instances are provisioned for a replacement environment in a blue/green deployment."
        },
        "DeploymentReadyOption" : {
          "$ref" : "#/definitions/DeploymentReadyOption",
          "description" : "Information about the action to take when newly provisioned instances are ready to receive traffic in a blue/green deployment."
        },
        "TerminateBlueInstancesOnDeploymentSuccess" : {
          "$ref" : "#/definitions/BlueInstanceTerminationOption",
          "description" : "Information about whether to terminate instances in the original fleet during a blue/green deployment."
        }
      }
    },
    "TagFilter" : {
      "type" : "object",
      "description" : "Specifies which on-premises instances to associate with the deployment group.",
      "additionalProperties" : false,
      "properties" : {
        "Value" : {
          "type" : "string",
          "description" : "The on-premises instance tag filter value."
        },
        "Type" : {
          "type" : "string",
          "description" : "The on-premises instance tag filter type"
        },
        "Key" : {
          "type" : "string",
          "description" : "The on-premises instance tag filter key."
        }
      }
    },
    "TriggerConfig" : {
      "type" : "object",
      "description" : "Information about notification triggers for the deployment group.",
      "additionalProperties" : false,
      "properties" : {
        "TriggerTargetArn" : {
          "type" : "string",
          "description" : "The Amazon Resource Name (ARN) of the Amazon Simple Notification Service topic through which notifications about deployment or instance events are sent."
        },
        "TriggerName" : {
          "type" : "string",
          "description" : "The name of the notification trigger."
        },
        "TriggerEvents" : {
          "type" : "array",
          "description" : "The event type or types that trigger notifications.",
          "uniqueItems" : true,
          "items" : {
            "type" : "string"
          }
        }
      }
    },
    "GitHubLocation" : {
      "type" : "object",
      "description" : "Specifies the location of an application revision that is stored in GitHub.",
      "additionalProperties" : false,
      "properties" : {
        "Repository" : {
          "type" : "string",
          "description" : "The GitHub account and repository pair that stores the application revision to be deployed."
        },
        "CommitId" : {
          "type" : "string",
          "description" : "The SHA1 commit ID of the GitHub commit that represents the bundled artifacts for the application revision."
        }
      },
      "required" : [ "Repository", "CommitId" ]
    },
    "Deployment" : {
      "type" : "object",
      "description" : "Specifies an AWS CodeDeploy application revision to be deployed to instances in the deployment group. If you specify an application revision, your target revision is deployed as soon as the provisioning process is complete.",
      "additionalProperties" : false,
      "properties" : {
        "Description" : {
          "type" : "string",
          "description" : "A description of the deployment."
        },
        "Revision" : {
          "$ref" : "#/definitions/RevisionLocation",
          "description" : "Information about the location of stored application artifacts and the service from which to retrieve them."
        },
        "IgnoreApplicationStopFailures" : {
          "type" : "boolean",
          "description" : "If true, then if an ApplicationStop, BeforeBlockTraffic, or AfterBlockTraffic deployment lifecycle event to an instance fails, then the deployment continues to the next deployment lifecycle event. If false or not specified, then if a lifecycle event fails during a deployment to an instance, that deployment fails. If deployment to that instance is part of an overall deployment and the number of healthy hosts is not less than the minimum number of healthy hosts, then a deployment to the next instance is attempted."
        }
      },
      "required" : [ "Revision" ]
    },
    "ELBInfo" : {
      "type" : "object",
      "description" : "The ELBInfo property type specifies information about the Elastic Load Balancing load balancer used for an CodeDeploy deployment group. If you specify the ELBInfo property, the DeploymentStyle.DeploymentOption property must be set to WITH_TRAFFIC_CONTROL for AWS CodeDeploy to route your traffic using the specified load balancers.",
      "additionalProperties" : false,
      "properties" : {
        "Name" : {
          "type" : "string",
          "description" : "For blue/green deployments, the name of the load balancer that is used to route traffic from original instances to replacement instances in a blue/green deployment. For in-place deployments, the name of the load balancer that instances are deregistered from so they are not serving traffic during a deployment, and then re-registered with after the deployment is complete."
        }
      }
    },
    "EC2TagSetListObject" : {
      "type" : "object",
      "description" : "The EC2TagSet property type specifies information about groups of tags applied to Amazon EC2 instances. The deployment group includes only Amazon EC2 instances identified by all the tag groups. Cannot be used in the same template as EC2TagFilters.",
      "additionalProperties" : false,
      "properties" : {
        "Ec2TagGroup" : {
          "type" : "array",
          "description" : "A list that contains other lists of Amazon EC2 instance tag groups. For an instance to be included in the deployment group, it must be identified by all of the tag groups in the list.",
          "uniqueItems" : true,
          "items" : {
            "$ref" : "#/definitions/EC2TagFilter"
          }
        }
      }
    },
    "S3Location" : {
      "type" : "object",
      "description" : "Information about the location of application artifacts stored in Amazon S3.",
      "additionalProperties" : false,
      "properties" : {
        "BundleType" : {
          "type" : "string",
          "description" : "The file type of the application revision."
        },
        "Bucket" : {
          "type" : "string",
          "description" : "The name of the Amazon S3 bucket where the application revision is stored."
        },
        "ETag" : {
          "type" : "string",
          "description" : "The ETag of the Amazon S3 object that represents the bundled artifacts for the application revision. If the ETag is not specified as an input parameter, ETag validation of the object is skipped."
        },
        "Version" : {
          "type" : "string",
          "description" : "A specific version of the Amazon S3 object that represents the bundled artifacts for the application revision. If the version is not specified, the system uses the most recent version by default."
        },
        "Key" : {
          "type" : "string",
          "description" : "The name of the Amazon S3 object that represents the bundled artifacts for the application revision."
        }
      },
      "required" : [ "Bucket", "Key" ]
    },
    "AutoRollbackConfiguration" : {
      "type" : "object",
      "description" : "Configures automatic rollback for an AWS CodeDeploy deployment group when a deployment is not completed successfully.",
      "additionalProperties" : false,
      "properties" : {
        "Events" : {
          "type" : "array",
          "description" : "The event type or types that trigger a rollback.",
          "uniqueItems" : true,
          "items" : {
            "type" : "string"
          }
        },
        "Enabled" : {
          "type" : "boolean",
          "description" : "Indicates whether a defined automatic rollback configuration is currently enabled."
        }
      }
    },
    "DeploymentReadyOption" : {
      "type" : "object",
      "description" : "Information about when to reroute traffic from an original environment to a replacement environment in a blue/green deployment.",
      "additionalProperties" : false,
      "properties" : {
        "WaitTimeInMinutes" : {
          "type" : "integer",
          "description" : "The number of minutes to wait before the status of a blue/green deployment is changed to Stopped if rerouting is not started manually. Applies only to the STOP_DEPLOYMENT option for actionOnTimeout."
        },
        "ActionOnTimeout" : {
          "type" : "string",
          "description" : "Information about when to reroute traffic from an original environment to a replacement environment in a blue/green deployment. CONTINUE_DEPLOYMENT: Register new instances with the load balancer immediately after the new application revision is installed on the instances in the replacement environment. STOP_DEPLOYMENT: Do not register new instances with a load balancer unless traffic rerouting is started using ContinueDeployment . If traffic rerouting is not started before the end of the specified wait period, the deployment status is changed to Stopped."
        }
      }
    },
    "EC2TagFilter" : {
      "type" : "object",
      "description" : "Information about an Amazon EC2 tag filter.",
      "additionalProperties" : false,
      "properties" : {
        "Value" : {
          "type" : "string",
          "description" : "The tag filter value."
        },
        "Type" : {
          "type" : "string",
          "description" : "The tag filter type."
        },
        "Key" : {
          "type" : "string",
          "description" : "The tag filter key."
        }
      }
    },
    "RevisionLocation" : {
      "type" : "object",
      "description" : "Defines the location of the CodeDeploy application revision to deploy.",
      "additionalProperties" : false,
      "properties" : {
        "S3Location" : {
          "$ref" : "#/definitions/S3Location"
        },
        "GitHubLocation" : {
          "$ref" : "#/definitions/GitHubLocation"
        },
        "RevisionType" : {
          "type" : "string",
          "description" : "The type of application revision."
        }
      }
    },
    "GreenFleetProvisioningOption" : {
      "type" : "object",
      "description" : "Information about the instances that belong to the replacement environment in a blue/green deployment.",
      "additionalProperties" : false,
      "properties" : {
        "Action" : {
          "type" : "string",
          "description" : "The method used to add instances to a replacement environment."
        }
      }
    },
    "LoadBalancerInfo" : {
      "type" : "object",
      "description" : "Specifies information about the load balancer or target group used for an AWS CodeDeploy deployment group. For AWS CloudFormation to use the properties specified in LoadBalancerInfo, the DeploymentStyle.DeploymentOption property must be set to WITH_TRAFFIC_CONTROL.",
      "additionalProperties" : false,
      "properties" : {
        "TargetGroupInfoList" : {
          "type" : "array",
          "description" : "An array that contains information about the target groups to use for load balancing in a deployment. If you're using Application Load Balancers and Network Load Balancers, specify their associated target groups in this array.",
          "uniqueItems" : true,
          "items" : {
            "$ref" : "#/definitions/TargetGroupInfo"
          }
        },
        "ElbInfoList" : {
          "type" : "array",
          "description" : "An array that contains information about the load balancers to use for load balancing in a deployment. If you're using Classic Load Balancers, specify those load balancers in this array.",
          "uniqueItems" : true,
          "items" : {
            "$ref" : "#/definitions/ELBInfo"
          }
        },
        "TargetGroupPairInfoList" : {
          "type" : "array",
          "description" : "The target group pair information. This is an array of TargeGroupPairInfo objects with a maximum size of one.",
          "uniqueItems" : true,
          "items" : {
            "$ref" : "#/definitions/TargetGroupPairInfo"
          }
        }
      }
    },
    "AlarmConfiguration" : {
      "type" : "object",
      "description" : "Configures CloudWatch alarms for an AWS CodeDeploy deployment group.",
      "additionalProperties" : false,
      "properties" : {
        "Alarms" : {
          "type" : "array",
          "description" : "A list of alarms configured for the deployment or deployment group. A maximum of 10 alarms can be added.",
          "uniqueItems" : true,
          "items" : {
            "$ref" : "#/definitions/Alarm"
          }
        },
        "IgnorePollAlarmFailure" : {
          "type" : "boolean",
          "description" : "Indicates whether a deployment should continue if information about the current state of alarms cannot be retrieved from Amazon CloudWatch. The default value is false."
        },
        "Enabled" : {
          "type" : "boolean",
          "description" : "Indicates whether the alarm configuration is enabled."
        }
      }
    },
    "EC2TagSet" : {
      "type" : "object",
      "description" : "Specifies information about groups of tags applied to Amazon EC2 instances. The deployment group includes only Amazon EC2 instances identified by all the tag groups. Cannot be used in the same template as EC2TagFilters.",
      "additionalProperties" : false,
      "properties" : {
        "Ec2TagSetList" : {
          "type" : "array",
          "description" : "The Amazon EC2 tags that are already applied to Amazon EC2 instances that you want to include in the deployment group. CodeDeploy includes all Amazon EC2 instances identified by any of the tags you specify in this deployment group.",
          "uniqueItems" : true,
          "items" : {
            "$ref" : "#/definitions/EC2TagSetListObject"
          }
        }
      }
    },
    "TrafficRoute" : {
      "type" : "object",
      "description" : "Information about a listener. The listener contains the path used to route traffic that is received from the load balancer to a target group.",
      "additionalProperties" : false,
      "properties" : {
        "ListenerArns" : {
          "type" : "array",
          "description" : "The Amazon Resource Name (ARN) of one listener. The listener identifies the route between a target group and a load balancer. This is an array of strings with a maximum size of one.",
          "uniqueItems" : true,
          "items" : {
            "type" : "string"
          }
        }
      }
    },
    "ECSService" : {
      "type" : "object",
      "description" : "Contains the service and cluster names used to identify an Amazon ECS deployment's target.",
      "additionalProperties" : false,
      "properties" : {
        "ServiceName" : {
          "type" : "string",
          "description" : "The name of the target Amazon ECS service."
        },
        "ClusterName" : {
          "type" : "string",
          "description" : "The name of the cluster that the Amazon ECS service is associated with."
        }
      },
      "required" : [ "ServiceName", "ClusterName" ]
    },
    "TargetGroupPairInfo" : {
      "type" : "object",
      "description" : "The TargetGroupInfo property type specifies information about a target group in Elastic Load Balancing to use in a deployment. Instances are registered as targets in a target group, and traffic is routed to the target group. The DeploymentStyle.DeploymentOption property must be set to WITH_TRAFFIC_CONTROL for CodeDeploy to route your traffic using the specified target groups.",
      "additionalProperties" : false,
      "properties" : {
        "ProdTrafficRoute" : {
          "$ref" : "#/definitions/TrafficRoute",
          "description" : "The path used by a load balancer to route production traffic when an Amazon ECS deployment is complete."
        },
        "TestTrafficRoute" : {
          "$ref" : "#/definitions/TrafficRoute",
          "description" : "An optional path used by a load balancer to route test traffic after an Amazon ECS deployment. Validation can occur while test traffic is served during a deployment."
        },
        "TargetGroups" : {
          "type" : "array",
          "description" : "One pair of target groups. One is associated with the original task set. The second is associated with the task set that serves traffic after the deployment is complete.",
          "uniqueItems" : true,
          "items" : {
            "$ref" : "#/definitions/TargetGroupInfo"
          }
        }
      }
    },
    "Alarm" : {
      "type" : "object",
      "description" : "Specifies a CloudWatch alarm to use for an AWS CodeDeploy deployment group.",
      "additionalProperties" : false,
      "properties" : {
        "Name" : {
          "type" : "string",
          "description" : "The name of the alarm. Maximum length is 255 characters. Each alarm name can be used only once in a list of alarms."
        }
      }
    },
    "TargetGroupInfo" : {
      "type" : "object",
      "description" : "Specifies information about a target group in Elastic Load Balancing to use in a deployment. Instances are registered as targets in a target group, and traffic is routed to the target group. The DeploymentStyle.DeploymentOption property must be set to WITH_TRAFFIC_CONTROL for CodeDeploy to route your traffic using the specified target groups.",
      "additionalProperties" : false,
      "properties" : {
        "Name" : {
          "type" : "string",
          "description" : "For blue/green deployments, the name of the target group that instances in the original environment are deregistered from, and instances in the replacement environment registered with. For in-place deployments, the name of the target group that instances are deregistered from, so they are not serving traffic during a deployment, and then re-registered with after the deployment completes. No duplicates allowed."
        }
      }
    },
    "OnPremisesTagSetListObject" : {
      "type" : "object",
      "description" : "Specifies lists of on-premises instance tag groups. In order for an instance to be included in the deployment group, it must be identified by all the tag groups in the list.",
      "additionalProperties" : false,
      "properties" : {
        "OnPremisesTagGroup" : {
          "type" : "array",
          "description" : "Information about groups of on-premises instance tags.",
          "uniqueItems" : true,
          "items" : {
            "$ref" : "#/definitions/TagFilter"
          }
        }
      }
    },
    "Tag" : {
      "type" : "object",
      "description" : "Information about a tag.",
      "additionalProperties" : false,
      "properties" : {
        "Value" : {
          "type" : "string",
          "description" : "The tag's value."
        },
        "Key" : {
          "type" : "string",
          "description" : "The tag's key."
        }
      },
      "required" : [ "Value", "Key" ]
    },
    "BlueInstanceTerminationOption" : {
      "type" : "object",
      "description" : "Information about whether instances in the original environment are terminated when a blue/green deployment is successful. BlueInstanceTerminationOption does not apply to Lambda deployments.",
      "additionalProperties" : false,
      "properties" : {
        "TerminationWaitTimeInMinutes" : {
          "type" : "integer",
          "description" : "For an Amazon EC2 deployment, the number of minutes to wait after a successful blue/green deployment before terminating instances from the original environment. For an Amazon ECS deployment, the number of minutes before deleting the original (blue) task set. During an Amazon ECS deployment, CodeDeploy shifts traffic from the original (blue) task set to a replacement (green) task set. The maximum setting is 2880 minutes (2 days)."
        },
        "Action" : {
          "type" : "string",
          "description" : "The action to take on instances in the original environment after a successful blue/green deployment."
        }
      }
    }
  },
  "properties" : {
    "OnPremisesTagSet" : {
      "$ref" : "#/definitions/OnPremisesTagSet",
      "description" : "Information about groups of tags applied to on-premises instances. The deployment group includes only on-premises instances identified by all the tag groups. You can specify OnPremisesInstanceTagFilters or OnPremisesInstanceTagSet, but not both."
    },
    "ApplicationName" : {
      "type" : "string",
      "description" : "The name of an existing CodeDeploy application to associate this deployment group with."
    },
    "DeploymentStyle" : {
      "$ref" : "#/definitions/DeploymentStyle",
      "description" : "Attributes that determine the type of deployment to run and whether to route deployment traffic behind a load balancer. If you specify this property with a blue/green deployment type, don't specify the AutoScalingGroups, LoadBalancerInfo, or Deployment properties."
    },
    "ServiceRoleArn" : {
      "type" : "string",
      "description" : "A service role Amazon Resource Name (ARN) that grants CodeDeploy permission to make calls to AWS services on your behalf. For more information, see 'Create a Service Role for AWS CodeDeploy' in the AWS CodeDeploy User Guide."
    },
    "BlueGreenDeploymentConfiguration" : {
      "$ref" : "#/definitions/BlueGreenDeploymentConfiguration",
      "description" : "Information about blue/green deployment options for a deployment group."
    },
    "AutoScalingGroups" : {
      "type" : "array",
      "uniqueItems" : true,
      "items" : {
        "type" : "string"
      },
      "description" : "A list of associated Auto Scaling groups that CodeDeploy automatically deploys revisions to when new instances are created. Duplicates are not allowed."
    },
    "Ec2TagSet" : {
      "$ref" : "#/definitions/EC2TagSet",
      "description" : "Information about groups of tags applied to Amazon EC2 instances. Use when the deployment group includes only Amazon EC2 instances identified by all the tag groups. Cannot be used in the same call as ec2TagFilter."
    },
    "OutdatedInstancesStrategy" : {
      "type" : "string",
      "description" : "Indicates what happens when new Amazon EC2 instances are launched mid-deployment and do not receive the deployed application revision. If this option is set to UPDATE or is unspecified, CodeDeploy initiates one or more 'auto-update outdated instances' deployments to apply the deployed application revision to the new Amazon EC2 instances. If this option is set to IGNORE, CodeDeploy does not initiate a deployment to update the new Amazon EC2 instances. This may result in instances having different revisions."
    },
    "TriggerConfigurations" : {
      "type" : "array",
      "uniqueItems" : true,
      "items" : {
        "$ref" : "#/definitions/TriggerConfig"
      },
      "description" : "Information about triggers associated with the deployment group. Duplicates are not allowed."
    },
    "Deployment" : {
      "$ref" : "#/definitions/Deployment",
      "description" : "The application revision to deploy to this deployment group. If you specify this property, your target application revision is deployed as soon as the provisioning process is complete. If you specify this property, don't specify the AutoRollbackConfiguration property."
    },
    "DeploymentConfigName" : {
      "type" : "string",
      "description" : "A deployment configuration name or a predefined configuration name. With predefined configurations, you can deploy application revisions to one instance at a time (CodeDeployDefault.OneAtATime), half of the instances at a time (CodeDeployDefault.HalfAtATime), or all the instances at once (CodeDeployDefault.AllAtOnce)."
    },
    "AlarmConfiguration" : {
      "$ref" : "#/definitions/AlarmConfiguration",
      "description" : "Information about the Amazon CloudWatch alarms that are associated with the deployment group."
    },
    "Ec2TagFilters" : {
      "type" : "array",
      "uniqueItems" : true,
      "items" : {
        "$ref" : "#/definitions/EC2TagFilter"
      },
      "description" : "The Amazon EC2 tags that are already applied to Amazon EC2 instances that you want to include in the deployment group. CodeDeploy includes all Amazon EC2 instances identified by any of the tags you specify in this deployment group. Duplicates are not allowed. You can specify EC2TagFilters or Ec2TagSet, but not both."
    },
    "TerminationHookEnabled" : {
      "type" : "boolean",
      "description" : "Indicates whether the deployment group was configured to have CodeDeploy install a termination hook into an Auto Scaling group."
    },
    "ECSServices" : {
      "type" : "array",
      "uniqueItems" : true,
      "items" : {
        "$ref" : "#/definitions/ECSService"
      },
      "description" : "The target Amazon ECS services in the deployment group. This applies only to deployment groups that use the Amazon ECS compute platform. A target Amazon ECS service is specified as an Amazon ECS cluster and service name pair using the format <clustername>:<servicename>."
    },
    "AutoRollbackConfiguration" : {
      "$ref" : "#/definitions/AutoRollbackConfiguration",
      "description" : "Information about the automatic rollback configuration that is associated with the deployment group. If you specify this property, don't specify the Deployment property."
    },
    "LoadBalancerInfo" : {
      "$ref" : "#/definitions/LoadBalancerInfo",
      "description" : "Information about the load balancer to use in a deployment."
    },
    "DeploymentGroupName" : {
      "type" : "string",
      "description" : "A name for the deployment group. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the deployment group name."
    },
    "Tags" : {
      "type" : "array",
      "uniqueItems" : false,
      "items" : {
        "$ref" : "#/definitions/Tag"
      },
      "description" : "The metadata that you apply to CodeDeploy deployment groups to help you organize and categorize them. Each tag consists of a key and an optional value, both of which you define."
    },
    "OnPremisesInstanceTagFilters" : {
      "type" : "array",
      "uniqueItems" : true,
      "items" : {
        "$ref" : "#/definitions/TagFilter"
      },
      "description" : "The on-premises instance tags already applied to on-premises instances that you want to include in the deployment group. CodeDeploy includes all on-premises instances identified by any of the tags you specify in this deployment group. Duplicates are not allowed. You can specify OnPremisesInstanceTagFilters or OnPremisesInstanceTagSet, but not both."
    }
  },
  "additionalProperties" : false,
  "tagging" : {
    "taggable" : true,
    "tagOnCreate" : true,
    "tagUpdatable" : true,
    "cloudFormationSystemTags" : false,
    "tagProperty" : "/properties/Tags",
    "permissions" : [ "codedeploy:TagResource", "codedeploy:UntagResource", "codedeploy:ListTagsForResource" ]
  },
  "required" : [ "ApplicationName", "ServiceRoleArn" ],
  "propertyTransform" : {
    "/properties/Deployment/Description" : "$join([\"[[]CFN-[0-9A-Z]{8}[]] \", Description])"
  },
  "createOnlyProperties" : [ "/properties/DeploymentGroupName", "/properties/ApplicationName" ],
  "primaryIdentifier" : [ "/properties/ApplicationName", "/properties/DeploymentGroupName" ],
  "handlers" : {
    "create" : {
      "permissions" : [ "codedeploy:CreateDeploymentGroup", "codedeploy:CreateDeployment", "codedeploy:GetDeployment", "codedeploy:GetDeploymentConfig", "codedeploy:GetApplicationRevision", "codedeploy:ListDeployments", "codedeploy:RegisterApplicationRevision", "codedeploy:RegisterOnPremisesInstance", "codedeploy:TagResource", "codedeploy:UntagResource", "iam:PassRole" ],
      "timeoutInMinutes" : 510
    },
    "read" : {
      "permissions" : [ "codedeploy:GetDeploymentGroup", "codedeploy:ListTagsForResource", "codedeploy:ListDeployments", "codedeploy:GetDeployment" ]
    },
    "update" : {
      "permissions" : [ "codedeploy:UpdateDeploymentGroup", "codedeploy:TagResource", "codedeploy:UntagResource", "codedeploy:GetDeployment", "codedeploy:CreateDeployment", "codedeploy:GetDeploymentConfig", "codedeploy:GetApplicationRevision", "codedeploy:StopDeployment", "codedeploy:ListDeployments", "codedeploy:RegisterApplicationRevision", "codedeploy:RegisterOnPremisesInstance", "iam:PassRole" ],
      "timeoutInMinutes" : 990
    },
    "delete" : {
      "permissions" : [ "codedeploy:DeleteDeploymentGroup", "codedeploy:GetDeploymentGroup" ]
    },
    "list" : {
      "permissions" : [ "codedeploy:ListDeploymentGroups" ],
      "handlerSchema" : {
        "properties" : {
          "ApplicationName" : {
            "type" : "string",
            "description" : "The name of the CodeDeploy application this deployment group is associated with."
          }
        },
        "required" : [ "ApplicationName" ]
      }
    }
  }
}