Package com.pulumi.aws.ecs
Class TaskDefinition
- java.lang.Object
-
- com.pulumi.resources.Resource
-
- com.pulumi.resources.CustomResource
-
- com.pulumi.aws.ecs.TaskDefinition
-
public class TaskDefinition extends com.pulumi.resources.CustomResource
Manages a revision of an ECS task definition to be used in `aws.ecs.Service`. ## Example Usage ### Basic Example <!--Start PulumiCodeChooser --> ```java package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.ecs.TaskDefinition; import com.pulumi.aws.ecs.TaskDefinitionArgs; import com.pulumi.aws.ecs.inputs.TaskDefinitionVolumeArgs; import com.pulumi.aws.ecs.inputs.TaskDefinitionPlacementConstraintArgs; import static com.pulumi.codegen.internal.Serialization.*; import java.util.List; import java.util.ArrayList; 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 service = new TaskDefinition("service", TaskDefinitionArgs.builder() .family("service") .containerDefinitions(serializeJson( jsonArray( jsonObject( jsonProperty("name", "first"), jsonProperty("image", "service-first"), jsonProperty("cpu", 10), jsonProperty("memory", 512), jsonProperty("essential", true), jsonProperty("portMappings", jsonArray(jsonObject( jsonProperty("containerPort", 80), jsonProperty("hostPort", 80) ))) ), jsonObject( jsonProperty("name", "second"), jsonProperty("image", "service-second"), jsonProperty("cpu", 10), jsonProperty("memory", 256), jsonProperty("essential", true), jsonProperty("portMappings", jsonArray(jsonObject( jsonProperty("containerPort", 443), jsonProperty("hostPort", 443) ))) ) ))) .volumes(TaskDefinitionVolumeArgs.builder() .name("service-storage") .hostPath("/ecs/service-storage") .build()) .placementConstraints(TaskDefinitionPlacementConstraintArgs.builder() .type("memberOf") .expression("attribute:ecs.availability-zone in [us-west-2a, us-west-2b]") .build()) .build()); } } ``` <!--End PulumiCodeChooser --> ### With AppMesh Proxy <!--Start PulumiCodeChooser --> ```java package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.ecs.TaskDefinition; import com.pulumi.aws.ecs.TaskDefinitionArgs; import com.pulumi.aws.ecs.inputs.TaskDefinitionProxyConfigurationArgs; import java.util.List; import java.util.ArrayList; 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 service = new TaskDefinition("service", TaskDefinitionArgs.builder() .family("service") .containerDefinitions(StdFunctions.file(FileArgs.builder() .input("task-definitions/service.json") .build()).result()) .proxyConfiguration(TaskDefinitionProxyConfigurationArgs.builder() .type("APPMESH") .containerName("applicationContainerName") .properties(Map.ofEntries( Map.entry("AppPorts", "8080"), Map.entry("EgressIgnoredIPs", "169.254.170.2,169.254.169.254"), Map.entry("IgnoredUID", "1337"), Map.entry("ProxyEgressPort", 15001), Map.entry("ProxyIngressPort", 15000) )) .build()) .build()); } } ``` <!--End PulumiCodeChooser --> ### Example Using `docker_volume_configuration` <!--Start PulumiCodeChooser --> ```java package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.ecs.TaskDefinition; import com.pulumi.aws.ecs.TaskDefinitionArgs; import com.pulumi.aws.ecs.inputs.TaskDefinitionVolumeArgs; import com.pulumi.aws.ecs.inputs.TaskDefinitionVolumeDockerVolumeConfigurationArgs; import java.util.List; import java.util.ArrayList; 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 service = new TaskDefinition("service", TaskDefinitionArgs.builder() .family("service") .containerDefinitions(StdFunctions.file(FileArgs.builder() .input("task-definitions/service.json") .build()).result()) .volumes(TaskDefinitionVolumeArgs.builder() .name("service-storage") .dockerVolumeConfiguration(TaskDefinitionVolumeDockerVolumeConfigurationArgs.builder() .scope("shared") .autoprovision(true) .driver("local") .driverOpts(Map.ofEntries( Map.entry("type", "nfs"), Map.entry("device", String.format("%s:/", fs.dnsName())), Map.entry("o", String.format("addr=%s,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport", fs.dnsName())) )) .build()) .build()) .build()); } } ``` <!--End PulumiCodeChooser --> ### Example Using `efs_volume_configuration` <!--Start PulumiCodeChooser --> ```java package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.ecs.TaskDefinition; import com.pulumi.aws.ecs.TaskDefinitionArgs; import com.pulumi.aws.ecs.inputs.TaskDefinitionVolumeArgs; import com.pulumi.aws.ecs.inputs.TaskDefinitionVolumeEfsVolumeConfigurationArgs; import com.pulumi.aws.ecs.inputs.TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs; import java.util.List; import java.util.ArrayList; 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 service = new TaskDefinition("service", TaskDefinitionArgs.builder() .family("service") .containerDefinitions(StdFunctions.file(FileArgs.builder() .input("task-definitions/service.json") .build()).result()) .volumes(TaskDefinitionVolumeArgs.builder() .name("service-storage") .efsVolumeConfiguration(TaskDefinitionVolumeEfsVolumeConfigurationArgs.builder() .fileSystemId(fs.id()) .rootDirectory("/opt/data") .transitEncryption("ENABLED") .transitEncryptionPort(2999) .authorizationConfig(TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs.builder() .accessPointId(test.id()) .iam("ENABLED") .build()) .build()) .build()) .build()); } } ``` <!--End PulumiCodeChooser --> ### Example Using `fsx_windows_file_server_volume_configuration` <!--Start PulumiCodeChooser --> ```java package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.secretsmanager.SecretVersion; import com.pulumi.aws.secretsmanager.SecretVersionArgs; import com.pulumi.aws.ecs.TaskDefinition; import com.pulumi.aws.ecs.TaskDefinitionArgs; import com.pulumi.aws.ecs.inputs.TaskDefinitionVolumeArgs; import com.pulumi.aws.ecs.inputs.TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationArgs; import com.pulumi.aws.ecs.inputs.TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigArgs; import static com.pulumi.codegen.internal.Serialization.*; import java.util.List; import java.util.ArrayList; 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 SecretVersion("test", SecretVersionArgs.builder() .secretId(testAwsSecretsmanagerSecret.id()) .secretString(serializeJson( jsonObject( jsonProperty("username", "admin"), jsonProperty("password", testAwsDirectoryServiceDirectory.password()) ))) .build()); var service = new TaskDefinition("service", TaskDefinitionArgs.builder() .family("service") .containerDefinitions(StdFunctions.file(FileArgs.builder() .input("task-definitions/service.json") .build()).result()) .volumes(TaskDefinitionVolumeArgs.builder() .name("service-storage") .fsxWindowsFileServerVolumeConfiguration(TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationArgs.builder() .fileSystemId(testAwsFsxWindowsFileSystem.id()) .rootDirectory("\\data") .authorizationConfig(TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigArgs.builder() .credentialsParameter(test.arn()) .domain(testAwsDirectoryServiceDirectory.name()) .build()) .build()) .build()) .build()); } } ``` <!--End PulumiCodeChooser --> ### Example Using `container_definitions` and `inference_accelerator` <!--Start PulumiCodeChooser --> ```java package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.ecs.TaskDefinition; import com.pulumi.aws.ecs.TaskDefinitionArgs; import com.pulumi.aws.ecs.inputs.TaskDefinitionInferenceAcceleratorArgs; import java.util.List; import java.util.ArrayList; 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 TaskDefinition("test", TaskDefinitionArgs.builder() .family("test") .containerDefinitions(""" [ { "cpu": 10, "command": ["sleep", "10"], "entryPoint": ["/"], "environment": [ {"name": "VARNAME", "value": "VARVAL"} ], "essential": true, "image": "jenkins", "memory": 128, "name": "jenkins", "portMappings": [ { "containerPort": 80, "hostPort": 8080 } ], "resourceRequirements":[ { "type":"InferenceAccelerator", "value":"device_1" } ] } ] """) .inferenceAccelerators(TaskDefinitionInferenceAcceleratorArgs.builder() .deviceName("device_1") .deviceType("eia1.medium") .build()) .build()); } } ``` <!--End PulumiCodeChooser --> ### Example Using `runtime_platform` and `fargate` <!--Start PulumiCodeChooser --> ```java package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.ecs.TaskDefinition; import com.pulumi.aws.ecs.TaskDefinitionArgs; import com.pulumi.aws.ecs.inputs.TaskDefinitionRuntimePlatformArgs; import java.util.List; import java.util.ArrayList; 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 TaskDefinition("test", TaskDefinitionArgs.builder() .family("test") .requiresCompatibilities("FARGATE") .networkMode("awsvpc") .cpu(1024) .memory(2048) .containerDefinitions(""" [ { "name": "iis", "image": "mcr.microsoft.com/windows/servercore/iis", "cpu": 1024, "memory": 2048, "essential": true } ] """) .runtimePlatform(TaskDefinitionRuntimePlatformArgs.builder() .operatingSystemFamily("WINDOWS_SERVER_2019_CORE") .cpuArchitecture("X86_64") .build()) .build()); } } ``` <!--End PulumiCodeChooser --> ## Import Using `pulumi import`, import ECS Task Definitions using their ARNs. For example: ```sh $ pulumi import aws:ecs/taskDefinition:TaskDefinition example arn:aws:ecs:us-east-1:012345678910:task-definition/mytaskfamily:123 ```
-
-
Constructor Summary
Constructors Constructor Description TaskDefinition(java.lang.String name)
TaskDefinition(java.lang.String name, TaskDefinitionArgs args)
TaskDefinition(java.lang.String name, TaskDefinitionArgs 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>
arnWithoutRevision()
com.pulumi.core.Output<java.lang.String>
containerDefinitions()
com.pulumi.core.Output<java.util.Optional<java.lang.String>>
cpu()
com.pulumi.core.Output<java.util.Optional<TaskDefinitionEphemeralStorage>>
ephemeralStorage()
com.pulumi.core.Output<java.util.Optional<java.lang.String>>
executionRoleArn()
com.pulumi.core.Output<java.lang.String>
family()
static TaskDefinition
get(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, TaskDefinitionState 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.util.Optional<java.util.List<TaskDefinitionInferenceAccelerator>>>
inferenceAccelerators()
com.pulumi.core.Output<java.util.Optional<java.lang.String>>
ipcMode()
com.pulumi.core.Output<java.util.Optional<java.lang.String>>
memory()
com.pulumi.core.Output<java.lang.String>
networkMode()
com.pulumi.core.Output<java.util.Optional<java.lang.String>>
pidMode()
com.pulumi.core.Output<java.util.Optional<java.util.List<TaskDefinitionPlacementConstraint>>>
placementConstraints()
com.pulumi.core.Output<java.util.Optional<TaskDefinitionProxyConfiguration>>
proxyConfiguration()
com.pulumi.core.Output<java.util.Optional<java.util.List<java.lang.String>>>
requiresCompatibilities()
com.pulumi.core.Output<java.lang.Integer>
revision()
com.pulumi.core.Output<java.util.Optional<TaskDefinitionRuntimePlatform>>
runtimePlatform()
com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>>
skipDestroy()
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<java.lang.String>>
taskRoleArn()
com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>>
trackLatest()
com.pulumi.core.Output<java.util.Optional<java.util.List<TaskDefinitionVolume>>>
volumes()
-
-
-
Constructor Detail
-
TaskDefinition
public TaskDefinition(java.lang.String name)
- Parameters:
name
- The _unique_ name of the resulting resource.
-
TaskDefinition
public TaskDefinition(java.lang.String name, TaskDefinitionArgs args)
- Parameters:
name
- The _unique_ name of the resulting resource.args
- The arguments to use to populate this resource's properties.
-
TaskDefinition
public TaskDefinition(java.lang.String name, TaskDefinitionArgs 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:
- Full ARN of the Task Definition (including both `family` and `revision`).
-
arnWithoutRevision
public com.pulumi.core.Output<java.lang.String> arnWithoutRevision()
- Returns:
- ARN of the Task Definition with the trailing `revision` removed. This may be useful for situations where the latest task definition is always desired. If a revision isn't specified, the latest ACTIVE revision is used. See the [AWS documentation](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_StartTask.html#ECS-StartTask-request-taskDefinition) for details.
-
containerDefinitions
public com.pulumi.core.Output<java.lang.String> containerDefinitions()
- Returns:
- A list of valid [container definitions](http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDefinition.html) provided as a single valid JSON document. Please note that you should only provide values that are part of the container definition document. For a detailed description of what parameters are available, see the [Task Definition Parameters](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html) section from the official [Developer Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide).
-
cpu
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> cpu()
- Returns:
- Number of cpu units used by the task. If the `requires_compatibilities` is `FARGATE` this field is required.
-
ephemeralStorage
public com.pulumi.core.Output<java.util.Optional<TaskDefinitionEphemeralStorage>> ephemeralStorage()
- Returns:
- The amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on AWS Fargate. See Ephemeral Storage.
-
executionRoleArn
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> executionRoleArn()
- Returns:
- ARN of the task execution role that the Amazon ECS container agent and the Docker daemon can assume.
-
family
public com.pulumi.core.Output<java.lang.String> family()
- Returns:
- A unique name for your task definition. The following arguments are optional:
-
inferenceAccelerators
public com.pulumi.core.Output<java.util.Optional<java.util.List<TaskDefinitionInferenceAccelerator>>> inferenceAccelerators()
- Returns:
- Configuration block(s) with Inference Accelerators settings. Detailed below.
-
ipcMode
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> ipcMode()
- Returns:
- IPC resource namespace to be used for the containers in the task The valid values are `host`, `task`, and `none`.
-
memory
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> memory()
- Returns:
- Amount (in MiB) of memory used by the task. If the `requires_compatibilities` is `FARGATE` this field is required.
-
networkMode
public com.pulumi.core.Output<java.lang.String> networkMode()
- Returns:
- Docker networking mode to use for the containers in the task. Valid values are `none`, `bridge`, `awsvpc`, and `host`.
-
pidMode
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> pidMode()
- Returns:
- Process namespace to use for the containers in the task. The valid values are `host` and `task`.
-
placementConstraints
public com.pulumi.core.Output<java.util.Optional<java.util.List<TaskDefinitionPlacementConstraint>>> placementConstraints()
- Returns:
- Configuration block for rules that are taken into consideration during task placement. Maximum number of `placement_constraints` is `10`. Detailed below.
-
proxyConfiguration
public com.pulumi.core.Output<java.util.Optional<TaskDefinitionProxyConfiguration>> proxyConfiguration()
- Returns:
- Configuration block for the App Mesh proxy. Detailed below.
-
requiresCompatibilities
public com.pulumi.core.Output<java.util.Optional<java.util.List<java.lang.String>>> requiresCompatibilities()
- Returns:
- Set of launch types required by the task. The valid values are `EC2` and `FARGATE`.
-
revision
public com.pulumi.core.Output<java.lang.Integer> revision()
- Returns:
- Revision of the task in a particular family.
-
runtimePlatform
public com.pulumi.core.Output<java.util.Optional<TaskDefinitionRuntimePlatform>> runtimePlatform()
- Returns:
- Configuration block for runtime_platform that containers in your task may use.
-
skipDestroy
public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> skipDestroy()
- Returns:
- Whether to retain the old revision when the resource is destroyed or replacement is necessary. Default is `false`.
-
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 `default_tags` 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 `default_tags` configuration block.
-
taskRoleArn
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> taskRoleArn()
- Returns:
- ARN of IAM role that allows your Amazon ECS container task to make calls to other AWS services.
-
trackLatest
public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> trackLatest()
- Returns:
- Whether should track latest task definition or the one created with the resource. Default is `false`.
-
volumes
public com.pulumi.core.Output<java.util.Optional<java.util.List<TaskDefinitionVolume>>> volumes()
- Returns:
- Configuration block for volumes that containers in your task may use. Detailed below.
-
get
public static TaskDefinition get(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, @Nullable TaskDefinitionState 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.
-
-