

# Migrar um ARN curto de um serviço do Amazon ECS para um ARN longo
<a name="service-arn-migration"></a>

O Amazon ECS atribui um nome do recurso da Amazon (ARN) exclusivo a cada serviço. Os serviços que foram criados antes de 2021 têm um formato curto de ARN:

 `arn:aws:ecs:region:aws_account_id:service/service-name`

O Amazon ECS alterou o formato de ARN para incluir o nome do cluster. Este é o formato longo de ARN:

`arn:aws:ecs:region:aws_account_id:service/cluster-name/service-name`

Para que você possa marcar um serviço, ele deve ter o formato longo de ARN. 

Você pode migrar um serviço com um formato curto de ARN para um formato longo de ARN sem precisar recriar o serviço. Você pode usar a API, a CLI ou o console. Não é possível desfazer a operação de migração.

O processo de migração é contínuo e garante zero tempo de inatividade para seu serviço. Durante a migração:
+ **Disponibilidade do serviço**: seu serviço continua funcionando normalmente sem interrupção do tráfego ou da funcionalidade.
+ **Tarefas em execução**: as tarefas existentes continuam sendo executadas sem interrupções. As novas tarefas inicializadas após a migração usarão o formato longo do ARN se a configuração `taskLongArnFormat` da conta estiver habilitada.
+ **Instâncias de contêineres**: as instâncias de contêineres não são afetadas pela migração do ARN do serviço e continuam operando normalmente.
+ **Configuração do serviço**: todas as configurações do serviço, incluindo a definição de tarefas, rede e configurações do balanceador de carga, permanecem inalteradas.

Se quiser usar o CloudFormation para marcar um serviço com um formato curto de ARN, deverá migrar o serviço usando a API, a CLI ou o console. Depois que a migração for concluída, você poderá usar o CloudFormation para marcar o serviço.

Se quiser usar o Terraform para marcar um serviço com formato curto de ARN, você deverá migrar o serviço usando a API, a CLI ou o console. Depois de concluída a migração, você poderá usar o Terraform para marcar o serviço.

Depois de concluída a migração, o serviço apresentará as seguintes alterações:
+ O formato longo de ARN

  `arn:aws:ecs:region:aws_account_id:service/cluster-name/service-name`
+ Quando você migra usando o console, o Amazon ECS adiciona uma tag ao serviço com a chave definida como "ecs:serviceArnMigratedAt" e o valor definido como o timestamp da migração (formato UTC).

  Essa tag conta para a cota de tags.
+ Quando o `PhysicalResourceId` de uma pilha do CloudFormation representa o ARN de um serviço, o valor não é alterado e continua sendo o ARN curto do serviço. 

## Pré-requisitos
<a name="migrate-service-arn-prerequisite"></a>

Execute as seguintes operações antes de migrar o ARN do serviço.

1. Para ver se você tem um ARN de serviço curto, veja os detalhes do serviço no console do Amazon ECS (você verá um aviso se o serviço tiver um formato curto de ARN) ou o retorno do parâmetro `serviceARN` de `describe-services`. Quando o ARN não inclui o nome do cluster, você tem um ARN curto. Este é o formato curto de ARN:

    `arn:aws:ecs:region:aws_account_id:service/service-name`

1. Observe a data de criação.

1.  Se você tiver políticas do IAM que usem o formato curto de ARN, atualize-as para o formato longo de ARN.

   Substitua cada *espaço reservado para entrada do usuário* por suas próprias informações.

    `arn:aws:ecs:region:aws_account_id:service/cluster-name/service-name`

   Para obter mais informações, consulte [Editar políticas do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html) no *Guia do usuário do AWS Identity and Access Management*.

1.  Se você tiver ferramentas que usem o formato curto de ARN, atualize-as para o formato longo de ARN.

   Substitua cada *espaço reservado para entrada do usuário* por suas próprias informações.

    `arn:aws:ecs:region:aws_account_id:service/cluster-name/service-name`

