Class DeploymentGroup


  • public class DeploymentGroup
    extends com.pulumi.resources.CustomResource
    Provides a CodeDeploy Deployment Group for a CodeDeploy Application > **NOTE on blue/green deployments:** When using `greenFleetProvisioningOption` with the `COPY_AUTO_SCALING_GROUP` action, CodeDeploy will create a new ASG with a different name. This ASG is _not_ managed by this provider and will conflict with existing configuration and state. You may want to use a different approach to managing deployments that involve multiple ASG, such as `DISCOVER_EXISTING` with separate blue and green ASG. ## Example Usage
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.iam.IamFunctions;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs;
     import com.pulumi.aws.iam.Role;
     import com.pulumi.aws.iam.RoleArgs;
     import com.pulumi.aws.iam.RolePolicyAttachment;
     import com.pulumi.aws.iam.RolePolicyAttachmentArgs;
     import com.pulumi.aws.codedeploy.Application;
     import com.pulumi.aws.codedeploy.ApplicationArgs;
     import com.pulumi.aws.sns.Topic;
     import com.pulumi.aws.sns.TopicArgs;
     import com.pulumi.aws.codedeploy.DeploymentGroup;
     import com.pulumi.aws.codedeploy.DeploymentGroupArgs;
     import com.pulumi.aws.codedeploy.inputs.DeploymentGroupAutoRollbackConfigurationArgs;
     import com.pulumi.aws.codedeploy.inputs.DeploymentGroupAlarmConfigurationArgs;
     import com.pulumi.aws.codedeploy.inputs.DeploymentGroupEc2TagSetArgs;
     import com.pulumi.aws.codedeploy.inputs.DeploymentGroupEc2TagSetEc2TagFilterArgs;
     import com.pulumi.aws.codedeploy.inputs.DeploymentGroupTriggerConfigurationArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             final var assumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                 .statements(GetPolicyDocumentStatementArgs.builder()
                     .principals(GetPolicyDocumentStatementPrincipalArgs.builder()
                         .type("Service")
                         .identifiers("codedeploy.amazonaws.com")
                         .build())
                     .effect("Allow")
                     .actions("sts:AssumeRole")
                     .build())
                 .build());
     
             var example = new Role("example", RoleArgs.builder()
                 .name("example-role")
                 .assumeRolePolicy(assumeRole.json())
                 .build());
     
             var aWSCodeDeployRole = new RolePolicyAttachment("aWSCodeDeployRole", RolePolicyAttachmentArgs.builder()
                 .policyArn("arn:aws:iam::aws:policy/service-role/AWSCodeDeployRole")
                 .role(example.name())
                 .build());
     
             var exampleApplication = new Application("exampleApplication", ApplicationArgs.builder()
                 .name("example-app")
                 .build());
     
             var exampleTopic = new Topic("exampleTopic", TopicArgs.builder()
                 .name("example-topic")
                 .build());
     
             var exampleDeploymentGroup = new DeploymentGroup("exampleDeploymentGroup", DeploymentGroupArgs.builder()
                 .autoRollbackConfiguration(DeploymentGroupAutoRollbackConfigurationArgs.builder()
                     .enabled(true)
                     .events("DEPLOYMENT_FAILURE")
                     .build())
                 .alarmConfiguration(DeploymentGroupAlarmConfigurationArgs.builder()
                     .alarms("my-alarm-name")
                     .enabled(true)
                     .build())
                 .ec2TagSets(DeploymentGroupEc2TagSetArgs.builder()
                     .ec2TagFilters(                
                         DeploymentGroupEc2TagSetEc2TagFilterArgs.builder()
                             .key("filterkey1")
                             .type("KEY_AND_VALUE")
                             .value("filtervalue")
                             .build(),
                         DeploymentGroupEc2TagSetEc2TagFilterArgs.builder()
                             .key("filterkey2")
                             .type("KEY_AND_VALUE")
                             .value("filtervalue")
                             .build())
                     .build())
                 .triggerConfigurations(DeploymentGroupTriggerConfigurationArgs.builder()
                     .triggerEvents("DeploymentFailure")
                     .triggerName("example-trigger")
                     .triggerTargetArn(exampleTopic.arn())
                     .build())
                 .appName(exampleApplication.name())
                 .deploymentGroupName("example-group")
                 .serviceRoleArn(example.arn())
                 .outdatedInstancesStrategy("UPDATE")
                 .build());
     
         }
     }
     
     
    ### Blue Green Deployments with ECS
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.codedeploy.Application;
     import com.pulumi.aws.codedeploy.ApplicationArgs;
     import com.pulumi.aws.codedeploy.DeploymentGroup;
     import com.pulumi.aws.codedeploy.DeploymentGroupArgs;
     import com.pulumi.aws.codedeploy.inputs.DeploymentGroupAutoRollbackConfigurationArgs;
     import com.pulumi.aws.codedeploy.inputs.DeploymentGroupBlueGreenDeploymentConfigArgs;
     import com.pulumi.aws.codedeploy.inputs.DeploymentGroupBlueGreenDeploymentConfigDeploymentReadyOptionArgs;
     import com.pulumi.aws.codedeploy.inputs.DeploymentGroupBlueGreenDeploymentConfigTerminateBlueInstancesOnDeploymentSuccessArgs;
     import com.pulumi.aws.codedeploy.inputs.DeploymentGroupDeploymentStyleArgs;
     import com.pulumi.aws.codedeploy.inputs.DeploymentGroupEcsServiceArgs;
     import com.pulumi.aws.codedeploy.inputs.DeploymentGroupLoadBalancerInfoArgs;
     import com.pulumi.aws.codedeploy.inputs.DeploymentGroupLoadBalancerInfoTargetGroupPairInfoArgs;
     import com.pulumi.aws.codedeploy.inputs.DeploymentGroupLoadBalancerInfoTargetGroupPairInfoProdTrafficRouteArgs;
     import com.pulumi.aws.codedeploy.inputs.DeploymentGroupLoadBalancerInfoTargetGroupPairInfoTargetGroupArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var example = new Application("example", ApplicationArgs.builder()
                 .computePlatform("ECS")
                 .name("example")
                 .build());
     
             var exampleDeploymentGroup = new DeploymentGroup("exampleDeploymentGroup", DeploymentGroupArgs.builder()
                 .autoRollbackConfiguration(DeploymentGroupAutoRollbackConfigurationArgs.builder()
                     .enabled(true)
                     .events("DEPLOYMENT_FAILURE")
                     .build())
                 .blueGreenDeploymentConfig(DeploymentGroupBlueGreenDeploymentConfigArgs.builder()
                     .deploymentReadyOption(DeploymentGroupBlueGreenDeploymentConfigDeploymentReadyOptionArgs.builder()
                         .actionOnTimeout("CONTINUE_DEPLOYMENT")
                         .build())
                     .terminateBlueInstancesOnDeploymentSuccess(DeploymentGroupBlueGreenDeploymentConfigTerminateBlueInstancesOnDeploymentSuccessArgs.builder()
                         .action("TERMINATE")
                         .terminationWaitTimeInMinutes(5)
                         .build())
                     .build())
                 .deploymentStyle(DeploymentGroupDeploymentStyleArgs.builder()
                     .deploymentOption("WITH_TRAFFIC_CONTROL")
                     .deploymentType("BLUE_GREEN")
                     .build())
                 .ecsService(DeploymentGroupEcsServiceArgs.builder()
                     .clusterName(exampleAwsEcsCluster.name())
                     .serviceName(exampleAwsEcsService.name())
                     .build())
                 .loadBalancerInfo(DeploymentGroupLoadBalancerInfoArgs.builder()
                     .targetGroupPairInfo(DeploymentGroupLoadBalancerInfoTargetGroupPairInfoArgs.builder()
                         .prodTrafficRoute(DeploymentGroupLoadBalancerInfoTargetGroupPairInfoProdTrafficRouteArgs.builder()
                             .listenerArns(exampleAwsLbListener.arn())
                             .build())
                         .targetGroups(                    
                             DeploymentGroupLoadBalancerInfoTargetGroupPairInfoTargetGroupArgs.builder()
                                 .name(blue.name())
                                 .build(),
                             DeploymentGroupLoadBalancerInfoTargetGroupPairInfoTargetGroupArgs.builder()
                                 .name(green.name())
                                 .build())
                         .build())
                     .build())
                 .appName(example.name())
                 .deploymentConfigName("CodeDeployDefault.ECSAllAtOnce")
                 .deploymentGroupName("example")
                 .serviceRoleArn(exampleAwsIamRole.arn())
                 .build());
     
         }
     }
     
     
    ### Blue Green Deployments with Servers and Classic ELB
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.codedeploy.Application;
     import com.pulumi.aws.codedeploy.ApplicationArgs;
     import com.pulumi.aws.codedeploy.DeploymentGroup;
     import com.pulumi.aws.codedeploy.DeploymentGroupArgs;
     import com.pulumi.aws.codedeploy.inputs.DeploymentGroupDeploymentStyleArgs;
     import com.pulumi.aws.codedeploy.inputs.DeploymentGroupLoadBalancerInfoArgs;
     import com.pulumi.aws.codedeploy.inputs.DeploymentGroupLoadBalancerInfoElbInfoArgs;
     import com.pulumi.aws.codedeploy.inputs.DeploymentGroupBlueGreenDeploymentConfigArgs;
     import com.pulumi.aws.codedeploy.inputs.DeploymentGroupBlueGreenDeploymentConfigDeploymentReadyOptionArgs;
     import com.pulumi.aws.codedeploy.inputs.DeploymentGroupBlueGreenDeploymentConfigGreenFleetProvisioningOptionArgs;
     import com.pulumi.aws.codedeploy.inputs.DeploymentGroupBlueGreenDeploymentConfigTerminateBlueInstancesOnDeploymentSuccessArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var example = new Application("example", ApplicationArgs.builder()
                 .name("example-app")
                 .build());
     
             var exampleDeploymentGroup = new DeploymentGroup("exampleDeploymentGroup", DeploymentGroupArgs.builder()
                 .deploymentStyle(DeploymentGroupDeploymentStyleArgs.builder()
                     .deploymentOption("WITH_TRAFFIC_CONTROL")
                     .deploymentType("BLUE_GREEN")
                     .build())
                 .loadBalancerInfo(DeploymentGroupLoadBalancerInfoArgs.builder()
                     .elbInfos(DeploymentGroupLoadBalancerInfoElbInfoArgs.builder()
                         .name(exampleAwsElb.name())
                         .build())
                     .build())
                 .blueGreenDeploymentConfig(DeploymentGroupBlueGreenDeploymentConfigArgs.builder()
                     .deploymentReadyOption(DeploymentGroupBlueGreenDeploymentConfigDeploymentReadyOptionArgs.builder()
                         .actionOnTimeout("STOP_DEPLOYMENT")
                         .waitTimeInMinutes(60)
                         .build())
                     .greenFleetProvisioningOption(DeploymentGroupBlueGreenDeploymentConfigGreenFleetProvisioningOptionArgs.builder()
                         .action("DISCOVER_EXISTING")
                         .build())
                     .terminateBlueInstancesOnDeploymentSuccess(DeploymentGroupBlueGreenDeploymentConfigTerminateBlueInstancesOnDeploymentSuccessArgs.builder()
                         .action("KEEP_ALIVE")
                         .build())
                     .build())
                 .appName(example.name())
                 .deploymentGroupName("example-group")
                 .serviceRoleArn(exampleAwsIamRole.arn())
                 .build());
     
         }
     }
     
     
    ## Import Using `pulumi import`, import CodeDeploy Deployment Groups using `appName`, a colon, and `deploymentGroupName`. For example: ```sh $ pulumi import aws:codedeploy/deploymentGroup:DeploymentGroup example my-application:my-deployment-group ```
    • Constructor Detail

      • DeploymentGroup

        public DeploymentGroup​(java.lang.String name)
        Parameters:
        name - The _unique_ name of the resulting resource.
      • DeploymentGroup

        public DeploymentGroup​(java.lang.String name,
                               DeploymentGroupArgs args)
        Parameters:
        name - The _unique_ name of the resulting resource.
        args - The arguments to use to populate this resource's properties.
      • DeploymentGroup

        public DeploymentGroup​(java.lang.String name,
                               DeploymentGroupArgs args,
                               @Nullable
                               com.pulumi.resources.CustomResourceOptions options)
        Parameters:
        name - The _unique_ name of the resulting resource.
        args - The arguments to use to populate this resource's properties.
        options - A bag of options that control this resource's behavior.
    • Method Detail

      • alarmConfiguration

        public com.pulumi.core.Output<java.util.Optional<DeploymentGroupAlarmConfiguration>> alarmConfiguration()
        Returns:
        Configuration block of alarms associated with the deployment group (documented below).
      • appName

        public com.pulumi.core.Output<java.lang.String> appName()
        Returns:
        The name of the application.
      • arn

        public com.pulumi.core.Output<java.lang.String> arn()
        Returns:
        The ARN of the CodeDeploy deployment group.
      • autoRollbackConfiguration

        public com.pulumi.core.Output<java.util.Optional<DeploymentGroupAutoRollbackConfiguration>> autoRollbackConfiguration()
        Returns:
        Configuration block of the automatic rollback configuration associated with the deployment group (documented below).
      • autoscalingGroups

        public com.pulumi.core.Output<java.util.Optional<java.util.List<java.lang.String>>> autoscalingGroups()
        Returns:
        Auto Scaling groups associated with the deployment group.
      • blueGreenDeploymentConfig

        public com.pulumi.core.Output<DeploymentGroupBlueGreenDeploymentConfig> blueGreenDeploymentConfig()
        Returns:
        Configuration block of the blue/green deployment options for a deployment group (documented below).
      • computePlatform

        public com.pulumi.core.Output<java.lang.String> computePlatform()
        Returns:
        The destination platform type for the deployment.
      • deploymentConfigName

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> deploymentConfigName()
        Returns:
        The name of the group's deployment config. The default is "CodeDeployDefault.OneAtATime".
      • deploymentGroupId

        public com.pulumi.core.Output<java.lang.String> deploymentGroupId()
        Returns:
        The ID of the CodeDeploy deployment group.
      • deploymentGroupName

        public com.pulumi.core.Output<java.lang.String> deploymentGroupName()
        Returns:
        The name of the deployment group.
      • deploymentStyle

        public com.pulumi.core.Output<java.util.Optional<DeploymentGroupDeploymentStyle>> deploymentStyle()
        Returns:
        Configuration block of the type of deployment, either in-place or blue/green, you want to run and whether to route deployment traffic behind a load balancer (documented below).
      • ec2TagFilters

        public com.pulumi.core.Output<java.util.Optional<java.util.List<DeploymentGroupEc2TagFilter>>> ec2TagFilters()
        Returns:
        Tag filters associated with the deployment group. See the AWS docs for details.
      • ec2TagSets

        public com.pulumi.core.Output<java.util.Optional<java.util.List<DeploymentGroupEc2TagSet>>> ec2TagSets()
        Returns:
        Configuration block(s) of Tag filters associated with the deployment group, which are also referred to as tag groups (documented below). See the AWS docs for details.
      • ecsService

        public com.pulumi.core.Output<java.util.Optional<DeploymentGroupEcsService>> ecsService()
        Returns:
        Configuration block(s) of the ECS services for a deployment group (documented below).
      • loadBalancerInfo

        public com.pulumi.core.Output<java.util.Optional<DeploymentGroupLoadBalancerInfo>> loadBalancerInfo()
        Returns:
        Single configuration block of the load balancer to use in a blue/green deployment (documented below).
      • onPremisesInstanceTagFilters

        public com.pulumi.core.Output<java.util.Optional<java.util.List<DeploymentGroupOnPremisesInstanceTagFilter>>> onPremisesInstanceTagFilters()
        Returns:
        On premise tag filters associated with the group. See the AWS docs for details.
      • outdatedInstancesStrategy

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> outdatedInstancesStrategy()
        Returns:
        Configuration block of Indicates what happens when new Amazon EC2 instances are launched mid-deployment and do not receive the deployed application revision. Valid values are `UPDATE` and `IGNORE`. Defaults to `UPDATE`.
      • region

        public com.pulumi.core.Output<java.lang.String> region()
        Returns:
        Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
      • serviceRoleArn

        public com.pulumi.core.Output<java.lang.String> serviceRoleArn()
        Returns:
        The service role ARN that allows deployments.
      • tags

        public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,​java.lang.String>>> tags()
        Returns:
        Key-value map of resource tags. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
      • tagsAll

        public com.pulumi.core.Output<java.util.Map<java.lang.String,​java.lang.String>> tagsAll()
        Returns:
        A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
      • terminationHookEnabled

        public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> terminationHookEnabled()
        Returns:
        Indicates whether the deployment group was configured to have CodeDeploy install a termination hook into an Auto Scaling group.
      • triggerConfigurations

        public com.pulumi.core.Output<java.util.Optional<java.util.List<DeploymentGroupTriggerConfiguration>>> triggerConfigurations()
        Returns:
        Configuration block(s) of the triggers for the deployment group (documented below).
      • get

        public static DeploymentGroup get​(java.lang.String name,
                                          com.pulumi.core.Output<java.lang.String> id,
                                          @Nullable
                                          DeploymentGroupState state,
                                          @Nullable
                                          com.pulumi.resources.CustomResourceOptions options)
        Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.
        Parameters:
        name - The _unique_ name of the resulting resource.
        id - The _unique_ provider ID of the resource to lookup.
        state -
        options - Optional settings to control the behavior of the CustomResource.