

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Migration d’un ARN court de service Amazon ECS vers un ARN long
<a name="service-arn-migration"></a>

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, celui-ci doit avoir un format d’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 l'utiliser CloudFormation pour étiqueter un service au format ARN court, vous devez migrer le service à l'aide de l'API, de la CLI ou de la console. Une fois la migration terminée, vous pouvez l'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 : serviceArnMigrated At » et la valeur sur l'horodatage de la migration (format UTC).

  Cette balise est prise en compte dans votre quota de balises.
+ Lorsque le `PhysicalResourceId` in a CloudFormation stack représente un ARN de service, la valeur ne change pas et restera l'ARN du service court. 

## Conditions préalables
<a name="migrate-service-arn-prerequisite"></a>

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`

1. Notez la date de création.

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

   Remplacez chaque *user input placeholder* 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html) dans le *guide de l' Gestion des identités et des accès AWS utilisateur*.

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

   Remplacez chaque *user input placeholder* par vos propres informations.

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

1. Activer le format ARN long du service. Exécutez `put-account-setting` avec l'option `serviceLongArnFormat` définie à `enabled`. Pour plus d'informations, [put-account-setting](https://docs.aws.amazon.com/cli/latest/reference/ecs/put-account-setting.html)consultez le manuel *Amazon Elastic Container Service API Reference*.

   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
       }
   }
   ```

1. 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, [put-account-setting](https://docs.aws.amazon.com/cli/latest/reference/ecs/put-account-setting.html)consultez le manuel *Amazon Elastic Container Service API Reference*.

   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
<a name="migrate-service-arn-procedure"></a>

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

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

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Sur la page **Clusters**, choisissez le cluster.

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

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

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

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

1. Choisissez **Migrate (Migrer)**.

### INTERFACE DE LIGNE DE COMMANDE (CLI)
<a name="migrate-service-arn-procedure-cli"></a>

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

Voici quelques exemples de balises MyService 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
```

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

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\$1ecs\$1service](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/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
<a name="tag-next-steps"></a>

Vous pouvez ajouter des balises au service. Pour de plus amples informations, veuillez consulter [Ajout de balises aux ressources Amazon ECS](tag-resources-console.md).

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, voir [update-service](https://docs.aws.amazon.com/cli/latest/reference/ecs/update-service.html) dans la AWS Command Line Interface référence.*

## Résolution des problèmes
<a name="troubleshooting-arn-migration"></a>

 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. 

   1. Pour le AWS CLI, exécutez la commande suivante :

      Remplacez le *user-input* par vos valeurs.

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

1. 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`. 

   1.  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 de 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. 