Migrer un ARN court de service Amazon ECS vers un ARN long - Amazon Elastic Container Service

Migrer un ARN court de service Amazon ECS vers un ARN long

Amazon ECS attribue un Amazon Resource Name (ARN) unique à chaque service. Les services créés avant 2021 ont un format ARN court :

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

Amazon ECS a modifié le format ARN pour inclure le nom du cluster. Ceci est un format ARN long :

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

Pour pouvoir baliser votre service, il doit avoir le format ARN long.

Vous pouvez procéder à la migration d’un service au format ARN court vers le format ARN long sans avoir à recréer le service. Vous pouvez utiliser l’API, la CLI ou la console. Vous ne pouvez pas annuler l’opération de migration.

Le processus de migration est transparent et garantit une durée d’indisponibilité nulle pour votre service. Pendant la migration :

  • Disponibilité du service : votre service continue de fonctionner normalement sans interruption du trafic ou des fonctionnalités.

  • Tâches en cours : les tâches existantes continuent de s’exécuter sans interruption. Les nouvelles tâches lancées après la migration utiliseront le format ARN long si le paramètre du compte taskLongArnFormat est activé.

  • Instances de conteneur : les instances de conteneur ne sont pas affectées par la migration de l’ARN du service et continuent de fonctionner normalement.

  • Configuration du service : tous les paramètres du service, y compris la définition des tâches, la mise en réseau et les configurations de l’équilibreur de charge, restent inchangés.

Si vous souhaitez utiliser CloudFormation pour étiqueter un service au format ARN court, vous devez procéder à la migration du service à l’aide de l’API, de la CLI ou de la console. Une fois la migration terminée, vous pouvez utiliser CloudFormation pour étiqueter le service.

Si vous souhaitez utiliser Terraform pour étiqueter un service avec un format ARN court, vous devez procéder à la migration du service à l’aide de l’API, de la CLI ou de la console. Une fois la migration terminée, vous pouvez utiliser Terraform pour étiqueter le service.

Une fois la migration terminée, le service comporte les changements suivants :

  • Le format ARN long

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

  • Lorsque vous effectuez une migration à l’aide de la console, Amazon ECS ajoute une balise au service dont la clé est définie sur « ecs:serviceArnMigratedAt » et la valeur sur l’horodatage de la migration (au format UTC).

    Cette balise est prise en compte dans votre quota de balises.

  • Lorsque le PhysicalResourceId dans une pile CloudFormation représente un ARN de service, la valeur ne change pas et reste l’ARN court du service.

Prérequis

Effectuez les opérations suivantes avant de procéder à la migration de l’ARN du service.

  1. Pour savoir si vous avez un ARN court de service, consultez les détails du service dans la console Amazon ECS (un avertissement s’affiche lorsque le service utilise le format d’ARN court) ou le paramètre de retour serviceARN renvoyé par describe-services. Lorsque l’ARN n’inclut pas le nom du cluster, il s’agit d’un ARN court. Voici le format d’un ARN court :

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

  2. Notez la date de création.

  3. Si vous avez des politiques IAM qui utilisent le format ARN court, mettez-les à jour pour passer au format ARN long.

    Remplacez chaque espace réservé à la saisie de l’utilisateur par vos propres informations.

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

    Pour plus d’informations, consultez la section Modification des politiques IAM dans le Guide de l’utilisateur AWS Identity and Access Management.

  4. Si vous avez des outils qui utilisent le format ARN court, mettez-les à jour pour passer au format ARN long.

    Remplacez chaque espace réservé à la saisie de l’utilisateur par vos propres informations.

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

  5. Activer le format ARN long du service. Exécutez put-account-setting avec l'option serviceLongArnFormat définie à enabled. Pour plus d’informations, consultez la section put-account-setting dans la Référence de l’API Amazon Elastic Container Service.

    Exécutez la commande en tant qu’utilisateur racine lorsque votre service a une date createdAt inconnue.

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

    Exemple de sortie

    { "setting": { "name": "serviceLongArnFormat", "value": "enabled", "principalArn": "arn:aws:iam::123456789012:role/your-role", "type": user } }
  6. Activer le format ARN long de la tâche. Ce paramètre de compte contrôle le format ARN pour les nouvelles tâches lancées une fois la migration du service terminée. Exécutez put-account-setting avec l'option taskLongArnFormat définie à enabled. Pour plus d’informations, consultez la section put-account-setting dans la Référence de l’API Amazon Elastic Container Service.

    Exécutez la commande en tant qu’utilisateur racine lorsque votre service a une date createdAt inconnue.

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

    Exemple de sortie

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

    Le paramètre taskLongArnFormat ne déclenche pas directement la migration des tâches existantes. Il n’affecte que le format ARN des nouvelles tâches créées après l’activation du paramètre. Les tâches en cours d’exécution existantes conservent leur format ARN actuel jusqu’à ce qu’elles soient remplacées dans le cadre d’opérations de service normales (telles que des déploiements ou des activités de mise à l’échelle).

