Class ComputeEnvironment


  • public class ComputeEnvironment
    extends com.pulumi.resources.CustomResource
    Creates a AWS Batch compute environment. Compute environments contain the Amazon ECS container instances that are used to run containerized batch jobs. For information about AWS Batch, see [What is AWS Batch?](http://docs.aws.amazon.com/batch/latest/userguide/what-is-batch.html). For information about compute environment, see [Compute Environments](http://docs.aws.amazon.com/batch/latest/userguide/compute_environments.html). > **Note:** To prevent a race condition during environment deletion, make sure to set `dependsOn` to the related `aws.iam.RolePolicyAttachment`; otherwise, the policy may be destroyed too soon and the compute environment will then get stuck in the `DELETING` state, see [Troubleshooting AWS Batch](http://docs.aws.amazon.com/batch/latest/userguide/troubleshooting.html). ## Example Usage ### EC2 Type
     
     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.iam.InstanceProfile;
     import com.pulumi.aws.iam.InstanceProfileArgs;
     import com.pulumi.aws.ec2.SecurityGroup;
     import com.pulumi.aws.ec2.SecurityGroupArgs;
     import com.pulumi.aws.ec2.inputs.SecurityGroupEgressArgs;
     import com.pulumi.aws.ec2.Vpc;
     import com.pulumi.aws.ec2.VpcArgs;
     import com.pulumi.aws.ec2.Subnet;
     import com.pulumi.aws.ec2.SubnetArgs;
     import com.pulumi.aws.ec2.PlacementGroup;
     import com.pulumi.aws.ec2.PlacementGroupArgs;
     import com.pulumi.aws.batch.ComputeEnvironment;
     import com.pulumi.aws.batch.ComputeEnvironmentArgs;
     import com.pulumi.aws.batch.inputs.ComputeEnvironmentComputeResourcesArgs;
     import com.pulumi.resources.CustomResourceOptions;
     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 ec2AssumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                 .statements(GetPolicyDocumentStatementArgs.builder()
                     .principals(GetPolicyDocumentStatementPrincipalArgs.builder()
                         .type("Service")
                         .identifiers("ec2.amazonaws.com")
                         .build())
                     .effect("Allow")
                     .actions("sts:AssumeRole")
                     .build())
                 .build());
     
             var ecsInstanceRole = new Role("ecsInstanceRole", RoleArgs.builder()
                 .name("ecs_instance_role")
                 .assumeRolePolicy(ec2AssumeRole.json())
                 .build());
     
             var ecsInstanceRoleRolePolicyAttachment = new RolePolicyAttachment("ecsInstanceRoleRolePolicyAttachment", RolePolicyAttachmentArgs.builder()
                 .role(ecsInstanceRole.name())
                 .policyArn("arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role")
                 .build());
     
             var ecsInstanceRoleInstanceProfile = new InstanceProfile("ecsInstanceRoleInstanceProfile", InstanceProfileArgs.builder()
                 .name("ecs_instance_role")
                 .role(ecsInstanceRole.name())
                 .build());
     
             final var batchAssumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                 .statements(GetPolicyDocumentStatementArgs.builder()
                     .principals(GetPolicyDocumentStatementPrincipalArgs.builder()
                         .type("Service")
                         .identifiers("batch.amazonaws.com")
                         .build())
                     .effect("Allow")
                     .actions("sts:AssumeRole")
                     .build())
                 .build());
     
             var awsBatchServiceRole = new Role("awsBatchServiceRole", RoleArgs.builder()
                 .name("aws_batch_service_role")
                 .assumeRolePolicy(batchAssumeRole.json())
                 .build());
     
             var awsBatchServiceRoleRolePolicyAttachment = new RolePolicyAttachment("awsBatchServiceRoleRolePolicyAttachment", RolePolicyAttachmentArgs.builder()
                 .role(awsBatchServiceRole.name())
                 .policyArn("arn:aws:iam::aws:policy/service-role/AWSBatchServiceRole")
                 .build());
     
             var sample = new SecurityGroup("sample", SecurityGroupArgs.builder()
                 .egress(SecurityGroupEgressArgs.builder()
                     .fromPort(0)
                     .toPort(0)
                     .protocol("-1")
                     .cidrBlocks("0.0.0.0/0")
                     .build())
                 .name("aws_batch_compute_environment_security_group")
                 .build());
     
             var sampleVpc = new Vpc("sampleVpc", VpcArgs.builder()
                 .cidrBlock("10.1.0.0/16")
                 .build());
     
             var sampleSubnet = new Subnet("sampleSubnet", SubnetArgs.builder()
                 .vpcId(sampleVpc.id())
                 .cidrBlock("10.1.1.0/24")
                 .build());
     
             var samplePlacementGroup = new PlacementGroup("samplePlacementGroup", PlacementGroupArgs.builder()
                 .name("sample")
                 .strategy("cluster")
                 .build());
     
             var sampleComputeEnvironment = new ComputeEnvironment("sampleComputeEnvironment", ComputeEnvironmentArgs.builder()
                 .computeResources(ComputeEnvironmentComputeResourcesArgs.builder()
                     .instanceRole(ecsInstanceRoleInstanceProfile.arn())
                     .instanceTypes("c4.large")
                     .maxVcpus(16)
                     .minVcpus(0)
                     .placementGroup(samplePlacementGroup.name())
                     .securityGroupIds(sample.id())
                     .subnets(sampleSubnet.id())
                     .type("EC2")
                     .build())
                 .name("sample")
                 .serviceRole(awsBatchServiceRole.arn())
                 .type("MANAGED")
                 .build(), CustomResourceOptions.builder()
                     .dependsOn(awsBatchServiceRoleRolePolicyAttachment)
                     .build());
     
         }
     }
     
     
    ### Fargate Type
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.batch.ComputeEnvironment;
     import com.pulumi.aws.batch.ComputeEnvironmentArgs;
     import com.pulumi.aws.batch.inputs.ComputeEnvironmentComputeResourcesArgs;
     import com.pulumi.resources.CustomResourceOptions;
     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 sample = new ComputeEnvironment("sample", ComputeEnvironmentArgs.builder()
                 .computeResources(ComputeEnvironmentComputeResourcesArgs.builder()
                     .maxVcpus(16)
                     .securityGroupIds(sampleAwsSecurityGroup.id())
                     .subnets(sampleAwsSubnet.id())
                     .type("FARGATE")
                     .build())
                 .name("sample")
                 .serviceRole(awsBatchServiceRoleAwsIamRole.arn())
                 .type("MANAGED")
                 .build(), CustomResourceOptions.builder()
                     .dependsOn(awsBatchServiceRole)
                     .build());
     
         }
     }
     
     
    ### Setting Update Policy
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.batch.ComputeEnvironment;
     import com.pulumi.aws.batch.ComputeEnvironmentArgs;
     import com.pulumi.aws.batch.inputs.ComputeEnvironmentComputeResourcesArgs;
     import com.pulumi.aws.batch.inputs.ComputeEnvironmentUpdatePolicyArgs;
     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 sample = new ComputeEnvironment("sample", ComputeEnvironmentArgs.builder()
                 .computeResources(ComputeEnvironmentComputeResourcesArgs.builder()
                     .allocationStrategy("BEST_FIT_PROGRESSIVE")
                     .instanceRole(ecsInstance.arn())
                     .instanceTypes("optimal")
                     .maxVcpus(4)
                     .minVcpus(0)
                     .securityGroupIds(sampleAwsSecurityGroup.id())
                     .subnets(sampleAwsSubnet.id())
                     .type("EC2")
                     .build())
                 .updatePolicy(ComputeEnvironmentUpdatePolicyArgs.builder()
                     .jobExecutionTimeoutMinutes(30)
                     .terminateJobsOnUpdate(false)
                     .build())
                 .name("sample")
                 .type("MANAGED")
                 .build());
     
         }
     }
     
     
    ## Import ### Identity Schema #### Required - `arn` (String) ARN of the compute environment. Using `pulumi import`, import AWS Batch compute using the `name`. For example: ```sh $ pulumi import aws:batch/computeEnvironment:ComputeEnvironment sample sample ```
    • Nested Class Summary

      • Nested classes/interfaces inherited from class com.pulumi.resources.CustomResource

        com.pulumi.resources.CustomResource.CustomResourceInternal
      • Nested classes/interfaces inherited from class com.pulumi.resources.Resource

        com.pulumi.resources.Resource.LazyField<T extends java.lang.Object>, com.pulumi.resources.Resource.LazyFields, com.pulumi.resources.Resource.ResourceInternal
    • Field Summary

      • Fields inherited from class com.pulumi.resources.Resource

        childResources, remote
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      com.pulumi.core.Output<java.lang.String> arn()  
      com.pulumi.core.Output<ComputeEnvironmentComputeResources> computeResources()  
      com.pulumi.core.Output<java.lang.String> ecsClusterArn()  
      com.pulumi.core.Output<java.util.Optional<ComputeEnvironmentEksConfiguration>> eksConfiguration()  
      static ComputeEnvironment get​(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, ComputeEnvironmentState state, 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.
      com.pulumi.core.Output<java.lang.String> name()  
      com.pulumi.core.Output<java.lang.String> namePrefix()  
      com.pulumi.core.Output<java.lang.String> region()  
      com.pulumi.core.Output<java.lang.String> serviceRole()  
      com.pulumi.core.Output<java.util.Optional<java.lang.String>> state()  
      com.pulumi.core.Output<java.lang.String> status()  
      com.pulumi.core.Output<java.lang.String> statusReason()  
      com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,​java.lang.String>>> tags()  
      com.pulumi.core.Output<java.util.Map<java.lang.String,​java.lang.String>> tagsAll()  
      com.pulumi.core.Output<java.lang.String> type()  
      com.pulumi.core.Output<ComputeEnvironmentUpdatePolicy> updatePolicy()  
      • Methods inherited from class com.pulumi.resources.CustomResource

        getId, id, idFuture
      • Methods inherited from class com.pulumi.resources.Resource

        getChildResources, getResourceName, getResourceType, getUrn, pulumiChildResources, pulumiResourceName, pulumiResourceType, urn
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ComputeEnvironment

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

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

        public ComputeEnvironment​(java.lang.String name,
                                  ComputeEnvironmentArgs 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

      • arn

        public com.pulumi.core.Output<java.lang.String> arn()
        Returns:
        ARN of the compute environment.
      • computeResources

        public com.pulumi.core.Output<ComputeEnvironmentComputeResources> computeResources()
        Returns:
        Details of the compute resources managed by the compute environment. This parameter is required for managed compute environments. See details below.
      • ecsClusterArn

        public com.pulumi.core.Output<java.lang.String> ecsClusterArn()
        Returns:
        ARN of the underlying Amazon ECS cluster used by the compute environment.
      • eksConfiguration

        public com.pulumi.core.Output<java.util.Optional<ComputeEnvironmentEksConfiguration>> eksConfiguration()
        Returns:
        Details for the Amazon EKS cluster that supports the compute environment. See details below.
      • name

        public com.pulumi.core.Output<java.lang.String> name()
        Returns:
        Name for your compute environment. Up to 128 letters (uppercase and lowercase), numbers, and underscores are allowed. If omitted, the provider will assign a random, unique name.
      • namePrefix

        public com.pulumi.core.Output<java.lang.String> namePrefix()
        Returns:
        Creates a unique compute environment name beginning with the specified prefix. Conflicts with `name`.
      • 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.
      • serviceRole

        public com.pulumi.core.Output<java.lang.String> serviceRole()
        Returns:
        Full ARN of the IAM role that allows AWS Batch to make calls to other AWS services on your behalf.
      • state

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> state()
        Returns:
        State of the compute environment. If the state is `ENABLED`, then the compute environment accepts jobs from a queue and can scale out automatically based on queues. Valid items are `ENABLED` or `DISABLED`. Defaults to `ENABLED`.
      • status

        public com.pulumi.core.Output<java.lang.String> status()
        Returns:
        Current status of the compute environment (for example, CREATING or VALID).
      • statusReason

        public com.pulumi.core.Output<java.lang.String> statusReason()
        Returns:
        Short, human-readable string to provide additional details about the current status of the compute environment.
      • 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:
        Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
      • type

        public com.pulumi.core.Output<java.lang.String> type()
        Returns:
        Type of the compute environment. Valid items are `MANAGED` or `UNMANAGED`.
      • updatePolicy

        public com.pulumi.core.Output<ComputeEnvironmentUpdatePolicy> updatePolicy()
        Returns:
        Infrastructure update policy for the compute environment. See details below.
      • get

        public static ComputeEnvironment get​(java.lang.String name,
                                             com.pulumi.core.Output<java.lang.String> id,
                                             @Nullable
                                             ComputeEnvironmentState 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.