TaskDefinitionArgs

data class TaskDefinitionArgs(val containerDefinitions: Output<String>? = null, val cpu: Output<String>? = null, val ephemeralStorage: Output<TaskDefinitionEphemeralStorageArgs>? = null, val executionRoleArn: Output<String>? = null, val family: Output<String>? = null, val inferenceAccelerators: Output<List<TaskDefinitionInferenceAcceleratorArgs>>? = null, val ipcMode: Output<String>? = null, val memory: Output<String>? = null, val networkMode: Output<String>? = null, val pidMode: Output<String>? = null, val placementConstraints: Output<List<TaskDefinitionPlacementConstraintArgs>>? = null, val proxyConfiguration: Output<TaskDefinitionProxyConfigurationArgs>? = null, val requiresCompatibilities: Output<List<String>>? = null, val runtimePlatform: Output<TaskDefinitionRuntimePlatformArgs>? = null, val skipDestroy: Output<Boolean>? = null, val tags: Output<Map<String, String>>? = null, val taskRoleArn: Output<String>? = null, val volumes: Output<List<TaskDefinitionVolumeArgs>>? = null) : ConvertibleToJava<TaskDefinitionArgs>

Manages a revision of an ECS task definition to be used in aws.ecs.Service.

Example Usage

Basic Example

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());
}
}

With AppMesh Proxy

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(Files.readString(Paths.get("task-definitions/service.json")))
.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());
}
}

Example Using docker_volume_configuration

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(Files.readString(Paths.get("task-definitions/service.json")))
.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:/", aws_efs_file_system.fs().dns_name())),
Map.entry("o", String.format("addr=%s,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport", aws_efs_file_system.fs().dns_name()))
))
.build())
.build())
.build());
}
}

Example Using efs_volume_configuration

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(Files.readString(Paths.get("task-definitions/service.json")))
.volumes(TaskDefinitionVolumeArgs.builder()
.name("service-storage")
.efsVolumeConfiguration(TaskDefinitionVolumeEfsVolumeConfigurationArgs.builder()
.fileSystemId(aws_efs_file_system.fs().id())
.rootDirectory("/opt/data")
.transitEncryption("ENABLED")
.transitEncryptionPort(2999)
.authorizationConfig(TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs.builder()
.accessPointId(aws_efs_access_point.test().id())
.iam("ENABLED")
.build())
.build())
.build())
.build());
}
}

Example Using fsx_windows_file_server_volume_configuration

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(aws_secretsmanager_secret.test().id())
.secretString(serializeJson(
jsonObject(
jsonProperty("username", "admin"),
jsonProperty("password", aws_directory_service_directory.test().password())
)))
.build());
var service = new TaskDefinition("service", TaskDefinitionArgs.builder()
.family("service")
.containerDefinitions(Files.readString(Paths.get("task-definitions/service.json")))
.volumes(TaskDefinitionVolumeArgs.builder()
.name("service-storage")
.fsxWindowsFileServerVolumeConfiguration(TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationArgs.builder()
.fileSystemId(aws_fsx_windows_file_system.test().id())
.rootDirectory("\\data")
.authorizationConfig(TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigArgs.builder()
.credentialsParameter(test.arn())
.domain(aws_directory_service_directory.test().name())
.build())
.build())
.build())
.build());
}
}

