Come si risolve l'errore " impossibile estrarre i segreti o l'autenticazione del registro" in Amazon ECS?

8 minuti di lettura
0

Ho riscontrato uno dei seguenti errori quando ho avviato un'attività Amazon Elastic Container Service (Amazon ECS): "ResourceInitializationError: impossibile estrarre i segreti o il registro auth: comando di estrazione fallito: : segnale: ucciso" oppure "ResourceInitializationError: impossibile estrarre i segreti o il registro auth: esecuzione del recupero delle risorse fallita: impossibile recuperare il segreto da asm: la chiamata al servizio è stata ritentata".

Breve descrizione

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 tuoi registri di flusso Amazon VPC Flow. Tuttavia, l'attività utilizza la configurazione di rete anziché utilizzare le interfacce di rete elastica appartenenti a Fargate. Questo perché le interfacce di rete elastica sono collocate all'interno di 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 di gestione delle chiavi AWS (AWS KMS) gestita dal cliente, concedi le seguenti autorizzazioni al ruolo IAM di esecuzione delle attività:

  • ssm:ottieniparametri
  • secretsmanager:ottienivaloresegreto
  • kms:decrittografa.

Usa il runbook AWSSupport-TroubleshootECSTaskFailedToStart per risolvere i problemi delle attività Amazon ECS che non vengono avviate. Questa automazione esamina le seguenti configurazioni:

  • connettività di rete al registro dei container configurato
  • autorizzazioni IAM mancanti richieste dal ruolo di esecuzione delle attività
  • connettività endpoing del cloud privato virtuale (VPC)
  • configurazione delle regole del gruppo di sicurezza
  • riferimenti ai segreti di AWS Secrets Manager
  • configurazione della registrazione

Se l'output del runbook non fornisce consigli, utilizza gli approcci manuali per la risoluzione dei problemi nella sezione seguente.

Risoluzione

Importante:

  • Usa il runbook nella stessa regione AWS in cui si trovano le risorse del tuo cluster ECS.
  • Quando utilizzi il runbook, devi usare l'ID dell'ultima attività non riuscita. 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:DescriviAttività durante l'esecuzione dell'automazione. Per impostazione predefinita, le attività ECS interrotte sono visibili per 1 ora dopo l'inserimento nello stato interrotto. L'utilizzo dell'ID dell'ultima attività non riuscita impedisce che la pulizia dello stato dell'attività interrompa l'analisi durante l'automazione.

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

  1. Apri la console AWS Systems Manager.
  2. Nel pannello di navigazione, in Gestione delle modifiche, seleziona Automazione.
  3. Seleziona 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 permette all'Automazione Systems Manager di eseguire azioni.
    Nota: Assicurati che AutomationAssumeRole o l’utente IAM o il ruolo disponga delle autorizzazioni richieste da IAM per eseguire il runbook AWSSupport-TroubleshootECSTaskFailedToStart. Se non specifichi un ruolo IAM, l'Automazione Systems Manager utilizza le autorizzazioni dell'utente o del ruolo IAM che esegue il runbook. Per ulteriori informazioni sulla creazione del ruolo di assunzione per l'Automazione Systems Manager, consulta Attività 1: Crea un ruolo di servizio per l'Automazione.
  10. In ClusterName, inserisci il nome del cluster in cui l'attività non è stata avviata.
  11. Per TaskId, inserisci l'identificazione dell'ultima attività non riuscita.
  12. Seleziona Esegui

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

Controlla i percorsi dalle tue sottoreti verso Internet

Se hai un'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. Utilizza invece un endpoint VPC Amazon:

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

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

Se hai un'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, posiziona il gateway NAT 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 di rete) e i gruppi di sicurezza non blocchino l'accesso in uscita alla porta 443 dalla sottorete. Per ulteriori informazioni, consulta Controlla il traffico verso le risorse utilizzando i gruppi di sicurezza.

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.regione.ecr.api
  • endpoint gateway S3
  • com.amazonaws.regione.filedilog

Per ulteriori informazioni, consulta Considerazioni sugli endpoint VPC di Amazon ECR.

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

Se utilizzi PrivateLink, verifica che il gruppo di sicurezza di Amazon VPC consenta il traffico corretto. Il gruppo deve consentire il traffico proveniente dal gruppo di sicurezza dell'attività Fargate o dall'intervallo CIDR dell'attività VPC Fargate sulla porta TCP 443.

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

Controlla i tuoi ruoli e le tue 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 l'immagine di un container da Amazon Elastic Container Registry (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

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 nella definizione della tua attività corrispondono ai valori nella tua 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, completare i seguenti passaggi:

Nota: se visualizzi errori durante l'esecuzione dei comandi AWS CLI, assicurati di utilizzare la versione più recente dell'interfaccia della linea di comando AWS.

  1. Apri la console AWS Systems Manager.
  2. Nel pannello 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à del 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 un anno fa