Come si risolve l'errore "unable to pull secrets or registry auth" in Amazon ECS?

8 minuti di lettura
0

Ricevo un messaggio di errore "unable to pull secrets or registry auth" quando avvio un'attività Amazon Elastic Container Service (Amazon ECS).

Breve descrizione

Quando avvii un'attività Amazon ECS, ricevi uno dei seguenti messaggi di errore:

  • "ResourceInitializationError: unable to pull secrets or registry auth: pull command failed: : signal: killed"
  • "ResourceInitializationError: unable to pull secrets or registry auth: execution resource retrieval failed: unable to retrieve secret from asm: service call has been retried."

La versione 1.4.0 della piattaforma AWS Fargate utilizza l'interfaccia di rete elastica dell'attività per recuperare l'immagine e i segreti. Tutto il traffico di rete fluisce attraverso l'interfaccia di rete elastica all'interno del tuo Amazon Virtual Private Cloud (Amazon VPC). Puoi visualizzare questo traffico tramite i log Amazon VPC Flow. Tuttavia, l'attività utilizza la configurazione di rete perché le interfacce di rete elastiche sono collocate all'interno dell’Amazon VPC.

L'agente container Amazon ECS utilizza il ruolo AWS Identity and Access Management (IAM) di esecuzione delle attività per ottenere informazioni dai seguenti servizi:

  • Archivio dei parametri AWS Systems Manager
  • AWS Secrets Manager

Se crittografi i dati utilizzando una chiave del Servizio AWS di gestione delle chiavi (AWS KMS) gestita dal cliente, concedi le seguenti autorizzazioni al ruolo IAM di esecuzione delle attività:

  • ssm:GetParameters
  • secretsmanager:GetSecretValue
  • kms:Decrypt

Risoluzione

Usa il runbook AWSSupport-TroubleshootECSTaskFailedToStart per risolvere i problemi delle attività Amazon ECS che non vengono avviate. Se l'output del runbook non fornisce consigli, utilizza gli approcci manuali per la risoluzione dei problemi nella sezione seguente.

Importante:

  • Usa il runbook nella stessa regione AWS in cui si trovano le risorse del tuo cluster ECS.
  • Quando usi il runbook, utilizza l'ID dell'attività non riuscita più recente in modo che la pulizia dello stato dell'attività non interrompa l'analisi durante l'automazione. Se l'attività non riuscita fa parte del servizio Amazon ECS, utilizza l'ultima attività non riuscita nel servizio. L'attività non riuscita deve essere visibile in ECS:DescribeTasks durante l'esecuzione dell'automazione. Per impostazione predefinita, le attività ECS interrotte sono visibili per 1 ora dopo il passaggio allo stato Interrotta.

Uso del runbook TroubleshootECSTaskFailedToStart runbook

Per eseguire il runbook AWSSupport-TroubleshootECSTaskFailedToStart, completa i seguenti passaggi:

  1. Apri la console AWS Systems Manager.
  2. Nel riquadro di navigazione, in Gestione delle modifiche, scegli Automazione.
  3. Scegli Esegui automazione.
  4. Seleziona la scheda Di proprietà di Amazon.
  5. Nel documento di automazione, cerca TroubleshootECSTaskFailedToStart.
  6. Seleziona la scheda AWSSupport-TroubleshootECSTaskFailedToStart.
    Nota: assicurati di selezionare il pulsante di opzione sulla scheda e non il nome dell'automazione con collegamento ipertestuale.
  7. Seleziona Avanti.
    Nota: dopo l'esecuzione, i risultati dell'analisi vengono inseriti nella sezione Output globale. Tuttavia, attendi che lo stato del documento passi a Operazione riuscita. Inoltre, controlla eventuali eccezioni nella sezione Output.
  8. Per Esegui documento automazione, seleziona Esecuzione semplice.
  9. Nella sezione Parametri di input, per AutomationAssumeRole, inserisci l'ARN del ruolo che consente a Systems Manager Automation di eseguire azioni.
    Nota: assicurati che AutomationAssumeRole o l'utente o il ruolo IAM dispongano delle autorizzazioni IAM necessarie per eseguire il runbook AWSSupport-TroubleshootECSTaskFailedToStart. Se non specifichi un ruolo IAM, Systems Manager Automation utilizza le autorizzazioni dell'utente o del ruolo IAM che esegue il runbook. Per ulteriori informazioni sulla creazione del ruolo di assunzione per Systems Manager Automation, consulta Task 1: Create a service role for Automation.
  10. In ClusterName, inserisci il nome del cluster in cui l'attività non è stata avviata.
  11. In TaskId, inserisci l'identificazione dell'ultima attività non riuscita.
  12. Scegli Esegui.

In base all'output dell'automazione, utilizza una delle seguenti procedure manuali per la risoluzione dei problemi.

Controllo dei percorsi dalle sottoreti verso Internet

Se l'attività Fargate è in una sottorete pubblica, verifica che all'attività sia assegnato un indirizzo IP pubblico. Inoltre, verifica che l'attività abbia un percorso predefinito (0.0.0.0/0) verso un gateway Internet. Quando avvii una nuova attività o crei un nuovo servizio, attiva Assegna automaticamente pubblico.

Se utilizzi le seguenti configurazioni, non utilizzare il gateway Internet nella sottorete pubblica per raggiungere Secrets Manager o Systems Manager:

  • Gli endpoint VPC Secrets Manager o Systems Manager si trovano in una sottorete pubblica.
  • Hai attivato AmazonProvidedDNS nelle impostazioni DHCP di Amazon VPC.

Utilizza invece un endpoint VPC Amazon.

