Package com.pulumi.aws.batch
Class JobDefinition
- java.lang.Object
-
- com.pulumi.resources.Resource
-
- com.pulumi.resources.CustomResource
-
- com.pulumi.aws.batch.JobDefinition
-
public class JobDefinition extends com.pulumi.resources.CustomResourceProvides a Batch Job Definition resource. ## Example Usage ### Job definition of type container
### Job definition of type multinodepackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.batch.JobDefinition; import com.pulumi.aws.batch.JobDefinitionArgs; import static com.pulumi.codegen.internal.Serialization.*; 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 test = new JobDefinition("test", JobDefinitionArgs.builder() .name("my_test_batch_job_definition") .type("container") .containerProperties(serializeJson( jsonObject( jsonProperty("command", jsonArray( "ls", "-la" )), jsonProperty("image", "busybox"), jsonProperty("resourceRequirements", jsonArray( jsonObject( jsonProperty("type", "VCPU"), jsonProperty("value", "0.25") ), jsonObject( jsonProperty("type", "MEMORY"), jsonProperty("value", "512") ) )), jsonProperty("volumes", jsonArray(jsonObject( jsonProperty("host", jsonObject( jsonProperty("sourcePath", "/tmp") )), jsonProperty("name", "tmp") ))), jsonProperty("environment", jsonArray(jsonObject( jsonProperty("name", "VARNAME"), jsonProperty("value", "VARVAL") ))), jsonProperty("mountPoints", jsonArray(jsonObject( jsonProperty("sourceVolume", "tmp"), jsonProperty("containerPath", "/tmp"), jsonProperty("readOnly", false) ))), jsonProperty("ulimits", jsonArray(jsonObject( jsonProperty("hardLimit", 1024), jsonProperty("name", "nofile"), jsonProperty("softLimit", 1024) ))) ))) .build()); } }
### Job Definition of type EKSpackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.batch.JobDefinition; import com.pulumi.aws.batch.JobDefinitionArgs; import static com.pulumi.codegen.internal.Serialization.*; 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 test = new JobDefinition("test", JobDefinitionArgs.builder() .name("tf_test_batch_job_definition_multinode") .type("multinode") .nodeProperties(serializeJson( jsonObject( jsonProperty("mainNode", 0), jsonProperty("nodeRangeProperties", jsonArray( jsonObject( jsonProperty("container", jsonObject( jsonProperty("command", jsonArray( "ls", "-la" )), jsonProperty("image", "busybox"), jsonProperty("memory", 128), jsonProperty("vcpus", 1) )), jsonProperty("targetNodes", "0:") ), jsonObject( jsonProperty("container", jsonObject( jsonProperty("command", jsonArray( "echo", "test" )), jsonProperty("image", "busybox"), jsonProperty("memory", 128), jsonProperty("vcpus", 1) )), jsonProperty("targetNodes", "1:") ) )), jsonProperty("numNodes", 2) ))) .build()); } }
### Fargate Platform Capabilitypackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.batch.JobDefinition; import com.pulumi.aws.batch.JobDefinitionArgs; import com.pulumi.aws.batch.inputs.JobDefinitionEksPropertiesArgs; import com.pulumi.aws.batch.inputs.JobDefinitionEksPropertiesPodPropertiesArgs; import com.pulumi.aws.batch.inputs.JobDefinitionEksPropertiesPodPropertiesMetadataArgs; import com.pulumi.aws.batch.inputs.JobDefinitionEksPropertiesPodPropertiesContainerArgs; import com.pulumi.aws.batch.inputs.JobDefinitionEksPropertiesPodPropertiesContainerResourcesArgs; 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 test = new JobDefinition("test", JobDefinitionArgs.builder() .eksProperties(JobDefinitionEksPropertiesArgs.builder() .podProperties(JobDefinitionEksPropertiesPodPropertiesArgs.builder() .metadata(JobDefinitionEksPropertiesPodPropertiesMetadataArgs.builder() .labels(Map.of("environment", "test")) .build()) .containers(JobDefinitionEksPropertiesPodPropertiesContainerArgs.builder() .resources(JobDefinitionEksPropertiesPodPropertiesContainerResourcesArgs.builder() .limits(Map.ofEntries( Map.entry("cpu", "1"), Map.entry("memory", "1024Mi") )) .build()) .image("public.ecr.aws/amazonlinux/amazonlinux:1") .commands( "sleep", "60") .build()) .hostNetwork(true) .build()) .build()) .name(" tf_test_batch_job_definition_eks") .type("container") .build()); } }
### Job definition of type container using `ecsProperties`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.batch.JobDefinition; import com.pulumi.aws.batch.JobDefinitionArgs; import static com.pulumi.codegen.internal.Serialization.*; 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 assumeRolePolicy = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder() .statements(GetPolicyDocumentStatementArgs.builder() .principals(GetPolicyDocumentStatementPrincipalArgs.builder() .type("Service") .identifiers("ecs-tasks.amazonaws.com") .build()) .actions("sts:AssumeRole") .build()) .build()); var ecsTaskExecutionRole = new Role("ecsTaskExecutionRole", RoleArgs.builder() .name("my_test_batch_exec_role") .assumeRolePolicy(assumeRolePolicy.json()) .build()); var ecsTaskExecutionRolePolicy = new RolePolicyAttachment("ecsTaskExecutionRolePolicy", RolePolicyAttachmentArgs.builder() .role(ecsTaskExecutionRole.name()) .policyArn("arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy") .build()); var test = new JobDefinition("test", JobDefinitionArgs.builder() .name("my_test_batch_job_definition") .type("container") .platformCapabilities("FARGATE") .containerProperties(ecsTaskExecutionRole.arn().applyValue(_arn -> serializeJson( jsonObject( jsonProperty("command", jsonArray( "echo", "test" )), jsonProperty("image", "busybox"), jsonProperty("jobRoleArn", "arn:aws:iam::123456789012:role/AWSBatchS3ReadOnly"), jsonProperty("fargatePlatformConfiguration", jsonObject( jsonProperty("platformVersion", "LATEST") )), jsonProperty("resourceRequirements", jsonArray( jsonObject( jsonProperty("type", "VCPU"), jsonProperty("value", "0.25") ), jsonObject( jsonProperty("type", "MEMORY"), jsonProperty("value", "512") ) )), jsonProperty("executionRoleArn", _arn) )))) .build()); } }
## Import ### Identity Schema #### Required - `arn` (String) ARN of the job definition. Using `pulumi import`, import Batch Job Definition using the `arn`. For example: ```sh $ pulumi import aws:batch/jobDefinition:JobDefinition test arn:aws:batch:us-east-1:123456789012:job-definition/sample ```package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.batch.JobDefinition; import com.pulumi.aws.batch.JobDefinitionArgs; import static com.pulumi.codegen.internal.Serialization.*; 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 test = new JobDefinition("test", JobDefinitionArgs.builder() .name("my_test_batch_job_definition") .type("container") .platformCapabilities("FARGATE") .ecsProperties(serializeJson( jsonObject( jsonProperty("taskProperties", jsonArray(jsonObject( jsonProperty("executionRoleArn", ecsTaskExecutionRole.arn()), jsonProperty("containers", jsonArray( jsonObject( jsonProperty("image", "public.ecr.aws/amazonlinux/amazonlinux:1"), jsonProperty("command", jsonArray( "sleep", "60" )), jsonProperty("dependsOn", jsonArray(jsonObject( jsonProperty("containerName", "container_b"), jsonProperty("condition", "COMPLETE") ))), jsonProperty("secrets", jsonArray(jsonObject( jsonProperty("name", "TEST"), jsonProperty("valueFrom", "DUMMY") ))), jsonProperty("environment", jsonArray(jsonObject( jsonProperty("name", "test"), jsonProperty("value", "Environment Variable") ))), jsonProperty("essential", true), jsonProperty("logConfiguration", jsonObject( jsonProperty("logDriver", "awslogs"), jsonProperty("options", jsonObject( jsonProperty("awslogs-group", "tf_test_batch_job"), jsonProperty("awslogs-region", "us-west-2"), jsonProperty("awslogs-stream-prefix", "ecs") )) )), jsonProperty("name", "container_a"), jsonProperty("privileged", false), jsonProperty("readonlyRootFilesystem", false), jsonProperty("resourceRequirements", jsonArray( jsonObject( jsonProperty("value", "1.0"), jsonProperty("type", "VCPU") ), jsonObject( jsonProperty("value", "2048"), jsonProperty("type", "MEMORY") ) )) ), jsonObject( jsonProperty("image", "public.ecr.aws/amazonlinux/amazonlinux:1"), jsonProperty("command", jsonArray( "sleep", "360" )), jsonProperty("name", "container_b"), jsonProperty("essential", false), jsonProperty("resourceRequirements", jsonArray( jsonObject( jsonProperty("value", "1.0"), jsonProperty("type", "VCPU") ), jsonObject( jsonProperty("value", "2048"), jsonProperty("type", "MEMORY") ) )) ) )) ))) ))) .build()); } }
-
-
Constructor Summary
Constructors Constructor Description JobDefinition(java.lang.String name)JobDefinition(java.lang.String name, JobDefinitionArgs args)JobDefinition(java.lang.String name, JobDefinitionArgs 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<java.lang.String>arnPrefix()com.pulumi.core.Output<java.util.Optional<java.lang.String>>containerProperties()com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>>deregisterOnNewRevision()com.pulumi.core.Output<java.util.Optional<java.lang.String>>ecsProperties()com.pulumi.core.Output<java.util.Optional<JobDefinitionEksProperties>>eksProperties()static JobDefinitionget(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, JobDefinitionState 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.util.Optional<java.lang.String>>nodeProperties()com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>>parameters()com.pulumi.core.Output<java.util.Optional<java.util.List<java.lang.String>>>platformCapabilities()com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>>propagateTags()com.pulumi.core.Output<java.lang.String>region()com.pulumi.core.Output<java.util.Optional<JobDefinitionRetryStrategy>>retryStrategy()com.pulumi.core.Output<java.lang.Integer>revision()com.pulumi.core.Output<java.util.Optional<java.lang.Integer>>schedulingPriority()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.util.Optional<JobDefinitionTimeout>>timeout()com.pulumi.core.Output<java.lang.String>type()
-
-
-
Constructor Detail
-
JobDefinition
public JobDefinition(java.lang.String name)
- Parameters:
name- The _unique_ name of the resulting resource.
-
JobDefinition
public JobDefinition(java.lang.String name, JobDefinitionArgs args)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.
-
JobDefinition
public JobDefinition(java.lang.String name, JobDefinitionArgs 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 job definition, includes revision (`:#`).
-
arnPrefix
public com.pulumi.core.Output<java.lang.String> arnPrefix()
- Returns:
- ARN without the revision number.
-
containerProperties
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> containerProperties()
- Returns:
- Valid [container properties](http://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html) provided as a single valid JSON document. This parameter is only valid if the `type` parameter is `container`.
-
deregisterOnNewRevision
public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> deregisterOnNewRevision()
- Returns:
- When updating a job definition a new revision is created. This parameter determines if the previous version is `deregistered` (`INACTIVE`) or left `ACTIVE`. Defaults to `true`.
-
ecsProperties
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> ecsProperties()
- Returns:
- Valid [ECS properties](http://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html) provided as a single valid JSON document. This parameter is only valid if the `type` parameter is `container`.
-
eksProperties
public com.pulumi.core.Output<java.util.Optional<JobDefinitionEksProperties>> eksProperties()
- Returns:
- Valid EKS properties. This parameter is only valid if the `type` parameter is `container`.
-
name
public com.pulumi.core.Output<java.lang.String> name()
- Returns:
- Name of the job definition.
-
nodeProperties
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> nodeProperties()
- Returns:
- Valid [node properties](http://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html) provided as a single valid JSON document. This parameter is required if the `type` parameter is `multinode`.
-
parameters
public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>> parameters()
- Returns:
- Parameter substitution placeholders to set in the job definition.
-
platformCapabilities
public com.pulumi.core.Output<java.util.Optional<java.util.List<java.lang.String>>> platformCapabilities()
- Returns:
- Platform capabilities required by the job definition. If no value is specified, it defaults to `EC2`. To run the job on Fargate resources, specify `FARGATE`.
-
propagateTags
public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> propagateTags()
- Returns:
- Whether to propagate the tags from the job definition to the corresponding Amazon ECS task. Default is `false`.
-
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.
-
retryStrategy
public com.pulumi.core.Output<java.util.Optional<JobDefinitionRetryStrategy>> retryStrategy()
- Returns:
- Retry strategy to use for failed jobs that are submitted with this job definition. Maximum number of `retryStrategy` is `1`. Defined below.
-
revision
public com.pulumi.core.Output<java.lang.Integer> revision()
- Returns:
- Revision of the job definition.
-
schedulingPriority
public com.pulumi.core.Output<java.util.Optional<java.lang.Integer>> schedulingPriority()
- Returns:
- Scheduling priority of the job definition. This only affects jobs in job queues with a fair share policy. Jobs with a higher scheduling priority are scheduled before jobs with a lower scheduling priority. Allowed values `0` through `9999`.
-
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.
-
timeout
public com.pulumi.core.Output<java.util.Optional<JobDefinitionTimeout>> timeout()
- Returns:
- Timeout for jobs so that if a job runs longer, AWS Batch terminates the job. Maximum number of `timeout` is `1`. Defined below.
-
type
public com.pulumi.core.Output<java.lang.String> type()
- Returns:
- Type of job definition. Must be `container` or `multinode`. The following arguments are optional:
-
get
public static JobDefinition get(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, @Nullable JobDefinitionState 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.
-
-