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.CustomResourceManages a revision of an ECS task definition to be used in `aws.ecs.Service`. ## Example Usage ### Basic Example
### With App Mesh Proxypackage 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.TaskDefinitionPlacementConstraintArgs; import com.pulumi.aws.ecs.inputs.TaskDefinitionVolumeArgs; 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 service = new TaskDefinition("service", TaskDefinitionArgs.builder() .placementConstraints(TaskDefinitionPlacementConstraintArgs.builder() .type("memberOf") .expression("attribute:ecs.availability-zone in [us-west-2a, us-west-2b]") .build()) .volumes(TaskDefinitionVolumeArgs.builder() .name("service-storage") .hostPath("/ecs/service-storage") .build()) .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) ))) ) ))) .build()); } }
### Example Using `dockerVolumeConfiguration`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 com.pulumi.std.StdFunctions; import com.pulumi.std.inputs.FileArgs; 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 service = new TaskDefinition("service", TaskDefinitionArgs.builder() .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()) .family("service") .containerDefinitions(StdFunctions.file(FileArgs.builder() .input("task-definitions/service.json") .build()).result()) .build()); } }
### Example Using `efsVolumeConfiguration`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 com.pulumi.std.StdFunctions; import com.pulumi.std.inputs.FileArgs; 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 service = new TaskDefinition("service", TaskDefinitionArgs.builder() .volumes(TaskDefinitionVolumeArgs.builder() .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()) .name("service-storage") .build()) .family("service") .containerDefinitions(StdFunctions.file(FileArgs.builder() .input("task-definitions/service.json") .build()).result()) .build()); } }
### Example Using `fsxWindowsFileServerVolumeConfiguration`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 com.pulumi.std.StdFunctions; import com.pulumi.std.inputs.FileArgs; 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 service = new TaskDefinition("service", TaskDefinitionArgs.builder() .volumes(TaskDefinitionVolumeArgs.builder() .efsVolumeConfiguration(TaskDefinitionVolumeEfsVolumeConfigurationArgs.builder() .authorizationConfig(TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs.builder() .accessPointId(test.id()) .iam("ENABLED") .build()) .fileSystemId(fs.id()) .rootDirectory("/opt/data") .transitEncryption("ENABLED") .transitEncryptionPort(2999) .build()) .name("service-storage") .build()) .family("service") .containerDefinitions(StdFunctions.file(FileArgs.builder() .input("task-definitions/service.json") .build()).result()) .build()); } }
### Example Using `containerDefinitions`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 com.pulumi.std.StdFunctions; import com.pulumi.std.inputs.FileArgs; 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 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() .volumes(TaskDefinitionVolumeArgs.builder() .fsxWindowsFileServerVolumeConfiguration(TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationArgs.builder() .authorizationConfig(TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigArgs.builder() .credentialsParameter(test.arn()) .domain(testAwsDirectoryServiceDirectory.name()) .build()) .fileSystemId(testAwsFsxWindowsFileSystem.id()) .rootDirectory("\\data") .build()) .name("service-storage") .build()) .family("service") .containerDefinitions(StdFunctions.file(FileArgs.builder() .input("task-definitions/service.json") .build()).result()) .build()); } }
### Example Using `runtimePlatform` and `fargate`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 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 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 } ] } ] """) .build()); } }
## Import ### Identity Schema #### Required * `family` (String) The unique name for your task definition. * `revision` (Integer) The revision of the task in a particular family. #### Optional * `accountId` (String) AWS Account where this resource is managed. * `region` (String) Region where this resource is managed. 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 ```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.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 TaskDefinition("test", TaskDefinitionArgs.builder() .runtimePlatform(TaskDefinitionRuntimePlatformArgs.builder() .operatingSystemFamily("WINDOWS_SERVER_2019_CORE") .cpuArchitecture("X86_64") .build()) .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 } ] """) .build()); } }
-
-
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.lang.Boolean>enableFaultInjection()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 TaskDefinitionget(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.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.lang.String>region()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:
- 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 `requiresCompatibilities` is `FARGATE` this field is required.
-
enableFaultInjection
public com.pulumi.core.Output<java.lang.Boolean> enableFaultInjection()
- Returns:
- Enables fault injection and allows for fault injection requests to be accepted from the task's containers. Default is `false`.
-
ephemeralStorage
public com.pulumi.core.Output<java.util.Optional<TaskDefinitionEphemeralStorage>> ephemeralStorage()
- Returns:
- 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:
- Unique name for your task definition. The following arguments are optional:
-
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. Valid values: `host`, `task`, `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 `requiresCompatibilities` 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: `awsvpc`, `bridge`, `host`, and `none`.
-
pidMode
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> pidMode()
- Returns:
- Process namespace to use for the containers in the task. Valid values: host` , `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 `placementConstraints` 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.
-
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.
-
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. Valid values: `EC2`, `EXTERNAL`, `FARGATE`, `MANAGED_INSTANCES`.
-
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 runtimePlatform 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 `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.
-
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 `ACTIVE` task definition on AWS or the one created with the resource stored in state. Default is `false`. Useful in the event the task definition is modified outside of this resource.
-
volumes
public com.pulumi.core.Output<java.util.Optional<java.util.List<TaskDefinitionVolume>>> volumes()
- Returns:
- Repeatable configuration block for volumes that containers in your task may use. Detailed below. > **NOTE:** Proper escaping is required for JSON field values containing quotes (`"`) such as `environment` values. If directly setting the JSON, they should be escaped as `\"` in the JSON, e.g., `"value": "I \"love\" escaped quotes"`. If using a variable value, they should be escaped as `\\\"` in the variable, e.g., `value = "I \\\"love\\\" escaped quotes"` in the variable and `"value": "${var.myvariable}"` in the JSON. > **Note:** Fault injection only works with tasks using the `awsvpc` or `host` network modes. Fault injection isn't available on Windows.
-
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.
-
-