Migrar um ARN curto de um serviço do Amazon ECS para um ARN longo - Amazon Elastic Container Service

Migrar um ARN curto de um serviço do Amazon ECS para um ARN longo

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.

Se quiser usar o AWS 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 AWS 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 AWS CloudFormation representa o ARN de um serviço, o valor não é alterado e continua sendo o ARN curto do serviço.

Pré-requisitos

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

  2. Observe a data de criação.

  3. 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 no Guia do usuário do AWS Identity and Access Management.

  4. 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

  5. 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 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 } }
  6. Habilite o formato longo de ARN da tarefa. Isso permite que as tarefas executadas como parte de um serviço tenham o formato de ARN longo. Execute put-account-setting com a opção taskLongArnFormat definida como enabled. Para obter mais informações, consulte put-account-setting 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 } }

Procedimento

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

  1. Abra o console em https://console.aws.amazon.com/ecs/v2.

  2. Na página Clusters, escolha o cluster.

  3. 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.

  4. Escolha Migrar para ARN longo.

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

  5. Escolha Migrate (Migrar).

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

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_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

Você pode adicionar tags ao serviço. Para obter mais informações, consulte Adição de etiquetas aos recursos do Amazon ECS.

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 na AWS Command Line Interface Reference.

Solução de problemas

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.

    2. 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}'
  2. 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.

    2. 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.