Eseguire la migrazione di un ARN di servizio breve di Amazon ECS in un ARN lungo - Amazon Elastic Container Service

Eseguire la migrazione di un ARN di servizio breve di Amazon ECS in un ARN lungo

Amazon ECS assegna un nome della risorsa Amazon (ARN) univoco a ciascun servizio. I servizi creati prima del 2021 hanno un formato ARN corto:

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

Amazon ECS ha modificato il formato ARN per includere il nome del cluster. Questo è un formato ARN lungo:

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

Il servizio deve avere il formato ARN lungo per assegnare tag al servizio.

È possibile migrare un servizio con un formato ARN corto al formato ARN lungo senza dover ricreare il servizio. È possibile usare l'API, la CLI o la console. L'operazione di migrazione non può essere annullata.

Il processo di migrazione è semplice e garantisce zero tempi di inattività per il servizio. Durante la migrazione:

  • Disponibilità del servizio: il servizio continua a funzionare normalmente senza interruzioni del traffico o delle funzionalità.

  • Attività in esecuzione: le attività esistenti continuano a essere eseguite senza interruzioni. Le nuove attività avviate dopo la migrazione utilizzeranno il formato ARN lungo se l'impostazione dell'account taskLongArnFormat è abilitata.

  • Istanze di container: le istanze di container non sono interessate dalla migrazione ARN del servizio e continuano a funzionare normalmente.

  • Configurazione del servizio: tutte le impostazioni del servizio, tra cui la definizione delle attività, la rete e le configurazioni del bilanciatore del carico, rimangono invariate.

Se si desidera utilizzare CloudFormation per etichettare un servizio con un formato ARN corto, è necessario migrare il servizio utilizzando l'API, la CLI o la console. Una volta completata la migrazione, è possibile utilizzare CloudFormation per etichettare il servizio.

Se si desidera utilizzare Terraform per etichettare un servizio con un formato ARN corto, è necessario migrare il servizio utilizzando l'API, la CLI o la console. Una volta completata la migrazione, è possibile utilizzare Terraform per etichettare il servizio.

Al termine della migrazione, il servizio presenta le seguenti modifiche:

  • Il formato ARN lungo

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

  • Quando si esegue la migrazione utilizzando la console, Amazon ECS aggiunge un tag al servizio con la chiave impostata su “ecs:serviceArnMigratedAt” e il valore impostato sul timestamp della migrazione (formato UTC).

    Questo tag viene conteggiato ai fini della quota di tag.

  • Quando il PhysicalResourceId in uno stack CloudFormation rappresenta un ARN di servizio, il valore non cambia e continuerà a essere l'ARN del servizio corto.

Prerequisiti

Eseguire le seguenti operazioni prima di migrare l'ARN del servizio.

  1. Per verificare se si dispone di un ARN di servizio corto, visualizzare i dettagli del servizio nella console Amazon ECS (appare un avviso quando il servizio ha il formato ARN corto) o il parametro return di serviceARN da describe-services. Quando l'ARN non include il nome del cluster, si dispone di un ARN corto. Il formato di un ARN corto è il seguente:

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

  2. Si noti la data di creazione.

  3. Se si dispone di policy IAM che utilizzano il formato ARN corto, aggiornarlo al formato ARN lungo.

    Sostituisci ciascun placeholder input dell'utente con le tue informazioni.

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

    Per ulteriori informazioni, consultare Editing IAM policies nella Guida per l'utente di AWS Identity and Access Management.

  4. Se si dispone di strumenti che utilizzano il formato ARN corto, aggiornarlo al formato ARN lungo.

    Sostituisci ciascun placeholder input dell'utente con le tue informazioni.

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

  5. Abilitare il formato ARN lungo del servizio. Esegui put-account-setting con l'opzione serviceLongArnFormat impostata su enabled. Per ulteriori informazioni, consultare put-account-setting nella Documentazione di riferimento delle API di Amazon Elastic Container Service.

    Eseguire il comando come utente root quando il servizio ha una data di createdAt sconosciuta.

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

    Output di esempio

    { "setting": { "name": "serviceLongArnFormat", "value": "enabled", "principalArn": "arn:aws:iam::123456789012:role/your-role", "type": user } }
  6. Abilitare il formato ARN lungo dell'attività. Questa impostazione dell'account controlla il formato ARN per le nuove attività che vengono avviate dopo il completamento della migrazione del servizio. Esegui put-account-setting con l'opzione taskLongArnFormat impostata su enabled. Per ulteriori informazioni, consultare put-account-setting nella Documentazione di riferimento delle API di Amazon Elastic Container Service.

    Eseguire il comando come utente root quando il servizio ha una data di createdAt sconosciuta.

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

    Output di esempio

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

    L'impostazione taskLongArnFormat non migra direttamente le attività esistenti. Influisce solo sul formato ARN delle nuove attività create dopo l'attivazione dell'impostazione. Le attività in esecuzione esistenti mantengono il formato dell'ARN attuale fino a quando non vengono sostituite tramite le normali operazioni di servizio (come implementazioni o attività di scalabilità).

