Class 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 ```
    • 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<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()  
      • 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

      • 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.