Procédure

Suivez les instructions suivantes pour procéder à la migration de votre ARN de service.

  1. Ouvrez la console à partir de l'adresse https://console.aws.amazon.com/ecs/v2.

  2. Sur la page Clusters, choisissez le cluster.

  3. Dans la section Services, choisissez un service dont la colonne ARN contient un avertissement.

    La page de détails du service s’affiche.

  4. Choisissez Procéder à la migration vers un ARN long.

    La boîte de dialogue de « Procéder à la migration du service » s’affiche.

  5. Choisissez Migrate (Migrer).

Une fois les conditions préalables remplies, vous pouvez étiqueter votre service. Exécutez la commande suivante :

Amazon ECS envisage de transmettre le format d’ARN long dans une requête d’API tag-resource pour un service avec un ARN court comme signal de migration du service afin d’utiliser le format d’ARN long.

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

L’exemple suivant étiquette MyService avec une balise dont la clé est définie sur « TestService » et la valeur sur « WebServers » :

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

Une fois les conditions préalables remplies, vous pouvez étiqueter votre service. Créez une ressource aws_ecs_service et définissez la référence tags. Pour plus d’informations, consultez la section Resource : aws_ecs_service dans la documentation de Terraform.

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

Étapes suivantes

Vous pouvez ajouter des balises au service. Pour de plus amples informations, consultez Ajout de balises aux ressources Amazon ECS.

Si vous souhaitez qu’Amazon ECS propage les balises de la définition de tâche ou du service dans la tâche, exécutez update-service avec le paramètre propagateTags. Pour plus d’informations, consultez la section update-service dans la Référence AWS Command Line Interface.

Dépannage

Certains utilisateurs peuvent rencontrer l’erreur suivante lorsqu’ils procèdent à la migration du format d’ARN court vers le format d’ARN long.

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.

Si vous avez déjà activé les paramètres du compte serviceLongArnFormat, mais que vous rencontrez toujours cette erreur, cela peut être dû au fait que les paramètres du compte pour le format ARN long n’ont pas été activés pour le principal IAM qui a initialement créé le service.

  1. Identifiez le principal qui a créé le service.

    1. Dans la console, les informations sont disponibles dans le champ Créé par de l’onglet Configuration et mise en réseau de la page « Détails du service » de la console Amazon ECS.

    2. Pour l’AWS CLI, exécutez la commande suivante :

      Remplacez chaque saisie utilisateur par vos valeurs.

      aws ecs describe-services --cluster cluster-name --services service-name --query 'services[0].{createdBy: createdBy}'
  2. Activez les paramètres de compte requis pour ce principal spécifique. Vous pouvez effectuer cette opération de différentes manières :

    1. Assumez le rôle ou l’utilisateur IAM pour ce principal. Ensuite, exécutez put-account-setting.

    2. Utilisez l’utilisateur racine pour exécuter la commande tout en spécifiant le principal créateur avec le principal-arn.

      Exemple.

      Remplacez le principal-arn par la valeur obtenue à l’étape 1 :

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

Les deux méthodes activent le paramètre de compte serviceLongArnFormat requis sur le principal qui a créé le service, ce qui permet de procéder à la migration de l’ARN.