Procedura

Usare quanto segue per eseguire la migrazione dell'ARN del servizio.

  1. Apri la console all'indirizzo https://console.aws.amazon.com/ecs/v2.

  2. Nella pagina Cluster, scegliere il cluster.

  3. Nella sezione Servizi, scegliere un servizio con un avviso nella colonna ARN.

    Si apre la pagina dei dettagli del servizio.

  4. Scegliere Migra a un ARN lungo.

    Appare la finestra di dialogo Migra servizio.

  5. Scegliere Migrate (Migrazione).

Dopo aver sodisfatto tutti i prerequisiti, è possibile etichettare il servizio. Esegui il comando seguente:

Amazon ECS valuta la possibilità di passare il formato ARN lungo in una richiesta API tag-resource per un servizio con un ARN corto come segnale per eseguire la migrazione del servizio all'utilizzo del formato ARN lungo.

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

L'esempio seguente etichetta MyService con un tag che ha una chiave impostata su “TestService” e un valore impostato su “WebServers:

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

Dopo aver sodisfatto tutti i prerequisiti, è possibile etichettare il servizio. Creare una risorsa aws_ecs_service e impostare il riferimento tags. Per ulteriori informazioni, consultare Resource: aws_ecs_service nella documentazione di Terraform.

resource "aws_ecs_service" "MyService" { name = "example" cluster = aws_ecs_cluster.MyService.id tags = { "Name" = "MyService" "Environment" = "Production" "Department" = "QualityAssurance" } }

Passaggi successivi

È possibile aggiungere tag al servizio. Per ulteriori informazioni, consultare Aggiunta di tag alle risorse Amazon ECS.

Se si desidera che Amazon ECS propaghi i tag dalla definizione dell'attività o dal servizio all'attività, eseguire update-service con il parametro propagateTags. Per ulteriori informazioni, consultare update-service nella Documentazione di riferimento di AWS Command Line Interface.

Risoluzione dei problemi

Alcuni utenti potrebbero riscontrare il seguente errore durante la migrazione dal formato ARN corto al formato ARN lungo.

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 l'impostazione dell'account serviceLongArnFormat è già stata abilitata ma questo errore continua a verificarsi, è possibile che le impostazioni dell'account per il formato ARN lungo non siano state abilitate per il principale IAM specifico che ha originariamente creato il servizio.

  1. Identificare il principale che ha creato il servizio.

    1. Nella console, le informazioni sono disponibili nel campo Creato da nella scheda Configurazione e rete nella pagina dei dettagli del servizio nella console Amazon ECS.

    2. Per la AWS CLI, eseguire il seguente comando:

      Sostituire user-input con i propri valori.

      aws ecs describe-services --cluster cluster-name --services service-name --query 'services[0].{createdBy: createdBy}'
  2. Abilitare le impostazioni dell'account richieste per quel principale specifico. Questa operazione può essere eseguita in uno dei seguenti modi:

    1. Assumere il ruolo o l'utente IAM per quel principale. Quindi eseguire put-account-setting.

    2. Usare l'utente root per eseguire il comando specificando il principale di creazione con principal-arn.

      Esempio.

      Sostituire principal-arn con il valore dalla Fase 1.

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

Entrambi i metodi abilitano l'impostazione dell'account serviceLongArnFormat richiesta sul principale che ha creato il servizio, il che consente di procedere con la migrazione dell'ARN.