Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
@file:Suppress("RedundantVisibilityModifier","RedundantUnitReturnType","RemoveRedundantQualifierName","unused","UnusedImport","ClassName","REDUNDANT_PROJECTION","DEPRECATION")
package cloudshift.awscdk.dsl.services.ecs
import cloudshift.awscdk.common.CdkDslMarker
import cloudshift.awscdk.dsl.CfnTagDsl
import kotlin.Any
import kotlin.String
import kotlin.Unit
import kotlin.collections.Collection
import kotlin.collections.MutableList
import software.amazon.awscdk.CfnTag
import software.amazon.awscdk.IResolvable
import software.amazon.awscdk.services.ecs.CfnTaskDefinition
import software.amazon.awscdk.services.ecs.CfnTaskDefinitionProps
/**
* Properties for defining a `CfnTaskDefinition`.
*
* Example:
*
* ```
* // The code below shows an example of how to instantiate this type.
* // The values are placeholders you should change.
* import software.amazon.awscdk.services.ecs.*;
* CfnTaskDefinitionProps cfnTaskDefinitionProps = CfnTaskDefinitionProps.builder()
* .containerDefinitions(List.of(ContainerDefinitionProperty.builder()
* .image("image")
* .name("name")
* // the properties below are optional
* .command(List.of("command"))
* .cpu(123)
* .dependsOn(List.of(ContainerDependencyProperty.builder()
* .condition("condition")
* .containerName("containerName")
* .build()))
* .disableNetworking(false)
* .dnsSearchDomains(List.of("dnsSearchDomains"))
* .dnsServers(List.of("dnsServers"))
* .dockerLabels(Map.of(
* "dockerLabelsKey", "dockerLabels"))
* .dockerSecurityOptions(List.of("dockerSecurityOptions"))
* .entryPoint(List.of("entryPoint"))
* .environment(List.of(KeyValuePairProperty.builder()
* .name("name")
* .value("value")
* .build()))
* .environmentFiles(List.of(EnvironmentFileProperty.builder()
* .type("type")
* .value("value")
* .build()))
* .essential(false)
* .extraHosts(List.of(HostEntryProperty.builder()
* .hostname("hostname")
* .ipAddress("ipAddress")
* .build()))
* .firelensConfiguration(FirelensConfigurationProperty.builder()
* .options(Map.of(
* "optionsKey", "options"))
* .type("type")
* .build())
* .healthCheck(HealthCheckProperty.builder()
* .command(List.of("command"))
* .interval(123)
* .retries(123)
* .startPeriod(123)
* .timeout(123)
* .build())
* .hostname("hostname")
* .interactive(false)
* .links(List.of("links"))
* .linuxParameters(LinuxParametersProperty.builder()
* .capabilities(KernelCapabilitiesProperty.builder()
* .add(List.of("add"))
* .drop(List.of("drop"))
* .build())
* .devices(List.of(DeviceProperty.builder()
* .containerPath("containerPath")
* .hostPath("hostPath")
* .permissions(List.of("permissions"))
* .build()))
* .initProcessEnabled(false)
* .maxSwap(123)
* .sharedMemorySize(123)
* .swappiness(123)
* .tmpfs(List.of(TmpfsProperty.builder()
* .size(123)
* // the properties below are optional
* .containerPath("containerPath")
* .mountOptions(List.of("mountOptions"))
* .build()))
* .build())
* .logConfiguration(LogConfigurationProperty.builder()
* .logDriver("logDriver")
* // the properties below are optional
* .options(Map.of(
* "optionsKey", "options"))
* .secretOptions(List.of(SecretProperty.builder()
* .name("name")
* .valueFrom("valueFrom")
* .build()))
* .build())
* .memory(123)
* .memoryReservation(123)
* .mountPoints(List.of(MountPointProperty.builder()
* .containerPath("containerPath")
* .readOnly(false)
* .sourceVolume("sourceVolume")
* .build()))
* .portMappings(List.of(PortMappingProperty.builder()
* .appProtocol("appProtocol")
* .containerPort(123)
* .containerPortRange("containerPortRange")
* .hostPort(123)
* .name("name")
* .protocol("protocol")
* .build()))
* .privileged(false)
* .pseudoTerminal(false)
* .readonlyRootFilesystem(false)
* .repositoryCredentials(RepositoryCredentialsProperty.builder()
* .credentialsParameter("credentialsParameter")
* .build())
* .resourceRequirements(List.of(ResourceRequirementProperty.builder()
* .type("type")
* .value("value")
* .build()))
* .secrets(List.of(SecretProperty.builder()
* .name("name")
* .valueFrom("valueFrom")
* .build()))
* .startTimeout(123)
* .stopTimeout(123)
* .systemControls(List.of(SystemControlProperty.builder()
* .namespace("namespace")
* .value("value")
* .build()))
* .ulimits(List.of(UlimitProperty.builder()
* .hardLimit(123)
* .name("name")
* .softLimit(123)
* .build()))
* .user("user")
* .volumesFrom(List.of(VolumeFromProperty.builder()
* .readOnly(false)
* .sourceContainer("sourceContainer")
* .build()))
* .workingDirectory("workingDirectory")
* .build()))
* .cpu("cpu")
* .ephemeralStorage(EphemeralStorageProperty.builder()
* .sizeInGiB(123)
* .build())
* .executionRoleArn("executionRoleArn")
* .family("family")
* .inferenceAccelerators(List.of(InferenceAcceleratorProperty.builder()
* .deviceName("deviceName")
* .deviceType("deviceType")
* .build()))
* .ipcMode("ipcMode")
* .memory("memory")
* .networkMode("networkMode")
* .pidMode("pidMode")
* .placementConstraints(List.of(TaskDefinitionPlacementConstraintProperty.builder()
* .type("type")
* // the properties below are optional
* .expression("expression")
* .build()))
* .proxyConfiguration(ProxyConfigurationProperty.builder()
* .containerName("containerName")
* // the properties below are optional
* .proxyConfigurationProperties(List.of(KeyValuePairProperty.builder()
* .name("name")
* .value("value")
* .build()))
* .type("type")
* .build())
* .requiresCompatibilities(List.of("requiresCompatibilities"))
* .runtimePlatform(RuntimePlatformProperty.builder()
* .cpuArchitecture("cpuArchitecture")
* .operatingSystemFamily("operatingSystemFamily")
* .build())
* .tags(List.of(CfnTag.builder()
* .key("key")
* .value("value")
* .build()))
* .taskRoleArn("taskRoleArn")
* .volumes(List.of(VolumeProperty.builder()
* .dockerVolumeConfiguration(DockerVolumeConfigurationProperty.builder()
* .autoprovision(false)
* .driver("driver")
* .driverOpts(Map.of(
* "driverOptsKey", "driverOpts"))
* .labels(Map.of(
* "labelsKey", "labels"))
* .scope("scope")
* .build())
* .efsVolumeConfiguration(EFSVolumeConfigurationProperty.builder()
* .filesystemId("filesystemId")
* // the properties below are optional
* .authorizationConfig(AuthorizationConfigProperty.builder()
* .accessPointId("accessPointId")
* .iam("iam")
* .build())
* .rootDirectory("rootDirectory")
* .transitEncryption("transitEncryption")
* .transitEncryptionPort(123)
* .build())
* .host(HostVolumePropertiesProperty.builder()
* .sourcePath("sourcePath")
* .build())
* .name("name")
* .build()))
* .build();
* ```
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html)
*/
@CdkDslMarker
public class CfnTaskDefinitionPropsDsl {
private val cdkBuilder: CfnTaskDefinitionProps.Builder = CfnTaskDefinitionProps.builder()
private val _containerDefinitions: MutableList = mutableListOf()
private val _inferenceAccelerators: MutableList = mutableListOf()
private val _placementConstraints: MutableList = mutableListOf()
private val _requiresCompatibilities: MutableList = mutableListOf()
private val _tags: MutableList = mutableListOf()
private val _volumes: MutableList = mutableListOf()
/**
* @param containerDefinitions A list of container definitions in JSON format that describe the
* different containers that make up your task.
* For more information about container definition parameters and defaults, see [Amazon ECS Task
* Definitions](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_defintions.html) in
* the *Amazon Elastic Container Service Developer Guide* .
*/
public fun containerDefinitions(vararg containerDefinitions: Any) {
_containerDefinitions.addAll(listOf(*containerDefinitions))
}
/**
* @param containerDefinitions A list of container definitions in JSON format that describe the
* different containers that make up your task.
* For more information about container definition parameters and defaults, see [Amazon ECS Task
* Definitions](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_defintions.html) in
* the *Amazon Elastic Container Service Developer Guide* .
*/
public fun containerDefinitions(containerDefinitions: Collection) {
_containerDefinitions.addAll(containerDefinitions)
}
/**
* @param containerDefinitions A list of container definitions in JSON format that describe the
* different containers that make up your task.
* For more information about container definition parameters and defaults, see [Amazon ECS Task
* Definitions](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_defintions.html) in
* the *Amazon Elastic Container Service Developer Guide* .
*/
public fun containerDefinitions(containerDefinitions: IResolvable) {
cdkBuilder.containerDefinitions(containerDefinitions)
}
/**
* @param cpu The number of `cpu` units used by the task.
* If you use the EC2 launch type, this field is optional. Any value can be used. If you use the
* Fargate launch type, this field is required. You must use one of the following values. The value
* that you choose determines your range of valid values for the `memory` parameter.
*
* The CPU units cannot be less than 1 vCPU when you use Windows containers on Fargate.
*
* * 256 (.25 vCPU) - Available `memory` values: 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB)
* * 512 (.5 vCPU) - Available `memory` values: 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB)
* * 1024 (1 vCPU) - Available `memory` values: 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5
* GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB)
* * 2048 (2 vCPU) - Available `memory` values: 4096 (4 GB) and 16384 (16 GB) in increments of
* 1024 (1 GB)
* * 4096 (4 vCPU) - Available `memory` values: 8192 (8 GB) and 30720 (30 GB) in increments of
* 1024 (1 GB)
* * 8192 (8 vCPU) - Available `memory` values: 16 GB and 60 GB in 4 GB increments
*
* This option requires Linux platform `1.4.0` or later.
*
* * 16384 (16vCPU) - Available `memory` values: 32GB and 120 GB in 8 GB increments
*
* This option requires Linux platform `1.4.0` or later.
*/
public fun cpu(cpu: String) {
cdkBuilder.cpu(cpu)
}
/**
* @param ephemeralStorage The ephemeral storage settings to use for tasks run with the task
* definition.
*/
public fun ephemeralStorage(ephemeralStorage: IResolvable) {
cdkBuilder.ephemeralStorage(ephemeralStorage)
}
/**
* @param ephemeralStorage The ephemeral storage settings to use for tasks run with the task
* definition.
*/
public fun ephemeralStorage(ephemeralStorage: CfnTaskDefinition.EphemeralStorageProperty) {
cdkBuilder.ephemeralStorage(ephemeralStorage)
}
/**
* @param executionRoleArn The Amazon Resource Name (ARN) of the task execution role that grants
* the Amazon ECS container agent permission to make AWS API calls on your behalf.
* The task execution IAM role is required depending on the requirements of your task. For more
* information, see [Amazon ECS task execution IAM
* role](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html) in
* the *Amazon Elastic Container Service Developer Guide* .
*/
public fun executionRoleArn(executionRoleArn: String) {
cdkBuilder.executionRoleArn(executionRoleArn)
}
/**
* @param family The name of a family that this task definition is registered to.
* Up to 255 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed.
*
* A family groups multiple versions of a task definition. Amazon ECS gives the first task
* definition that you registered to a family a revision number of 1. Amazon ECS gives sequential
* revision numbers to each task definition that you add.
*
*
* To use revision numbers when you update a task definition, specify this property. If you don't
* specify a value, AWS CloudFormation generates a new task definition each time that you update it.
*/
public fun family(family: String) {
cdkBuilder.family(family)
}
/**
* @param inferenceAccelerators The Elastic Inference accelerators to use for the containers in
* the task.
*/
public fun inferenceAccelerators(vararg inferenceAccelerators: Any) {
_inferenceAccelerators.addAll(listOf(*inferenceAccelerators))
}
/**
* @param inferenceAccelerators The Elastic Inference accelerators to use for the containers in
* the task.
*/
public fun inferenceAccelerators(inferenceAccelerators: Collection) {
_inferenceAccelerators.addAll(inferenceAccelerators)
}
/**
* @param inferenceAccelerators The Elastic Inference accelerators to use for the containers in
* the task.
*/
public fun inferenceAccelerators(inferenceAccelerators: IResolvable) {
cdkBuilder.inferenceAccelerators(inferenceAccelerators)
}
/**
* @param ipcMode The IPC resource namespace to use for the containers in the task.
* The valid values are `host` , `task` , or `none` . If `host` is specified, then all containers
* within the tasks that specified the `host` IPC mode on the same container instance share the same
* IPC resources with the host Amazon EC2 instance. If `task` is specified, all containers within the
* specified task share the same IPC resources. If `none` is specified, then IPC resources within the
* containers of a task are private and not shared with other containers in a task or on the
* container instance. If no value is specified, then the IPC resource namespace sharing depends on
* the Docker daemon setting on the container instance. For more information, see [IPC
* settings](https://docs.aws.amazon.com/https://docs.docker.com/engine/reference/run/#ipc-settings---ipc)
* in the *Docker run reference* .
*
* If the `host` IPC mode is used, be aware that there is a heightened risk of undesired IPC
* namespace expose. For more information, see [Docker
* security](https://docs.aws.amazon.com/https://docs.docker.com/engine/security/security/) .
*
* If you are setting namespaced kernel parameters using `systemControls` for the containers in
* the task, the following will apply to your IPC resource namespace. For more information, see
* [System
* Controls](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html)
* in the *Amazon Elastic Container Service Developer Guide* .
*
* * For tasks that use the `host` IPC mode, IPC namespace related `systemControls` are not
* supported.
* * For tasks that use the `task` IPC mode, IPC namespace related `systemControls` will apply to
* all containers within a task.
*
*
* This parameter is not supported for Windows containers or tasks run on AWS Fargate .
*/
public fun ipcMode(ipcMode: String) {
cdkBuilder.ipcMode(ipcMode)
}
/**
* @param memory The amount (in MiB) of memory used by the task.
* If your tasks runs on Amazon EC2 instances, you must specify either a task-level memory value
* or a container-level memory value. This field is optional and any value can be used. If a
* task-level memory value is specified, the container-level memory value is optional. For more
* information regarding container-level memory and memory reservation, see
* [ContainerDefinition](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDefinition.html)
* .
*
* If your tasks runs on AWS Fargate , this field is required. You must use one of the following
* values. The value you choose determines your range of valid values for the `cpu` parameter.
*
* * 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available `cpu` values: 256 (.25 vCPU)
* * 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available `cpu` values: 512 (.5 vCPU)
* * 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) -
* Available `cpu` values: 1024 (1 vCPU)
* * Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) - Available `cpu` values:
* 2048 (2 vCPU)
* * Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) - Available `cpu` values:
* 4096 (4 vCPU)
* * Between 16 GB and 60 GB in 4 GB increments - Available `cpu` values: 8192 (8 vCPU)
*
* This option requires Linux platform `1.4.0` or later.
*
* * Between 32GB and 120 GB in 8 GB increments - Available `cpu` values: 16384 (16 vCPU)
*
* This option requires Linux platform `1.4.0` or later.
*/
public fun memory(memory: String) {
cdkBuilder.memory(memory)
}
/**
* @param networkMode The Docker networking mode to use for the containers in the task.
* The valid values are `none` , `bridge` , `awsvpc` , and `host` . If no network mode is
* specified, the default is `bridge` .
*
* For Amazon ECS tasks on Fargate, the `awsvpc` network mode is required. For Amazon ECS tasks on
* Amazon EC2 Linux instances, any network mode can be used. For Amazon ECS tasks on Amazon EC2
* Windows instances, `<default>` or `awsvpc` can be used. If the network mode is set to `none`
* , you cannot specify port mappings in your container definitions, and the tasks containers do not
* have external connectivity. The `host` and `awsvpc` network modes offer the highest networking
* performance for containers because they use the EC2 network stack instead of the virtualized
* network stack provided by the `bridge` mode.
*
* With the `host` and `awsvpc` network modes, exposed container ports are mapped directly to the
* corresponding host port (for the `host` network mode) or the attached elastic network interface
* port (for the `awsvpc` network mode), so you cannot take advantage of dynamic host port mappings.
*
*
* When using the `host` network mode, you should not run containers using the root user (UID 0).
* It is considered best practice to use a non-root user.
*
*
* If the network mode is `awsvpc` , the task is allocated an elastic network interface, and you
* must specify a `NetworkConfiguration` value when you create a service or run a task with the task
* definition. For more information, see [Task
* Networking](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html) in
* the *Amazon Elastic Container Service Developer Guide* .
*
* If the network mode is `host` , you cannot run multiple instantiations of the same task on a
* single container instance when port mappings are used.
*
* For more information, see [Network
* settings](https://docs.aws.amazon.com/https://docs.docker.com/engine/reference/run/#network-settings)
* in the *Docker run reference* .
*/
public fun networkMode(networkMode: String) {
cdkBuilder.networkMode(networkMode)
}
/**
* @param pidMode The process namespace to use for the containers in the task.
* The valid values are `host` or `task` . If `host` is specified, then all containers within the
* tasks that specified the `host` PID mode on the same container instance share the same process
* namespace with the host Amazon EC2 instance. If `task` is specified, all containers within the
* specified task share the same process namespace. If no value is specified, the default is a
* private namespace. For more information, see [PID
* settings](https://docs.aws.amazon.com/https://docs.docker.com/engine/reference/run/#pid-settings---pid)
* in the *Docker run reference* .
*
* If the `host` PID mode is used, be aware that there is a heightened risk of undesired process
* namespace expose. For more information, see [Docker
* security](https://docs.aws.amazon.com/https://docs.docker.com/engine/security/security/) .
*
*
* This parameter is not supported for Windows containers or tasks run on AWS Fargate .
*/
public fun pidMode(pidMode: String) {
cdkBuilder.pidMode(pidMode)
}
/**
* @param placementConstraints An array of placement constraint objects to use for tasks.
*
* This parameter isn't supported for tasks run on AWS Fargate .
*/
public fun placementConstraints(vararg placementConstraints: Any) {
_placementConstraints.addAll(listOf(*placementConstraints))
}
/**
* @param placementConstraints An array of placement constraint objects to use for tasks.
*
* This parameter isn't supported for tasks run on AWS Fargate .
*/
public fun placementConstraints(placementConstraints: Collection) {
_placementConstraints.addAll(placementConstraints)
}
/**
* @param placementConstraints An array of placement constraint objects to use for tasks.
*
* This parameter isn't supported for tasks run on AWS Fargate .
*/
public fun placementConstraints(placementConstraints: IResolvable) {
cdkBuilder.placementConstraints(placementConstraints)
}
/**
* @param proxyConfiguration The configuration details for the App Mesh proxy.
* Your Amazon ECS container instances require at least version 1.26.0 of the container agent and
* at least version 1.26.0-1 of the `ecs-init` package to use a proxy configuration. If your
* container instances are launched from the Amazon ECS optimized AMI version `20190301` or later,
* they contain the required versions of the container agent and `ecs-init` . For more information,
* see [Amazon ECS-optimized Linux
* AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html) in the
* *Amazon Elastic Container Service Developer Guide* .
*/
public fun proxyConfiguration(proxyConfiguration: IResolvable) {
cdkBuilder.proxyConfiguration(proxyConfiguration)
}
/**
* @param proxyConfiguration The configuration details for the App Mesh proxy.
* Your Amazon ECS container instances require at least version 1.26.0 of the container agent and
* at least version 1.26.0-1 of the `ecs-init` package to use a proxy configuration. If your
* container instances are launched from the Amazon ECS optimized AMI version `20190301` or later,
* they contain the required versions of the container agent and `ecs-init` . For more information,
* see [Amazon ECS-optimized Linux
* AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html) in the
* *Amazon Elastic Container Service Developer Guide* .
*/
public fun proxyConfiguration(proxyConfiguration: CfnTaskDefinition.ProxyConfigurationProperty) {
cdkBuilder.proxyConfiguration(proxyConfiguration)
}
/**
* @param requiresCompatibilities The task launch types the task definition was validated against.
* The valid values are `EC2` , `FARGATE` , and `git diff` . For more information, see [Amazon ECS
* launch types](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) in
* the *Amazon Elastic Container Service Developer Guide* .
*/
public fun requiresCompatibilities(vararg requiresCompatibilities: String) {
_requiresCompatibilities.addAll(listOf(*requiresCompatibilities))
}
/**
* @param requiresCompatibilities The task launch types the task definition was validated against.
* The valid values are `EC2` , `FARGATE` , and `git diff` . For more information, see [Amazon ECS
* launch types](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) in
* the *Amazon Elastic Container Service Developer Guide* .
*/
public fun requiresCompatibilities(requiresCompatibilities: Collection) {
_requiresCompatibilities.addAll(requiresCompatibilities)
}
/**
* @param runtimePlatform The operating system that your tasks definitions run on.
* A platform family is specified only for tasks using the Fargate launch type.
*
* When you specify a task definition in a service, this value must match the `runtimePlatform`
* value of the service.
*/
public fun runtimePlatform(runtimePlatform: IResolvable) {
cdkBuilder.runtimePlatform(runtimePlatform)
}
/**
* @param runtimePlatform The operating system that your tasks definitions run on.
* A platform family is specified only for tasks using the Fargate launch type.
*
* When you specify a task definition in a service, this value must match the `runtimePlatform`
* value of the service.
*/
public fun runtimePlatform(runtimePlatform: CfnTaskDefinition.RuntimePlatformProperty) {
cdkBuilder.runtimePlatform(runtimePlatform)
}
/**
* @param tags The metadata that you apply to the task definition to help you categorize and
* organize them.
* Each tag consists of a key and an optional value. You define both of them.
*
* The following basic restrictions apply to tags:
*
* * Maximum number of tags per resource - 50
* * For each resource, each tag key must be unique, and each tag key can have only one value.
* * Maximum key length - 128 Unicode characters in UTF-8
* * Maximum value length - 256 Unicode characters in UTF-8
* * If your tagging schema is used across multiple services and resources, remember that other
* services may have restrictions on allowed characters. Generally allowed characters are: letters,
* numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : /
*/
public fun tags(tags: CfnTagDsl.() -> Unit) {
_tags.add(CfnTagDsl().apply(tags).build())
}
/**
* @param tags The metadata that you apply to the task definition to help you categorize and
* organize them.
* Each tag consists of a key and an optional value. You define both of them.
*
* The following basic restrictions apply to tags:
*
* * Maximum number of tags per resource - 50
* * For each resource, each tag key must be unique, and each tag key can have only one value.
* * Maximum key length - 128 Unicode characters in UTF-8
* * Maximum value length - 256 Unicode characters in UTF-8
* * If your tagging schema is used across multiple services and resources, remember that other
* services may have restrictions on allowed characters. Generally allowed characters are: letters,
* numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : /
*/
public fun tags(tags: Collection) {
_tags.addAll(tags)
}
/**
* @param taskRoleArn The short name or full Amazon Resource Name (ARN) of the AWS Identity and
* Access Management role that grants containers in the task permission to call AWS APIs on your
* behalf.
* For more information, see [Amazon ECS Task
* Role](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) in the
* *Amazon Elastic Container Service Developer Guide* .
*
* IAM roles for tasks on Windows require that the `-EnableTaskIAMRole` option is set when you
* launch the Amazon ECS-optimized Windows AMI. Your containers must also run some configuration code
* to use the feature. For more information, see [Windows IAM roles for
* tasks](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/windows_task_IAM_roles.html) in
* the *Amazon Elastic Container Service Developer Guide* .
*/
public fun taskRoleArn(taskRoleArn: String) {
cdkBuilder.taskRoleArn(taskRoleArn)
}
/**
* @param volumes The list of data volume definitions for the task.
* For more information, see [Using data volumes in
* tasks](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_data_volumes.html) in the
* *Amazon Elastic Container Service Developer Guide* .
*
*
* The `host` and `sourcePath` parameters aren't supported for tasks run on AWS Fargate .
*/
public fun volumes(vararg volumes: Any) {
_volumes.addAll(listOf(*volumes))
}
/**
* @param volumes The list of data volume definitions for the task.
* For more information, see [Using data volumes in
* tasks](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_data_volumes.html) in the
* *Amazon Elastic Container Service Developer Guide* .
*
*
* The `host` and `sourcePath` parameters aren't supported for tasks run on AWS Fargate .
*/
public fun volumes(volumes: Collection) {
_volumes.addAll(volumes)
}
/**
* @param volumes The list of data volume definitions for the task.
* For more information, see [Using data volumes in
* tasks](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_data_volumes.html) in the
* *Amazon Elastic Container Service Developer Guide* .
*
*
* The `host` and `sourcePath` parameters aren't supported for tasks run on AWS Fargate .
*/
public fun volumes(volumes: IResolvable) {
cdkBuilder.volumes(volumes)
}
public fun build(): CfnTaskDefinitionProps {
if(_containerDefinitions.isNotEmpty()) cdkBuilder.containerDefinitions(_containerDefinitions)
if(_inferenceAccelerators.isNotEmpty()) cdkBuilder.inferenceAccelerators(_inferenceAccelerators)
if(_placementConstraints.isNotEmpty()) cdkBuilder.placementConstraints(_placementConstraints)
if(_requiresCompatibilities.isNotEmpty())
cdkBuilder.requiresCompatibilities(_requiresCompatibilities)
if(_tags.isNotEmpty()) cdkBuilder.tags(_tags)
if(_volumes.isNotEmpty()) cdkBuilder.volumes(_volumes)
return cdkBuilder.build()
}
}