Register Task Definition
ecs_register_task_definition | R Documentation |
Registers a new task definition from the supplied family and containerDefinitions¶
Description¶
Registers a new task definition from the supplied family
and
containerDefinitions
. Optionally, you can add data volumes to your
containers with the volumes
parameter. For more information about task
definition parameters and defaults, see Amazon ECS Task
Definitions
in the Amazon Elastic Container Service Developer Guide.
You can specify a role for your task with the taskRoleArn
parameter.
When you specify a role for a task, its containers can then use the
latest versions of the CLI or SDKs to make API requests to the Amazon
Web Services services that are specified in the policy that's associated
with the role. For more information, see IAM Roles for
Tasks
in the Amazon Elastic Container Service Developer Guide.
You can specify a Docker networking mode for the containers in your task
definition with the networkMode
parameter. If you specify the awsvpc
network mode, the task is allocated an elastic network interface, and
you must specify a
NetworkConfiguration
when you create a service or run a task with the task definition. For
more information, see Task
Networking
in the Amazon Elastic Container Service Developer Guide.
Usage¶
ecs_register_task_definition(family, taskRoleArn, executionRoleArn,
networkMode, containerDefinitions, volumes, placementConstraints,
requiresCompatibilities, cpu, memory, tags, pidMode, ipcMode,
proxyConfiguration, inferenceAccelerators, ephemeralStorage,
runtimePlatform, enableFaultInjection)
Arguments¶
family |
[required] You must specify a |
taskRoleArn |
The short name or full Amazon Resource Name (ARN) of the IAM role that containers in this task can assume. All containers in this task are granted the permissions that are specified in this role. For more information, see IAM Roles for Tasks in the Amazon Elastic Container Service Developer Guide. |
executionRoleArn |
The Amazon Resource Name (ARN) of the task execution role that grants the Amazon ECS container agent permission to make Amazon Web Services API calls on your behalf. For informationabout the required IAM roles for Amazon ECS, see IAM roles for Amazon ECS in the Amazon Elastic Container Service Developer Guide. |
networkMode |
The Docker networking mode to use for the containers in the task.
The valid values are For Amazon ECS tasks on Fargate, the With the When using the If the network mode is If the network mode is |
containerDefinitions |
[required] A list of container definitions in JSON format that describe the different containers that make up your task. |
volumes |
A list of volume definitions in JSON format that containers in your task might use. |
placementConstraints |
An array of placement constraint objects to use for the task. You can specify a maximum of 10 constraints for each task. This limit includes constraints in the task definition and those specified at runtime. |
requiresCompatibilities |
The task launch type that Amazon ECS validates the task definition against. A client exception is returned if the task definition doesn't validate against the compatibilities specified. If no value is specified, the parameter is omitted from the response. |
cpu |
The number of CPU units used by the task. It can be expressed as
an integer using CPU units (for example, Task-level CPU and memory parameters are ignored for Windows containers. We recommend specifying container-level resources for Windows containers. If you're using the EC2 launch type or external launch type, this
field is optional. Supported values are between If you're using the Fargate launch type, this field is required and
you must use one of the following values, which determines your range of
supported values for the The CPU units cannot be less than 1 vCPU when you use Windows containers on Fargate.
|
memory |
The amount of memory (in MiB) used by the task. It can be
expressed as an integer using MiB (for example , Task-level CPU and memory parameters are ignored for Windows containers. We recommend specifying container-level resources for Windows containers. If using the EC2 launch type, this field is optional. If using the Fargate launch type, this field is required and you must
use one of the following values. This determines your range of supported
values for the The CPU units cannot be less than 1 vCPU when you use Windows containers on Fargate.
|
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:
|
pidMode |
The process namespace to use for the containers in the task. The
valid values are If If If no value is specified, the default is a private namespace for each container. If the This parameter is not supported for Windows containers. This parameter is only supported for tasks that are hosted on Fargate
if the tasks are using platform version |
ipcMode |
The IPC resource namespace to use for the containers in the task.
The valid values are If the If you are setting namespaced kernel parameters using
This parameter is not supported for Windows containers or tasks run on Fargate. |
proxyConfiguration |
The configuration details for the App Mesh proxy. For tasks hosted on Amazon EC2 instances, the container instances
require at least version |
inferenceAccelerators |
The Elastic Inference accelerators to use for the containers in the task. |
ephemeralStorage |
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 Fargate. For more information, see Using data volumes in tasks in the Amazon ECS Developer Guide. For tasks using the Fargate launch type, the task requires the following platforms:
|
runtimePlatform |
The operating system that your tasks definitions run on. A platform family is specified only for tasks using the Fargate launch type. |
enableFaultInjection |
Enables fault injection when you register your task definition
and allows for fault injection requests to be accepted from the task's
containers. The default value is |
Value¶
A list with the following syntax:
list(
taskDefinition = list(
taskDefinitionArn = "string",
containerDefinitions = list(
list(
name = "string",
image = "string",
repositoryCredentials = list(
credentialsParameter = "string"
),
cpu = 123,
memory = 123,
memoryReservation = 123,
links = list(
"string"
),
portMappings = list(
list(
containerPort = 123,
hostPort = 123,
protocol = "tcp"|"udp",
name = "string",
appProtocol = "http"|"http2"|"grpc",
containerPortRange = "string"
)
),
essential = TRUE|FALSE,
restartPolicy = list(
enabled = TRUE|FALSE,
ignoredExitCodes = list(
123
),
restartAttemptPeriod = 123
),
entryPoint = list(
"string"
),
command = list(
"string"
),
environment = list(
list(
name = "string",
value = "string"
)
),
environmentFiles = list(
list(
value = "string",
type = "s3"
)
),
mountPoints = list(
list(
sourceVolume = "string",
containerPath = "string",
readOnly = TRUE|FALSE
)
),
volumesFrom = list(
list(
sourceContainer = "string",
readOnly = TRUE|FALSE
)
),
linuxParameters = list(
capabilities = list(
add = list(
"string"
),
drop = list(
"string"
)
),
devices = list(
list(
hostPath = "string",
containerPath = "string",
permissions = list(
"read"|"write"|"mknod"
)
)
),
initProcessEnabled = TRUE|FALSE,
sharedMemorySize = 123,
tmpfs = list(
list(
containerPath = "string",
size = 123,
mountOptions = list(
"string"
)
)
),
maxSwap = 123,
swappiness = 123
),
secrets = list(
list(
name = "string",
valueFrom = "string"
)
),
dependsOn = list(
list(
containerName = "string",
condition = "START"|"COMPLETE"|"SUCCESS"|"HEALTHY"
)
),
startTimeout = 123,
stopTimeout = 123,
versionConsistency = "enabled"|"disabled",
hostname = "string",
user = "string",
workingDirectory = "string",
disableNetworking = TRUE|FALSE,
privileged = TRUE|FALSE,
readonlyRootFilesystem = TRUE|FALSE,
dnsServers = list(
"string"
),
dnsSearchDomains = list(
"string"
),
extraHosts = list(
list(
hostname = "string",
ipAddress = "string"
)
),
dockerSecurityOptions = list(
"string"
),
interactive = TRUE|FALSE,
pseudoTerminal = TRUE|FALSE,
dockerLabels = list(
"string"
),
ulimits = list(
list(
name = "core"|"cpu"|"data"|"fsize"|"locks"|"memlock"|"msgqueue"|"nice"|"nofile"|"nproc"|"rss"|"rtprio"|"rttime"|"sigpending"|"stack",
softLimit = 123,
hardLimit = 123
)
),
logConfiguration = list(
logDriver = "json-file"|"syslog"|"journald"|"gelf"|"fluentd"|"awslogs"|"splunk"|"awsfirelens",
options = list(
"string"
),
secretOptions = list(
list(
name = "string",
valueFrom = "string"
)
)
),
healthCheck = list(
command = list(
"string"
),
interval = 123,
timeout = 123,
retries = 123,
startPeriod = 123
),
systemControls = list(
list(
namespace = "string",
value = "string"
)
),
resourceRequirements = list(
list(
value = "string",
type = "GPU"|"InferenceAccelerator"
)
),
firelensConfiguration = list(
type = "fluentd"|"fluentbit",
options = list(
"string"
)
),
credentialSpecs = list(
"string"
)
)
),
family = "string",
taskRoleArn = "string",
executionRoleArn = "string",
networkMode = "bridge"|"host"|"awsvpc"|"none",
revision = 123,
volumes = list(
list(
name = "string",
host = list(
sourcePath = "string"
),
dockerVolumeConfiguration = list(
scope = "task"|"shared",
autoprovision = TRUE|FALSE,
driver = "string",
driverOpts = list(
"string"
),
labels = list(
"string"
)
),
efsVolumeConfiguration = list(
fileSystemId = "string",
rootDirectory = "string",
transitEncryption = "ENABLED"|"DISABLED",
transitEncryptionPort = 123,
authorizationConfig = list(
accessPointId = "string",
iam = "ENABLED"|"DISABLED"
)
),
fsxWindowsFileServerVolumeConfiguration = list(
fileSystemId = "string",
rootDirectory = "string",
authorizationConfig = list(
credentialsParameter = "string",
domain = "string"
)
),
configuredAtLaunch = TRUE|FALSE
)
),
status = "ACTIVE"|"INACTIVE"|"DELETE_IN_PROGRESS",
requiresAttributes = list(
list(
name = "string",
value = "string",
targetType = "container-instance",
targetId = "string"
)
),
placementConstraints = list(
list(
type = "memberOf",
expression = "string"
)
),
compatibilities = list(
"EC2"|"FARGATE"|"EXTERNAL"
),
runtimePlatform = list(
cpuArchitecture = "X86_64"|"ARM64",
operatingSystemFamily = "WINDOWS_SERVER_2019_FULL"|"WINDOWS_SERVER_2019_CORE"|"WINDOWS_SERVER_2016_FULL"|"WINDOWS_SERVER_2004_CORE"|"WINDOWS_SERVER_2022_CORE"|"WINDOWS_SERVER_2022_FULL"|"WINDOWS_SERVER_20H2_CORE"|"LINUX"
),
requiresCompatibilities = list(
"EC2"|"FARGATE"|"EXTERNAL"
),
cpu = "string",
memory = "string",
inferenceAccelerators = list(
list(
deviceName = "string",
deviceType = "string"
)
),
pidMode = "host"|"task",
ipcMode = "host"|"task"|"none",
proxyConfiguration = list(
type = "APPMESH",
containerName = "string",
properties = list(
list(
name = "string",
value = "string"
)
)
),
registeredAt = as.POSIXct(
"2015-01-01"
),
deregisteredAt = as.POSIXct(
"2015-01-01"
),
registeredBy = "string",
ephemeralStorage = list(
sizeInGiB = 123
),
enableFaultInjection = TRUE|FALSE
),
tags = list(
list(
key = "string",
value = "string"
)
)
)
Request syntax¶
svc$register_task_definition(
family = "string",
taskRoleArn = "string",
executionRoleArn = "string",
networkMode = "bridge"|"host"|"awsvpc"|"none",
containerDefinitions = list(
list(
name = "string",
image = "string",
repositoryCredentials = list(
credentialsParameter = "string"
),
cpu = 123,
memory = 123,
memoryReservation = 123,
links = list(
"string"
),
portMappings = list(
list(
containerPort = 123,
hostPort = 123,
protocol = "tcp"|"udp",
name = "string",
appProtocol = "http"|"http2"|"grpc",
containerPortRange = "string"
)
),
essential = TRUE|FALSE,
restartPolicy = list(
enabled = TRUE|FALSE,
ignoredExitCodes = list(
123
),
restartAttemptPeriod = 123
),
entryPoint = list(
"string"
),
command = list(
"string"
),
environment = list(
list(
name = "string",
value = "string"
)
),
environmentFiles = list(
list(
value = "string",
type = "s3"
)
),
mountPoints = list(
list(
sourceVolume = "string",
containerPath = "string",
readOnly = TRUE|FALSE
)
),
volumesFrom = list(
list(
sourceContainer = "string",
readOnly = TRUE|FALSE
)
),
linuxParameters = list(
capabilities = list(
add = list(
"string"
),
drop = list(
"string"
)
),
devices = list(
list(
hostPath = "string",
containerPath = "string",
permissions = list(
"read"|"write"|"mknod"
)
)
),
initProcessEnabled = TRUE|FALSE,
sharedMemorySize = 123,
tmpfs = list(
list(
containerPath = "string",
size = 123,
mountOptions = list(
"string"
)
)
),
maxSwap = 123,
swappiness = 123
),
secrets = list(
list(
name = "string",
valueFrom = "string"
)
),
dependsOn = list(
list(
containerName = "string",
condition = "START"|"COMPLETE"|"SUCCESS"|"HEALTHY"
)
),
startTimeout = 123,
stopTimeout = 123,
versionConsistency = "enabled"|"disabled",
hostname = "string",
user = "string",
workingDirectory = "string",
disableNetworking = TRUE|FALSE,
privileged = TRUE|FALSE,
readonlyRootFilesystem = TRUE|FALSE,
dnsServers = list(
"string"
),
dnsSearchDomains = list(
"string"
),
extraHosts = list(
list(
hostname = "string",
ipAddress = "string"
)
),
dockerSecurityOptions = list(
"string"
),
interactive = TRUE|FALSE,
pseudoTerminal = TRUE|FALSE,
dockerLabels = list(
"string"
),
ulimits = list(
list(
name = "core"|"cpu"|"data"|"fsize"|"locks"|"memlock"|"msgqueue"|"nice"|"nofile"|"nproc"|"rss"|"rtprio"|"rttime"|"sigpending"|"stack",
softLimit = 123,
hardLimit = 123
)
),
logConfiguration = list(
logDriver = "json-file"|"syslog"|"journald"|"gelf"|"fluentd"|"awslogs"|"splunk"|"awsfirelens",
options = list(
"string"
),
secretOptions = list(
list(
name = "string",
valueFrom = "string"
)
)
),
healthCheck = list(
command = list(
"string"
),
interval = 123,
timeout = 123,
retries = 123,
startPeriod = 123
),
systemControls = list(
list(
namespace = "string",
value = "string"
)
),
resourceRequirements = list(
list(
value = "string",
type = "GPU"|"InferenceAccelerator"
)
),
firelensConfiguration = list(
type = "fluentd"|"fluentbit",
options = list(
"string"
)
),
credentialSpecs = list(
"string"
)
)
),
volumes = list(
list(
name = "string",
host = list(
sourcePath = "string"
),
dockerVolumeConfiguration = list(
scope = "task"|"shared",
autoprovision = TRUE|FALSE,
driver = "string",
driverOpts = list(
"string"
),
labels = list(
"string"
)
),
efsVolumeConfiguration = list(
fileSystemId = "string",
rootDirectory = "string",
transitEncryption = "ENABLED"|"DISABLED",
transitEncryptionPort = 123,
authorizationConfig = list(
accessPointId = "string",
iam = "ENABLED"|"DISABLED"
)
),
fsxWindowsFileServerVolumeConfiguration = list(
fileSystemId = "string",
rootDirectory = "string",
authorizationConfig = list(
credentialsParameter = "string",
domain = "string"
)
),
configuredAtLaunch = TRUE|FALSE
)
),
placementConstraints = list(
list(
type = "memberOf",
expression = "string"
)
),
requiresCompatibilities = list(
"EC2"|"FARGATE"|"EXTERNAL"
),
cpu = "string",
memory = "string",
tags = list(
list(
key = "string",
value = "string"
)
),
pidMode = "host"|"task",
ipcMode = "host"|"task"|"none",
proxyConfiguration = list(
type = "APPMESH",
containerName = "string",
properties = list(
list(
name = "string",
value = "string"
)
)
),
inferenceAccelerators = list(
list(
deviceName = "string",
deviceType = "string"
)
),
ephemeralStorage = list(
sizeInGiB = 123
),
runtimePlatform = list(
cpuArchitecture = "X86_64"|"ARM64",
operatingSystemFamily = "WINDOWS_SERVER_2019_FULL"|"WINDOWS_SERVER_2019_CORE"|"WINDOWS_SERVER_2016_FULL"|"WINDOWS_SERVER_2004_CORE"|"WINDOWS_SERVER_2022_CORE"|"WINDOWS_SERVER_2022_FULL"|"WINDOWS_SERVER_20H2_CORE"|"LINUX"
),
enableFaultInjection = TRUE|FALSE
)
Examples¶
## Not run:
# This example registers a task definition to the specified family.
svc$register_task_definition(
containerDefinitions = list(
list(
name = "sleep",
command = list(
"sleep",
"360"
),
cpu = 10L,
essential = TRUE,
image = "busybox",
memory = 10L
)
),
family = "sleep360",
taskRoleArn = "",
volumes = list()
)
## End(Not run)