

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à.

# Risolvi i problemi di distribuzione di Amazon ECS
<a name="troubleshooting-ecs"></a>

**Topics**
+ [Si verifica un timeout durante l'attesa del set di attività sostitutivo](#troubleshooting-ecs-timeout)
+ [Si verifica un timeout durante l'attesa del proseguimento della notifica](#troubleshooting-ecs-timeout-notif)
+ [Il ruolo IAM non dispone di autorizzazioni sufficienti](#troubleshooting-ecs-iam)
+ [La distribuzione è scaduta in attesa di una richiamata dello stato](#troubleshooting-ecs-timeout-callback)
+ [L'implementazione non è riuscita perché una o più funzioni di convalida degli eventi del ciclo di vita non sono riuscite](#troubleshooting-ecs-lifecycle)
+ [L'ELB non può essere aggiornato a causa del seguente errore: Il gruppo target del taskset primario deve essere dietro il listener](#troubleshooting-ecs-elb)
+ [La mia implementazione a volte fallisce quando utilizzo Auto Scaling](#troubleshooting-ecs-auto-scaling)
+ [Solo ALB supporta il routing graduale del traffico, utilizza invece il routing AllAtOnce del traffico quando utilizzi il gruppo Deployment create/update](#troubleshooting-ecs-lb)
+ [Anche se la mia implementazione è riuscita, il set di attività sostitutivo non supera i controlli di integrità di Elastic Load Balancing e la mia applicazione è inattiva](#troubleshooting-ecs-task-set-stability)
+ [Posso collegare più sistemi di bilanciamento del carico a un gruppo di distribuzione?](#troubleshooting-ecs-lb-multi)
+ [Posso eseguire distribuzioni CodeDeploy blu/verdi senza un sistema di bilanciamento del carico?](#troubleshooting-ecs-lb-bg)
+ [Come posso aggiornare il mio servizio Amazon ECS con nuove informazioni durante una distribuzione?](#troubleshooting-ecs-exec)

## Si verifica un timeout durante l'attesa del set di attività sostitutivo
<a name="troubleshooting-ecs-timeout"></a>

**Problema**: viene visualizzato il seguente messaggio di errore durante la distribuzione dell'applicazione Amazon ECS utilizzando: CodeDeploy

`The deployment timed out while waiting for the replacement task set to become healthy. This time out period is 60 minutes.`

**Possibile causa**: questo errore può verificarsi in caso di errore nel file di definizione delle attività o in altri file relativi alla distribuzione. Ad esempio, se c'è un errore di battitura nel `image` campo del file di definizione dell'attività, Amazon ECS cercherà di recuperare l'immagine del contenitore sbagliata e fallirà continuamente, causando questo errore.

**Possibili correzioni e passaggi successivi**:
+ Correggi gli errori tipografici e i problemi di configurazione nel file di definizione delle attività e in altri file.
+ Controlla l'evento relativo al servizio Amazon ECS e scopri perché le attività di sostituzione non stanno diventando salutari. Per ulteriori informazioni sugli eventi di Amazon ECS, consulta gli eventi di [Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_cwe_events.html) nella *Amazon Elastic Container Service Developer Guide*.
+ Consulta la sezione [sulla risoluzione dei problemi di Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/troubleshooting.html) nella *Amazon Elastic Container Service Developer Guide* per gli errori relativi ai messaggi dell'evento.

## Si verifica un timeout durante l'attesa del proseguimento della notifica
<a name="troubleshooting-ecs-timeout-notif"></a>

**Problema**: viene visualizzato il seguente messaggio di errore durante la distribuzione dell'applicazione Amazon ECS utilizzando: CodeDeploy

 `The deployment timed out while waiting for a notification to continue. This time out period is n minutes.` 

**Causa possibile**: questo errore potrebbe verificarsi se hai specificato un tempo di attesa nel campo **Specificare quando reindirizzare il traffico quando hai creato il gruppo di distribuzione, ma la distribuzione non è potuta** terminare prima della scadenza del tempo di attesa.

**Possibili correzioni e passaggi successivi**:
+ Nel gruppo di distribuzione, imposta **Specificare quando reindirizzare il traffico** a un periodo di tempo maggiore e ridistribuire. Per ulteriori informazioni, consulta [Crea un gruppo di distribuzione per una distribuzione Amazon ECS (console)](deployment-groups-create-ecs.md).
+ **Nel gruppo di distribuzione, modifica **Specificare quando reindirizzare il traffico in Reindirizzare immediatamente il traffico e ridistribuire**.** Per ulteriori informazioni, consulta [Crea un gruppo di distribuzione per una distribuzione Amazon ECS (console)](deployment-groups-create-ecs.md).
+ Ridistribuisci e quindi esegui il comando con l'opzione impostata su. [https://docs.aws.amazon.com/cli/latest/reference/deploy/continue-deployment.html](https://docs.aws.amazon.com/cli/latest/reference/deploy/continue-deployment.html) AWS CLI `--deployment-wait-type``READY_WAIT` Assicuratevi di eseguire questo comando *prima* della scadenza dell'orario specificato in **Specificare quando reindirizzare il traffico**.

## Il ruolo IAM non dispone di autorizzazioni sufficienti
<a name="troubleshooting-ecs-iam"></a>

**Problema**: viene visualizzato il seguente messaggio di errore durante la distribuzione dell'applicazione Amazon ECS utilizzando: CodeDeploy

 `The IAM role role-arn does not give you permission to perform operations in the following AWS service: AWSLambda.` 

**Causa possibile**: questo errore potrebbe verificarsi se hai specificato una funzione Lambda nella [`Hooks`sezione del AppSpec file](reference-appspec-file-structure-hooks.md#appspec-hooks-ecs), ma non hai dato l' CodeDeploy autorizzazione al servizio Lambda.

**Correzione possibile**: aggiungere l'`lambda:InvokeFunction`autorizzazione al ruolo di CodeDeploy servizio. Per aggiungere questa autorizzazione, aggiungi una delle seguenti politiche AWS gestite al ruolo: **AWSCodeDeployRoleForECS** oppure**AWSCodeDeployRoleForECSLimited**. Per informazioni su queste politiche e su come aggiungerle al ruolo di CodeDeploy servizio, consulta[Fase 2: Creare un ruolo di servizio per CodeDeploy](getting-started-create-service-role.md).

## La distribuzione è scaduta in attesa di una richiamata dello stato
<a name="troubleshooting-ecs-timeout-callback"></a>

**Problema**: viene visualizzato il seguente messaggio di errore durante la distribuzione dell'applicazione Amazon ECS utilizzando: CodeDeploy

 `The deployment timed out while waiting for a status callback. CodeDeploy expects a status callback within one hour after a deployment hook is invoked.` 

**Possibile causa**: questo errore potrebbe verificarsi se hai specificato una funzione Lambda nella [`Hooks`sezione del AppSpec file](reference-appspec-file-structure-hooks.md#appspec-hooks-ecs), ma la funzione Lambda non è in grado di chiamare l'`PutLifecycleEventHookExecutionStatus`API necessaria per restituire uno `Succeeded` stato or. `Failed` CodeDeploy

**Possibili correzioni e passaggi successivi**:
+ Aggiungi l'`codedeploy:putlifecycleEventHookExecutionStatus`autorizzazione al ruolo di esecuzione Lambda utilizzato dalla funzione Lambda che hai specificato nel file. AppSpec Questa autorizzazione concede alla funzione Lambda la possibilità di restituire uno stato `Succeeded` di `Failed` o a. CodeDeploy *Per ulteriori informazioni sul ruolo di esecuzione Lambda, consulta Ruolo di esecuzione [Lambda nella Guida per l'](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html)utente.AWS Lambda * 
+ Controlla il codice della funzione Lambda e i log di esecuzione per assicurarti che la funzione Lambda stia chiamando l'`PutLifecycleEventHookExecutionStatus`API per CodeDeploy sapere se il test di convalida CodeDeploy del ciclo di vita è o meno. `Succeeded` `Failed` *Per informazioni sull'API, consulta l'`putlifecycleEventHookExecutionStatus`API Reference. [PutLifecycleEventHookExecutionStatus](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_PutLifecycleEventHookExecutionStatus.html)AWS CodeDeploy * Per informazioni sui log di esecuzione Lambda, consulta Accedere ai log di [Amazon CloudWatch ](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-cloudwatchlogs.html) per. AWS Lambda

## L'implementazione non è riuscita perché una o più funzioni di convalida degli eventi del ciclo di vita non sono riuscite
<a name="troubleshooting-ecs-lifecycle"></a>

**Problema**: viene visualizzato il seguente messaggio di errore durante la distribuzione dell'applicazione Amazon ECS utilizzando: CodeDeploy

`The deployment failed because one or more of the lifecycle event validation functions failed.`

**Causa possibile**: questo errore potrebbe verificarsi se hai specificato una funzione Lambda nella [`Hooks`sezione del AppSpec file](reference-appspec-file-structure-hooks.md#appspec-hooks-ecs), ma la funzione Lambda è tornata `Failed` a CodeDeploy quando è stata chiamata. `PutLifecycleEventHookExecutionStatus` Questo errore indica CodeDeploy che il test di convalida del ciclo di vita non è riuscito.

**Possibile passaggio successivo**: controlla i log di esecuzione di Lambda per scoprire perché il codice del test di convalida non funziona. Per informazioni sui log di esecuzione Lambda, consulta Accedere ai log di [Amazon CloudWatch ](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-cloudwatchlogs.html) per. AWS Lambda

## L'ELB non può essere aggiornato a causa del seguente errore: Il gruppo target del taskset primario deve essere dietro il listener
<a name="troubleshooting-ecs-elb"></a>

**Problema**: viene visualizzato il seguente messaggio di errore durante la distribuzione dell'applicazione Amazon ECS utilizzando: CodeDeploy

`The ELB could not be updated due to the following error: Primary taskset target group must be behind listener`

**Possibile causa**: questo errore può verificarsi se hai configurato un listener di test opzionale e questo è configurato con un gruppo target errato. Per ulteriori informazioni sul test listener in CodeDeploy, vedere [Prima di iniziare una distribuzione di Amazon ECS](deployment-steps-ecs.md#deployment-steps-prerequisites-ecs) e. [Cosa succede durante una distribuzione di Amazon ECS](deployment-steps-ecs.md#deployment-steps-what-happens) Per ulteriori informazioni sui set di attività, consulta il *riferimento [TaskSet](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_TaskSet.html)all'API di Amazon Elastic Container Service* e [describe-task-set](https://docs.aws.amazon.com/cli/latest/reference/ecs/describe-task-set.html)la sezione Amazon ECS del *AWS CLI Command Reference*.

**Possibile soluzione**: assicurati che il listener di produzione e il listener di test di Elastic Load Balancing puntino entrambi al gruppo target che attualmente serve i tuoi carichi di lavoro. Esistono tre punti da controllare:
+ In Amazon EC2, nelle impostazioni dei **listener** e delle regole del sistema di bilanciamento del carico. *Per ulteriori informazioni, consulta [Listeners for your Application Load Balancers](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html) nella *User Guide for Application Load Balancers o Listeners for your Network Load Balancers* [nella User Guide for Network Load Balancers](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-listeners.html).*
+ In Amazon ECS, nel tuo cluster, nella configurazione di **rete** del tuo servizio. Per ulteriori informazioni, consulta le considerazioni su [Application Load Balancer e Network Load Balancer](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#alb-considerations) nella *Amazon Elastic Container Service Developer* Guide.
+ In CodeDeploy, nelle impostazioni del gruppo di distribuzione. Per ulteriori informazioni, consulta [Crea un gruppo di distribuzione per una distribuzione Amazon ECS (console)](deployment-groups-create-ecs.md).

## La mia implementazione a volte fallisce quando utilizzo Auto Scaling
<a name="troubleshooting-ecs-auto-scaling"></a>

**Problema**: state utilizzando Auto Scaling con CodeDeploy e notate che le vostre implementazioni a volte falliscono. Per ulteriori informazioni sui sintomi di questo problema, consulta l'argomento «[Per i servizi configurati per utilizzare il service auto scaling e il tipo di blue/green distribuzione, l'auto scaling non è bloccato durante una distribuzione ma la distribuzione potrebbe non riuscire in alcune circostanze](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-bluegreen.html#deployment-type-bluegreen-considerations)» nella *Amazon Elastic Container Service* Developer Guide.

**Possibile causa**: questo problema potrebbe verificarsi in caso di conflitto tra CodeDeploy i processi di Auto Scaling.

**Possibile correzione**: sospendere e riprendere i processi di Auto Scaling durante la distribuzione utilizzando CodeDeploy l'API (o `RegisterScalableTarget` il `register-scalable-target` AWS CLI comando corrispondente). Per ulteriori informazioni, vedere [Suspend and resume scaling for Application Auto Scaling nella Application Auto](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-suspend-resume-scaling.html) Scaling User *Guide*.

**Nota**  
CodeDeploy non posso chiamare direttamente. `RegisterScaleableTarget` Per utilizzare questa API, devi configurare CodeDeploy l'invio di una notifica o di un evento ad Amazon Simple Notification Service (o Amazon CloudWatch). È quindi necessario configurare Amazon SNS (or CloudWatch) per chiamare una funzione Lambda e configurare la funzione Lambda per chiamare l'API. `RegisterScalableTarget` L'`RegisterScalableTarget`API deve essere chiamata con il `SuspendedState` parametro impostato su per `true` sospendere le operazioni di Auto Scaling `false` e per riprenderle.  
La notifica o l'evento CodeDeploy inviato deve verificarsi all'avvio di una distribuzione (per attivare le operazioni di sospensione di Auto Scaling) o quando una distribuzione ha esito positivo, fallisce o si interrompe (per attivare le operazioni di ripristino di Auto Scaling).   
Per informazioni su come configurare la generazione CodeDeploy di notifiche o CloudWatch eventi Amazon SNS, consulta. e[Monitoraggio delle distribuzioni con Amazon Events CloudWatch](monitoring-cloudwatch-events.md). [Monitoraggio delle distribuzioni con le notifiche degli eventi di Amazon SNS](monitoring-sns-event-notifications.md)

## Solo ALB supporta il routing graduale del traffico, utilizza invece il routing AllAtOnce del traffico quando utilizzi il gruppo Deployment create/update
<a name="troubleshooting-ecs-lb"></a>

**Problema**: durante la creazione o l'aggiornamento di un gruppo di distribuzione viene visualizzato il seguente messaggio di errore in: CodeDeploy

 `Only ALB supports gradual traffic routing, use AllAtOnce Traffic routing instead when you create/update Deployment group.` 

**Causa possibile**: questo errore potrebbe verificarsi se si utilizza un Network Load Balancer e si tenta di utilizzare una configurazione di distribuzione predefinita diversa da. `CodeDeployDefault.ECSAllAtOnce`

**Possibili soluzioni.**
+ Modifica la configurazione di distribuzione predefinita in. `CodeDeployDefault.ECSAllAtOnce` Questa è l'unica configurazione di distribuzione predefinita supportata da Network Load Balancers.

  Per ulteriori informazioni sulle configurazioni di distribuzione predefinite, vedere. [Configurazioni di distribuzione predefinite per una piattaforma di calcolo Amazon ECS](deployment-configurations.md#deployment-configurations-predefined-ecs)
+ Cambia il tuo load balancer in un Application Load Balancer. Gli Application Load Balancer supportano tutte le configurazioni di distribuzione predefinite. Per ulteriori informazioni sulla creazione di un Application Load Balancer, vedere. [Configura un sistema di bilanciamento del carico, gruppi target e listener per le distribuzioni di CodeDeploy Amazon ECS](deployment-groups-create-load-balancer-for-ecs.md)

## Anche se la mia implementazione è riuscita, il set di attività sostitutivo non supera i controlli di integrità di Elastic Load Balancing e la mia applicazione è inattiva
<a name="troubleshooting-ecs-task-set-stability"></a>

**Problema**: anche se CodeDeploy indica che la mia distribuzione è riuscita, il set di attività sostitutivo non supera i controlli di integrità di Elastic Load Balancing e la mia applicazione è inattiva.

**Possibile causa**: questo problema potrebbe verificarsi se hai eseguito una CodeDeploy all-at-once distribuzione e il set di attività sostitutivo (verde) contiene codice errato che causa il fallimento dei controlli di integrità di Elastic Load Balancing. Con la configurazione di all-at-once distribuzione, i controlli di integrità del load balancer iniziano a essere eseguiti sul set di attività sostitutivo *dopo* che il traffico è stato spostato su di esso (ovvero, *dopo* che si verifica l'evento CodeDeploy del `AllowTraffic` ciclo di vita). Ecco perché, dopo lo spostamento del traffico, i controlli dello stato di salute dell'operazione sostitutiva impostata non funzioneranno, ma non prima. Per informazioni sugli eventi del ciclo di vita generati, consulta. CodeDeploy [Cosa succede durante una distribuzione di Amazon ECS](deployment-steps-ecs.md#deployment-steps-what-happens)

**Possibili soluzioni.**
+ Modificate la configurazione di distribuzione da canaria all-at-once a lineare. *In una configurazione canaria o lineare, i controlli di integrità del sistema di bilanciamento del carico iniziano a essere eseguiti sul set di attività sostitutivo durante l' CodeDeploy installazione dell'applicazione nell'ambiente sostitutivo e *prima che il traffico venga* spostato (ovvero durante l'evento del `Install` ciclo di vita e prima dell'evento).* `AllowTraffic` Consentendo l'esecuzione dei controlli durante l'installazione dell'applicazione ma prima che il traffico venga spostato, verrà rilevato un codice applicativo errato che causerà errori di distribuzione prima che l'applicazione diventi disponibile al pubblico.

  Per informazioni su come configurare le distribuzioni canarie o lineari, vedere. [Modifica le impostazioni del gruppo di distribuzione con CodeDeploy](deployment-groups-edit.md) 

  Per informazioni sugli eventi CodeDeploy del ciclo di vita che si verificano durante una distribuzione Amazon ECS, consulta. [Cosa succede durante una distribuzione di Amazon ECS](deployment-steps-ecs.md#deployment-steps-what-happens)
**Nota**  
Le configurazioni di distribuzione canarie e lineari sono supportate solo con Application Load Balancers.
+ Se desideri mantenere la configurazione di all-at-once distribuzione, configura un listener di test e controlla lo stato di integrità del set di attività sostitutivo con il lifecycle hook. `BeforeAllowTraffic` Per ulteriori informazioni, consulta [Elenco di eventi del ciclo di vita per una distribuzione Amazon ECS](reference-appspec-file-structure-hooks.md#reference-appspec-file-structure-hooks-list-ecs).

## Posso collegare più sistemi di bilanciamento del carico a un gruppo di distribuzione?
<a name="troubleshooting-ecs-lb-multi"></a>

No. Se desideri utilizzare più Application Load Balancer o Network Load Balancer, utilizza gli aggiornamenti periodici di Amazon ECS anziché le distribuzioni blu/verdi. CodeDeploy Per ulteriori informazioni sugli aggiornamenti periodici, consulta [Rolling update](https://docs.aws.amazon.com/AmazonECS/latest/userguide/deployment-type-ecs.html) nella *Amazon Elastic Container Service Developer Guide*. Per ulteriori informazioni sull'utilizzo di più sistemi di bilanciamento del carico con Amazon ECS, consulta [Registrazione di più gruppi target con un servizio nella](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/register-multiple-targetgroups.html) *Amazon Elastic Container* Service Developer Guide.

## Posso eseguire distribuzioni CodeDeploy blu/verdi senza un sistema di bilanciamento del carico?
<a name="troubleshooting-ecs-lb-bg"></a>

No, non è possibile eseguire distribuzioni CodeDeploy blu/verdi senza un sistema di bilanciamento del carico. Se non riesci a utilizzare un sistema di bilanciamento del carico, utilizza invece la funzionalità di aggiornamento progressivo di Amazon ECS. Per ulteriori informazioni sugli aggiornamenti progressivi di Amazon ECS, consulta [Rolling update](https://docs.aws.amazon.com/AmazonECS/latest/userguide/deployment-type-ecs.html) nella *Amazon Elastic Container Service Developer Guide*.

## Come posso aggiornare il mio servizio Amazon ECS con nuove informazioni durante una distribuzione?
<a name="troubleshooting-ecs-exec"></a>

Per fare in modo che il servizio Amazon ECS venga CodeDeploy aggiornato con un nuovo parametro mentre esegue una distribuzione, specifica il parametro nella `resources` sezione del AppSpec file. Sono supportati solo alcuni parametri di Amazon ECS CodeDeploy, come i parametri del file di definizione delle attività e del nome del contenitore. Per un elenco completo dei parametri Amazon ECS che CodeDeploy possono essere aggiornati, consulta[AppSpec sezione «risorse» per le distribuzioni di Amazon ECS](reference-appspec-file-structure-resources.md#reference-appspec-file-structure-resources-ecs).

**Nota**  
Se devi aggiornare il tuo servizio Amazon ECS con un parametro non supportato da CodeDeploy, completa queste attività:  
Chiama l'`UpdateService`API di Amazon ECS con il parametro che desideri aggiornare. Per un elenco completo dei parametri che possono essere aggiornati, consulta [UpdateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html)*Amazon Elastic Container Service API Reference*. 
Per applicare la modifica alle attività, crea una nuova blue/green distribuzione Amazon ECS. Per ulteriori informazioni, consulta [Crea un'implementazione di Amazon ECS Compute Platform (console)](deployments-create-console-ecs.md).