Especificar a configuração de volumes do Amazon EBS na implantação do Amazon ECS
Depois de registrar uma definição de tarefa com o parâmetro configuredAtLaunch
definido como true
, você pode configurar um volume do Amazon EBS na implantação ao executar uma tarefa autônoma ou ao criar ou atualizar um serviço.
Para configurar um volume, você pode usar as APIs do Amazon ECS ou passar um arquivo JSON como entrada para os seguintes comandos da AWS CLI:
-
run-task
para executar uma tarefa autônoma do ECS. -
start-task
para executar uma tarefa autônoma do ECS em uma instância de contêiner específica. Esse comando não é aplicável às tarefas do tipo de execução do Fargate. -
create-service
para criar um serviço do ECS. -
update-service
para atualizar um serviço existente.
nota
Para que um contêiner na tarefa grave no volume montado do Amazon EBS, você deve executar o contêiner como usuário-raiz.
Você também pode configurar um volume do Amazon EBS usando o AWS Management Console. Para ter mais informações, consulte Execução de uma aplicação como uma tarefa do Amazon ECS, Criação de um serviço do Amazon ECS usando o console e Atualizar um serviço do Amazon ECS.
O trecho JSON a seguir mostra todos os parâmetros de um volume do Amazon EBS que podem ser configurados na implantação. Para usar esses parâmetros na configuração de volume, substitua os
por suas próprias informações. Para obter mais informações sobre esses parâmetros, consulte Volume configurations.user input placeholders
"volumeConfigurations": [ { "name": "
ebs-volume
", "managedEBSVolume": { "encrypted":true
, "kmsKeyId": "arn:aws:kms:us-east-1
:111122223333
:key/1234abcd-12ab-34cd-56ef-1234567890ab
", "volumeType": "gp3
", "sizeInGiB":10
, "snapshotId": "snap-12345
", "volumeInitializationRate":100
, "iops":3000
, "throughput":125
, "tagSpecifications": [ { "resourceType": "volume", "tags": [ { "key": "key1
", "value": "value1
" } ], "propagateTags": "NONE
" } ], "roleArn": "arn:aws:iam::1111222333
:role/ecsInfrastructureRole", "terminationPolicy": { "deleteOnTermination":true
//can't be configured for service-managed tasks, always true }, "filesystemType": "ext4
" } } ]
Importante
Certifique-se de que o volumeName
especificado na configuração seja o mesmo volumeName
especificado na definição de tarefa.
Para obter informações sobre como verificar o status de anexação de volumes, consulte Solução de problemas de anexações de volumes do Amazon EBS às tarefas do Amazon ECS . Para obter informações sobre o perfil do AWS Identity and Access Management (IAM) na infraestrutura do Amazon ECS necessário para a anexação de volumes do EBS, consulte Perfil do IAM de infraestrutura do Amazon ECS.
Veja a seguir exemplos de trechos JSON que mostram a configuração dos volumes do Amazon EBS. Esses exemplos podem ser usados salvando os trechos em arquivos JSON e passando os arquivos como parâmetros (usando o parâmetro --cli-input-json
file://
) para comandos da AWS CLI. Substitua os filename
por suas próprias informações.user input placeholders
Configuração de um volume para uma tarefa autônoma
O trecho a seguir mostra a sintaxe para configurar volumes do Amazon EBS para anexação a uma tarefa autônoma. O trecho JSON a seguir mostra a sintaxe para definir as configurações de volumeType
, sizeInGiB
, encrypted
e kmsKeyId
. A configuração especificada no arquivo JSON é usada para criar e anexar um volume do EBS à tarefa autônoma.
{ "cluster": "
mycluster
", "taskDefinition": "mytaskdef
", "volumeConfigurations": [ { "name": "datadir
", "managedEBSVolume": { "volumeType": "gp3
", "sizeInGiB":100
, "roleArn":"arn:aws:iam::1111222333
:role/ecsInfrastructureRole", "encrypted":true
, "kmsKeyId": "arn:aws:kms:region
:111122223333
:key/1234abcd-12ab-34cd-56ef-1234567890ab
" } } ] }
Configuração de um volume na criação do serviço
O trecho a seguir mostra a sintaxe para configurar volumes do Amazon EBS para anexação a tarefas gerenciadas por um serviço. Os volumes são baseados no snapshot especificado usando o parâmetro snapshotId
a uma taxa de 200 MiB/s. A configuração especificada no arquivo JSON é usada para criar e anexar um volume do EBS a cada tarefa gerenciada pelo serviço.
{ "cluster": "
mycluster
", "taskDefinition": "mytaskdef
", "serviceName": "mysvc
", "desiredCount":2
, "volumeConfigurations": [ { "name": "myEbsVolume
", "managedEBSVolume": { "roleArn":"arn:aws:iam::1111222333
:role/ecsInfrastructureRole", "snapshotId": "snap-12345
", "volumeInitializationRate": 200 } } ] }
Configuração de um volume na atualização do serviço
O trecho JSON a seguir mostra a sintaxe para atualizar um serviço que anteriormente não tinha volumes do Amazon EBS configurados para anexar a tarefas. Você deve fornecer o ARN de uma revisão de definição de tarefa com configuredAtLaunch
definido como true
. O trecho JSON a seguir mostra a sintaxe para definir volumeType
, sizeInGiB
, throughput
e iops
e as configurações de filesystemType
. Essa configuração é usada para criar e anexar um volume do EBS a cada tarefa gerenciada pelo serviço.
{ "cluster": "
mycluster
", "taskDefinition": "mytaskdef
", "service": "mysvc
", "desiredCount":2
, "volumeConfigurations": [ { "name": "myEbsVolume
", "managedEBSVolume": { "roleArn":"arn:aws:iam::1111222333
:role/ecsInfrastructureRole", "volumeType": "gp3
", "sizeInGiB":100
, "iops":3000
, "throughput":125
, "filesystemType": "ext4
" } } ] }
Configuração de um serviço para não utilizar mais os volumes do Amazon EBS
O trecho JSON a seguir mostra a sintaxe para atualizar um serviço para não utilizar mais os volumes do Amazon EBS. Você deve fornecer o ARN de uma definição de tarefa com configuredAtLaunch
definido como false
ou de uma definição de tarefa sem o parâmetro configuredAtLaunch
. Você também deve fornecer um objeto volumeConfigurations
vazio.
{ "cluster": "
mycluster
", "taskDefinition": "mytaskdef
", "service": "mysvc
", "desiredCount":2
, "volumeConfigurations": [] }
Política de encerramento para volumes do Amazon EBS
Quando uma tarefa do Amazon ECS é encerrada, o Amazon ECS usa o valor de deleteOnTermination
para determinar se o volume do Amazon EBS associado à tarefa encerrada deve ser excluído. Por padrão, os volumes do EBS anexados às tarefas são excluídos quando a tarefa é encerrada. Em tarefas autônomas, você pode alterar essa configuração para preservar o volume após o encerramento da tarefa.
nota
Os volumes anexados às tarefas gerenciadas por um serviço não são preservados e sempre são excluídos após o encerramento da tarefa.
Tags em volumes do Amazon EBS
Você pode marcar volumes do Amazon EBS usando o objeto tagSpecifications
. Usando o objeto, você pode fornecer suas próprias tags e definir a propagação delas na definição da tarefa ou do serviço, dependendo se o volume está anexado a uma tarefa autônoma ou a uma tarefa em um serviço. O número máximo de tags que podem ser anexadas a um volume é 50.
Importante
O Amazon ECS anexa automaticamente as tags reservadas AmazonECSCreated
e AmazonECSManaged
a um volume do Amazon EBS. Isso significa que você pode controlar a anexação de no máximo 48 tags adicionais a um volume. Essas tags adicionais podem ser definidas pelo usuário, gerenciadas pelo ECS ou propagadas.
Se quiser adicionar tags gerenciadas pelo Amazon ECS ao volume, você deve definir enableECSManagedTags
como true
na chamada de UpdateService
, CreateService
, RunTask
ou StartTask
. Se você ativar as tags gerenciadas pelo Amazon ECS, o Amazon ECS marca o volume automaticamente com informações de cluster e serviço (aws:ecs:
e clusterName
aws:ecs:
). Para obter mais informações sobre marcação de recursos do Amazon ECS, consulte Tagging your Amazon ECS resources.serviceName
O trecho JSON a seguir mostra a sintaxe para marcar cada volume do Amazon EBS anexado a cada tarefa em um serviço com uma tag definida pelo usuário. Para usar esse exemplo para criar um serviço, substitua os
pelas suas próprias informações.user input
placeholders
{ "cluster": "
mycluster
", "taskDefinition": "mytaskdef
", "serviceName": "mysvc
", "desiredCount":2
, "enableECSManagedTags": true, "volumeConfigurations": [ { "name": "datadir
", "managedEBSVolume": { "volumeType": "gp3
", "sizeInGiB":100
, "tagSpecifications": [ { "resourceType": "volume", "tags": [ { "key": "key1
", "value": "value1
" } ], "propagateTags": "NONE
" } ], "roleArn":"arn:aws:iam:1111222333
:role/ecsInfrastructureRole", "encrypted":true
, "kmsKeyId": "arn:aws:kms:region
:111122223333
:key/1234abcd-12ab-34cd-56ef-1234567890ab
" } } ] }
Importante
Você deve especificar um tipo de recurso de volume
para marcar os volumes do Amazon EBS.