Nota: non puoi attivare Assegna automaticamente pubblico per le attività esistenti. Per riconfigurare i servizi esistenti, utilizza l'interfaccia della linea di comando AWS (AWS CLI). Non puoi usare la Console di gestione AWS. Se hai utilizzato uno stack AWS CloudFormation per creare il servizio Amazon ECS, modifica la proprietà NetworkConfiguration AWS::ECS::Service per aggiornare il servizio.

Se l'attività Fargate è in una sottorete privata, verifica che l'attività abbia un percorso predefinito (0.0.0.0/0) verso la fonte di connettività Internet.

La fonte di connettività Internet può essere un gateway NAT, AWS PrivateLink o un'altra fonte:

  • Se utilizzi un gateway NAT, posizionalo in una sottorete pubblica. Per ulteriori informazioni, consulta Architettura con un gateway Internet e un gateway NAT.
  • Se utilizzi PrivateLink, assicurati che la tua infrastruttura Fargate possa utilizzare i gruppi di sicurezza per i tuoi endpoint VPC Amazon.
  • Se utilizzi un server di dominio con nome personalizzato, conferma le impostazioni della query DNS. La query deve avere accesso in uscita sulla porta 53 utilizzando i protocolli UDP e TCP. Inoltre, deve avere accesso HTTPS sulla porta 443.

Controlla l'ACL di rete e le impostazioni del gruppo di sicurezza

Verifica che la lista di controllo degli accessi alla rete (ACL) e i gruppi di sicurezza non blocchino l'accesso in uscita alla porta 443 dalla sottorete. Per ulteriori informazioni, consulta la sezione Control traffic to your AWS resources using security groups.

Nota: le attività Fargate devono avere accesso in uscita alla porta 443 per consentire il traffico in uscita e accedere agli endpoint Amazon ECS.

Controlla i tuoi endpoint VPC Amazon

Se utilizzi PrivateLink, devi creare gli endpoint richiesti. I seguenti endpoint sono necessari per le versioni 1.4.0 o successive della piattaforma Fargate:

  • com.amazonaws.regione.ecr.dkr
  • com.amazonaws.region.ecr.api
  • endpoint gateway S3
  • com.amazonaws.regione.filedilog

Per ulteriori informazioni, consulta Considerations for Amazon Elastic Container Registry (Amazon ECR) VPC endpoints.

Nota: se la definizione dell’attività utilizza Secrets Manager, i parametri di Systems Manager o i file di Amazon CloudWatch Logs, potrebbe essere necessario definire gli endpoint. Per ulteriori informazioni, consulta la seguente documentazione:

Per PrivateLink, verifica che il gruppo di sicurezza di Amazon VPC consenta il traffico proveniente dal gruppo di sicurezza delle attività di Fargate o dall'intervallo CIDR VPC dell'attività Fargate sulla porta TCP 443.

Per confermare che l'infrastruttura Fargate abbia accesso al servizio, controlla le policy degli endpoint VPC e le policy degli endpoint per Amazon Simple Storage Solution (Amazon S3).

Controllo dei ruoli e delle autorizzazioni IAM

Il ruolo di esecuzione dell'attività concede le autorizzazioni necessarie al container Amazon ECS e agli agenti Fargate per effettuare chiamate API per l'attività. Fargate richiede questo ruolo quando esegui le seguenti azioni:

  • Estrai un'immagine del container da Amazon ECR.
  • Usi il driver di log awslogs.
  • Usi l'autenticazione del registro privato.
  • Usa i segreti di Secrets Manager o i parametri dell’Archivio dei parametri Systems Manager per fare riferimento a dati sensibili.

Se il tuo caso d'uso riguarda uno degli scenari precedenti, definisci le autorizzazioni richieste nel tuo ruolo di esecuzione dell'attività. Per un elenco completo delle autorizzazioni richieste, consulta Ruolo IAM di esecuzione delle attività di Amazon ECS.

Controlla le informazioni sensibili a cui si fa riferimento nella definizione delle attività di Amazon ECS

Nota: se visualizzi dei messaggi di errore quando esegui i comandi dell'interfaccia della linea di comando AWS, consulta la sezione Risolvere gli errori AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Verifica se i nomi segreti e i nomi dei parametri corrispondono ai nomi di riferimento nella definizione delle tue attività Amazon ECS. Quindi, controlla se i valori nella definizione del container corrispondono ai valori nella definizione dell'attività Amazon ECS. Per ulteriori informazioni, consulta Come posso trasmettere informazioni segrete o sensibili in modo sicuro ai container in un'attività Amazon ECS?

Se il parametro e l'attività dell’Archivio dei parametri Systems Manager si trovano nella stessa regione, utilizza l'ARN completo o il nome del segreto. Se il parametro esiste in una regione diversa, devi specificare l'ARN completo.

Per verificare il nome del parametro e l'ARN di Systems Manager, completa i seguenti passaggi:

  1. Apri la console AWS Systems Manager.
  2. Nel riquadro di navigazione, seleziona Archivio dei parametri, quindi conferma il nome dell'Archivio dei parametri.
  3. Per ottenere l'ARN del parametro, utilizza AWS CLI per eseguire il seguente comando. Sostituisci name_of_parameter_store_secret con il tuo nome segreto dell'Archivio dei parametri:
    $ aws ssm get-parameter —name <name_of_parameter_store_secret> —with-decryption
    Nota: i parametri che fanno riferimento ai segreti di Secrets Manager non possono utilizzare le funzionalità di controllo delle versioni o della cronologia dell’Archivio dei parametri. Per ulteriori informazioni, consulta Restrizioni.

Informazioni correlate

Verifica delle attività interrotte per la presenza di errori

AWS UFFICIALE
AWS UFFICIALEAggiornata 8 mesi fa