

# Especificar a configuração de volumes do Amazon EBS na implantação do Amazon ECS
<a name="configure-ebs-volume"></a>

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 obter mais informações sobre como adiar a configuração de volume para o momento da inicialização usando o parâmetro `configuredAtLaunch`, consulte [Adiar a configuração de volumes para o momento da inicialização na definição de tarefa do Amazon ECS](specify-ebs-config.md).

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](https://docs.aws.amazon.com/cli/latest/reference/ecs/run-task.html)` para executar uma tarefa autônoma do ECS.
+ `[start-task](https://docs.aws.amazon.com/cli/latest/reference/ecs/start-task.html)` 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 Fargate.
+ `[create-service](https://docs.aws.amazon.com/cli/latest/reference/ecs/create-service.html)` para criar um serviço do ECS.
+ `[update-service](https://docs.aws.amazon.com/cli/latest/reference/ecs/update-service.html)` para atualizar um serviço existente.

**nota**  
Para que um contêiner na tarefa grave no volume montado do Amazon EBS, ele deve ter permissões apropriadas do sistema de arquivos. Quando você especifica um usuário não raiz em sua definição de contêiner, o Amazon ECS configura automaticamente o volume com permissões baseadas em grupo que permitem que o usuário especificado leia e grave no volume. Se nenhum usuário for especificado, o contêiner será executado como raiz e terá acesso total ao volume.

 Você também pode configurar um volume do Amazon EBS usando o Console de gerenciamento da AWS. Para obter mais informações, consulte [Execução de uma aplicação como uma tarefa do Amazon ECS](standalone-task-create.md), [Criação de uma implantação de atualização contínua do Amazon ECS](create-service-console-v2.md) e [Atualizar um serviço do Amazon ECS](update-service-console-v2.md).

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](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service_definition_parameters.html#sd-volumeConfigurations).

```
"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](troubleshoot-ebs-volumes.md). 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](infrastructure_IAM_role.md).

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

## Configuração de um volume para uma tarefa autônoma
<a name="ebs-run-task"></a>

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
<a name="ebs-create-service"></a>

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
<a name="ebs-update-service"></a>

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
<a name="ebs-service-disable-ebs"></a>

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
<a name="ebs-volume-termination-policy"></a>

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
<a name="ebs-volume-tagging"></a>

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](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html).

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.