

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Eseguire la migrazione di un ARN di servizio breve di Amazon ECS in un ARN lungo
<a name="service-arn-migration"></a>

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 desideri utilizzare per CloudFormation etichettare un servizio con un formato ARN breve, devi migrare il servizio utilizzando l'API, la CLI o la console. Una volta completata la migrazione, puoi 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 esegui la migrazione utilizzando la console, Amazon ECS aggiunge un tag al servizio con la chiave impostata su «ecs: serviceArnMigrated At» e il valore impostato sul timestamp della migrazione (formato UTC).

  Questo tag viene conteggiato ai fini della quota di tag.
+ Quando `PhysicalResourceId` in uno CloudFormation stack rappresenta un ARN di servizio, il valore non cambia e continuerà a essere l'ARN del servizio breve. 

## Prerequisiti
<a name="migrate-service-arn-prerequisite"></a>

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`

1. Si noti la data di creazione.

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

   Sostituisci ogni *user input placeholder* con le tue informazioni.

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

   *Per ulteriori informazioni, consulta [Modifica delle politiche IAM nella Guida](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html) per l' AWS Identity and Access Management utente.*

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

   Sostituisci ogni *user input placeholder* con le tue informazioni.

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

1. Abilitare il formato ARN lungo del servizio. Esegui `put-account-setting` con l'opzione `serviceLongArnFormat` impostata su `enabled`. Per ulteriori informazioni, [put-account-setting](https://docs.aws.amazon.com/cli/latest/reference/ecs/put-account-setting.html)consulta la sezione *Amazon Elastic Container Service API Reference*.

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

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

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

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

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

1. Apri la console nella [https://console.aws.amazon.com/ecs/versione 2](https://console.aws.amazon.com/ecs/v2).

1. Nella pagina **Cluster**, scegliere il cluster.

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

   Si apre la pagina dei dettagli del servizio.

1. Scegliere **Migra a un ARN lungo.**

   Appare la finestra di dialogo Migra servizio.

1. Scegliere **Migrate (Migrazione)**.

### CLI
<a name="migrate-service-arn-procedure-cli"></a>

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 contrassegna MyService con un tag con 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
```

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

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\$1ecs\$1service](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/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"
  }
}
```

### Fasi successive
<a name="tag-next-steps"></a>

È possibile aggiungere tag al servizio. Per ulteriori informazioni, consultare [Aggiunta di tag alle risorse Amazon ECS](tag-resources-console.md).

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, vedere [update-service nel Reference](https://docs.aws.amazon.com/cli/latest/reference/ecs/update-service.html). AWS Command Line Interface *

## Risoluzione dei problemi
<a name="troubleshooting-arn-migration"></a>

 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. 

   1. Per la AWS CLI, esegui il seguente comando:

      Sostituisci *user-input* con i tuoi valori.

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

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

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

      Esempio.

      Sostituisci *principal-arn* con il valore del passaggio 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. 