1. Habilitar o formato longo de ARN do serviço. Execute `put-account-setting` com a opção `serviceLongArnFormat` definida como `enabled`. Para obter mais informações, consulte [put-account-setting](https://docs.aws.amazon.com/cli/latest/reference/ecs/put-account-setting.html) na *Referência da API do Amazon Elastic Container Service*.

   Execute o comando como usuário-raiz quando seu serviço tiver uma data `createdAt` desconhecida.

   ```
   aws ecs put-account-setting --name serviceLongArnFormat --value enabled
   ```

   Exemplo de saída

   ```
   {
       "setting": {
           "name": "serviceLongArnFormat",
           "value": "enabled",
           "principalArn": "arn:aws:iam::123456789012:role/your-role",
           "type": user
       }
   }
   ```

1. Habilite o formato longo de ARN da tarefa. Essa configuração de conta controla o formato do ARN para novas tarefas que são inicializadas após a conclusão da migração do serviço. Execute `put-account-setting` com a opção `taskLongArnFormat` definida como `enabled`. Para obter mais informações, consulte [put-account-setting](https://docs.aws.amazon.com/cli/latest/reference/ecs/put-account-setting.html) na *Referência da API do Amazon Elastic Container Service*.

   Execute o comando como usuário-raiz quando seu serviço tiver uma data `createdAt` desconhecida.

   ```
   aws ecs put-account-setting --name taskLongArnFormat --value enabled
   ```

   Exemplo de saída

   ```
   {
       "setting": {
           "name": "taskLongArnFormat",
           "value": "enabled",
           "principalArn": "arn:aws:iam::123456789012:role/your-role",
           "type": user
       }
   }
   ```
**nota**  
A configuração `taskLongArnFormat` não migra diretamente as tarefas existentes. Isso afeta apenas o formato do ARN das novas tarefas criadas depois que a configuração é habilitada. As tarefas em execução existentes mantêm seu formato do ARN atual até serem substituídas por meio de operações normais de serviço (como implantações ou atividades de escalabilidade).

## Procedimento
<a name="migrate-service-arn-procedure"></a>

Use o procedimento a seguir para migrar o ARN do serviço.

### Console
<a name="migrate-service-arn-procedure-console"></a>

1. Abra o console em [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2).

1. Na página **Clusters**, escolha o cluster.

1. Na seção **Serviços**, escolha um serviço que tenha um aviso na coluna ARN.

   A página de detalhes do serviço é exibida.

1. Escolha **Migrar para ARN longo**.

   A caixa de diálogo Migrar serviço é exibida.

1. Escolha **Migrate (Migrar)**.

### CLI
<a name="migrate-service-arn-procedure-cli"></a>

Depois que atender aos pré-requisitos, você poderá marcar o serviço. Execute o seguinte comando:

O Amazon ECS considera que passar o formato longo de ARN em uma solicitação de API `tag-resource` para um serviço com um ARN curto é um sinal para migrar o serviço para usar o formato longo de ARN.

```
aws ecs tag-resource \
    --resource-arn arn:aws:ecs:region:aws_account_id:service/cluster-name/service-name
    --tags key=key1,value=value1
```

O exemplo a seguir marca MyService com uma tag que tem uma chave definida como "TestService" e um valor definido como "WebServers":

```
aws ecs tag-resource \
    --resource-arn arn:aws:ecs:us-east-1:123456789012:service/MyCluster/MyService
    --tags key=TestService1,value=WebServers
```

### Terraform
<a name="migrate-service-arn-procedure-terraform"></a>

Depois que atender aos pré-requisitos, você poderá marcar o serviço. Crie um recurso `aws_ecs_service` e defina a referência `tags`. Para obter mais informações, consulte [Resource: aws\$1ecs\$1service](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_service) na documentação do Terraform.

```
resource "aws_ecs_service" "MyService" {
  name    = "example"
  cluster = aws_ecs_cluster.MyService.id

 tags = {
 "Name"  =  "MyService"
 "Environment"  =  "Production"
 "Department"  =  "QualityAssurance"
  }
}
```

### Próximas etapas
<a name="tag-next-steps"></a>

Você pode adicionar tags ao serviço. Para obter mais informações, consulte [Adição de etiquetas aos recursos do Amazon ECS](tag-resources-console.md).

Se você quiser que o Amazon ECS propague as tags da definição de tarefa ou do serviço para a tarefa, execute `update-service` com o parâmetro `propagateTags`. Para obter mais informações, consulte [update-service](https://docs.aws.amazon.com/cli/latest/reference/ecs/update-service.html) na *AWS Command Line Interface Reference*.

## Solução de problemas
<a name="troubleshooting-arn-migration"></a>

 Alguns usuários podem encontrar o erro ao seguir ao migrar do formato de ARN curto para o formato de ARN longo. 

`There was an error while migrating the ARN of service service-name. The specified account does not have serviceLongArnFormat or taskLongArnFormat account settings enabled. Add account settings in order to enable tagging.` 

 Se você já ativou a configuração de conta `serviceLongArnFormat`, mas ainda enfrenta esse erro, talvez as configurações da conta para o formato de ARN longo não tenham sido habilitadas para a entidade principal do IAM específica que originalmente criou o serviço. 

1.  Identifique a entidade principal que criou o serviço.

   1. No console, as informações estão disponíveis no campo **Criado por** na guia **Configuração e rede** na página de detalhes do serviço no console do Amazon ECS. 

   1. Na AWS CLI, execute o seguinte comando:

      Substitua os valores das *user-input* pelos seus.

      ```
      aws ecs describe-services --cluster cluster-name --services service-name --query 'services[0].{createdBy: createdBy}'
      ```

1. Habilite as configurações de conta necessárias para essa entidade principal específica. Você pode fazer isso por meio de uma das seguintes maneiras: 

   1.  Assuma o usuário ou perfil do IAM para essa entidade principal. Em seguida, execute `put-account-setting`. 

   1.  Use o usuário raiz para executar o comando enquanto especifica a entidade principal de criação com o `principal-arn`. 

      Exemplo.

      Substitua *principal-arn* pelo valor na Etapa 1.

      ```
      aws ecs put-account-setting --name serviceLongArnFormat --value enabled --principal-arn arn:aws:iam::123456789012:role/jdoe
      ```

 Ambos os métodos habilitam a configuração de conta `serviceLongArnFormat` necessária na entidade principal que criou o serviço, o que permite que a migração do ARN prossiga. 