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.
-
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
dedescribe-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
-
Observe a data de criação.
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.
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
-
Habilitar o formato longo de ARN do serviço. Execute
put-account-setting
com a opçãoserviceLongArnFormat
definida comoenabled
. 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 } } -
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çãotaskLongArnFormat
definida comoenabled
. 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.
Abra o console em https://console.aws.amazon.com/ecs/v2
. -
Na página Clusters, escolha o cluster.
-
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.
-
Escolha Migrar para ARN longo.
A caixa de diálogo Migrar serviço é exibida.
-
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
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.
-
Identifique a entidade principal que criou o serviço.
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.
Na AWS CLI, execute o seguinte comando:
Substitua os valores das
user-input
pelos seus.aws ecs describe-services --cluster
cluster-name
--servicesservice-name
--query 'services[0].{createdBy: createdBy}'
-
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:
-
Assuma o usuário ou perfil do IAM para essa entidade principal. Em seguida, execute
put-account-setting
. -
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.