Example Using container_definitions and inference_accelerator

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()
.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"
}
]
}
]
""")
.family("test")
.inferenceAccelerators(TaskDefinitionInferenceAcceleratorArgs.builder()
.deviceName("device_1")
.deviceType("eia1.medium")
.build())
.build());
}
}

Example Using runtime_platform 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 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()
.containerDefinitions("""
[
{
"name": "iis",
"image": "mcr.microsoft.com/windows/servercore/iis",
"cpu": 1024,
"memory": 2048,
"essential": true
}
]
""")
.cpu(1024)
.family("test")
.memory(2048)
.networkMode("awsvpc")
.requiresCompatibilities("FARGATE")
.runtimePlatform(TaskDefinitionRuntimePlatformArgs.builder()
.cpuArchitecture("X86_64")
.operatingSystemFamily("WINDOWS_SERVER_2019_CORE")
.build())
.build());
}
}

Import

ECS Task Definitions can be imported via their Amazon Resource Name (ARN)

$ pulumi import aws:ecs/taskDefinition:TaskDefinition example arn:aws:ecs:us-east-1:012345678910:task-definition/mytaskfamily:123

Constructors

Link copied to clipboard
constructor(containerDefinitions: Output<String>? = null, cpu: Output<String>? = null, ephemeralStorage: Output<TaskDefinitionEphemeralStorageArgs>? = null, executionRoleArn: Output<String>? = null, family: Output<String>? = null, inferenceAccelerators: Output<List<TaskDefinitionInferenceAcceleratorArgs>>? = null, ipcMode: Output<String>? = null, memory: Output<String>? = null, networkMode: Output<String>? = null, pidMode: Output<String>? = null, placementConstraints: Output<List<TaskDefinitionPlacementConstraintArgs>>? = null, proxyConfiguration: Output<TaskDefinitionProxyConfigurationArgs>? = null, requiresCompatibilities: Output<List<String>>? = null, runtimePlatform: Output<TaskDefinitionRuntimePlatformArgs>? = null, skipDestroy: Output<Boolean>? = null, tags: Output<Map<String, String>>? = null, taskRoleArn: Output<String>? = null, volumes: Output<List<TaskDefinitionVolumeArgs>>? = null)

Properties

Link copied to clipboard
val containerDefinitions: Output<String>? = null

A list of valid container definitions 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 section from the official Developer Guide.

Link copied to clipboard
val cpu: Output<String>? = null

Number of cpu units used by the task. If the requires_compatibilities is FARGATE this field is required.

Link copied to clipboard

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.

Link copied to clipboard
val executionRoleArn: Output<String>? = null

ARN of the task execution role that the Amazon ECS container agent and the Docker daemon can assume.

Link copied to clipboard
val family: Output<String>? = null

A unique name for your task definition. The following arguments are optional:

Link copied to clipboard

Configuration block(s) with Inference Accelerators settings. Detailed below.

Link copied to clipboard
val ipcMode: Output<String>? = null

IPC resource namespace to be used for the containers in the task The valid values are host, task, and none.

Link copied to clipboard
val memory: Output<String>? = null

Amount (in MiB) of memory used by the task. If the requires_compatibilities is FARGATE this field is required.

Link copied to clipboard
val networkMode: Output<String>? = null

Docker networking mode to use for the containers in the task. Valid values are none, bridge, awsvpc, and host.

Link copied to clipboard
val pidMode: Output<String>? = null

Process namespace to use for the containers in the task. The valid values are host and task.

Link copied to clipboard

Configuration block for rules that are taken into consideration during task placement. Maximum number of placement_constraints is 10. Detailed below.

Link copied to clipboard

Configuration block for the App Mesh proxy. Detailed below.

Link copied to clipboard
val requiresCompatibilities: Output<List<String>>? = null

Set of launch types required by the task. The valid values are EC2 and FARGATE.

Link copied to clipboard

Configuration block for runtime_platform that containers in your task may use.

Link copied to clipboard
val skipDestroy: Output<Boolean>? = null

Whether to retain the old revision when the resource is destroyed or replacement is necessary. Default is false.

Link copied to clipboard
val tags: Output<Map<String, String>>? = null

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.

Link copied to clipboard
val taskRoleArn: Output<String>? = null

ARN of IAM role that allows your Amazon ECS container task to make calls to other AWS services.

Link copied to clipboard
val volumes: Output<List<TaskDefinitionVolumeArgs>>? = null

Configuration block for volumes that containers in your task may use. Detailed below.

Functions

Link copied to clipboard
open override fun toJava(): TaskDefinitionArgs