Especificar a configuração de volumes do Amazon EBS na implantação do Amazon ECS - Amazon Elastic Container Service

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 user input placeholders por suas próprias informações. Para obter mais informações sobre esses parâmetros, consulte Volume configurations.

"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://filename) para comandos da AWS CLI. Substitua os user input placeholders por suas próprias informações.

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:clusterName e aws:ecs:serviceName). Para obter mais informações sobre marcação de recursos do Amazon ECS, consulte Tagging your Amazon ECS resources.

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 user input placeholders pelas suas próprias informações.

{ "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.