Package com.pulumi.aws.batch
Class ComputeEnvironment
- java.lang.Object
-
- com.pulumi.resources.Resource
-
- com.pulumi.resources.CustomResource
-
- com.pulumi.aws.batch.ComputeEnvironment
-
public class ComputeEnvironment extends com.pulumi.resources.CustomResourceCreates 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
### Fargate Typepackage 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()); } }
### Setting Update Policypackage 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()); } }
## 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 ```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()); } }
-
-
Constructor Summary
Constructors Constructor Description ComputeEnvironment(java.lang.String name)ComputeEnvironment(java.lang.String name, ComputeEnvironmentArgs args)ComputeEnvironment(java.lang.String name, ComputeEnvironmentArgs args, com.pulumi.resources.CustomResourceOptions options)
-
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 ComputeEnvironmentget(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()
-
-
-
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.
-
-