Come posso risolvere i problemi delle autorizzazioni con Lambda?

6 minuti di lettura
0

Ho diversi problemi di autorizzazione associati alla mia funzione AWS Lambda. Quali misure devo adottare per la risoluzione dei problemi?

Breve descrizione

I problemi di autorizzazione delle funzioni Lambda sono dovuti ai seguenti motivi:

  • La funzione Lambda non dispone dell'autorizzazione per eseguire le operazioni nel codice.
  • Il servizio AWS responsabile della chiamata della funzione Lambda non dispone di autorizzazioni sufficienti per richiamare la funzione.
  • Un account utente non dispone delle autorizzazioni appropriate per creare, aggiornare o eliminare risorse Lambda.
  • Lambda non dispone delle autorizzazioni per creare un'interfaccia di rete elastica a causa della mancanza delle autorizzazioni Amazon Elastic Compute Cloud (Amazon EC2).

Risoluzione

Considerazioni sulle autorizzazioni

  • Un ruolo di esecuzione di una funzione Lambda è un ruolo di AWS Identity and Access Management (IAM) che concede alla funzione le autorizzazioni per accedere ai servizi e alle risorse AWS. Fornisci questo ruolo quando crei una funzione e Lambda lo assume quando la funzione viene richiamata. Puoi creare un ruolo di esecuzione con le autorizzazioni per inviare registri ad Amazon CloudWatch e caricare dati di tracciamento su AWS X-Ray.
  • Puoi aggiungere o rimuovere le autorizzazioni dal ruolo di esecuzione di una funzione Lambda in qualsiasi momento. Puoi anche configurare la tua funzione Lambda per utilizzare un ruolo diverso. Aggiungi le autorizzazioni per tutti i servizi AWS richiamati dalla tua funzione con un SDK AWS. Quindi, aggiungi le autorizzazioni per i servizi AWS che Lambda utilizza per attivare le funzionalità opzionali.
  • Fornisci un ruolo di esecuzione quando crei una funzione Lambda. Quando richiami la tua nuova funzione Lambda, Lambda fornisce automaticamente alla tua funzione credenziali temporanee assumendo il ruolo di esecuzione. Non è necessario chiamare sts:AssumeRole nel codice della funzione. Quando aggiungi le autorizzazioni alla tua funzione Lambda, aggiorna anche il codice o la configurazione della funzione. Aggiornando il codice o la configurazione della funzione, le istanze in esecuzione della funzione vengono forzate a fermarsi in modo che possano essere sostituite. Per ulteriori informazioni, consulta Utilizzo delle policy basate su risorse per Lambda.
  • Utilizza policy basate sulle risorse per concedere l'autorizzazione di utilizzo ad altri account oppure organizzazioni AWS per ciascuna risorsa. Una policy basata sulle risorse può autorizzare un servizio AWS a richiamare la tua funzione Lambda per tuo conto.
  • Per richiamare o gestire una funzione Lambda, concedi l'autorizzazione a un account. Crea un'unica policy basata sulle risorse per concedere le autorizzazioni a un'intera organizzazione in AWS Organizations. Usa policy basate sulle risorse per concedere l'autorizzazione di richiamo a un servizio AWS in modo che una funzione possa essere richiamata in risposta a determinate attività dell'account.
  • Le policy basate sulle risorse si applicano a una singola funzione, versione, alias o versione layer. Le policy basate sulle risorse concedono l'autorizzazione a uno o più servizi e account AWS. Per gli account attendibili che richiedono l'accesso a più risorse o per utilizzare azioni API non supportate da policy basate sulle risorse, usa i ruoli multi-account. Per ulteriori informazioni, consulta Autorizzazioni di Lambda.
  • Utilizza le policy basate sull'identità IAM per concedere agli utenti del tuo account l'accesso a Lambda. Le policy basate sull'identità possono essere applicate direttamente agli utenti o ai gruppi e ai ruoli associati a un utente. Concedi agli utenti di un altro account le autorizzazioni per assumere un ruolo nel tuo account e accedere alle tue risorse Lambda.
  • Lambda fornisce policy gestite da AWS che consentono l'accesso alle operazioni dell'API Lambda. Le policy gestite possono consentire l'accesso ad altri servizi AWS utilizzati per sviluppare e gestire le risorse Lambda. Lambda aggiorna queste policy gestite in base alle esigenze per garantire che gli utenti abbiano accesso alle nuove funzionalità quando vengono rilasciate. Per ulteriori informazioni, consulta Policy IAM basate sull'identità per Lambda.

Passaggi per la risoluzione dei problemi

1.    Se la funzione Lambda dovrebbe richiamare un'altra funzione o un altro servizio AWS e non funziona, controlla il ruolo di esecuzione di Lambda.
Per ulteriori informazioni, consulta Ruolo di esecuzione di Lambda.

2.    Verifica che il servizio o l'utente AWS disponga delle autorizzazioni impostate per l'operazione Lambda:InvokeFunction.
Per ulteriori informazioni, consulta Actions, resources, and condition keys for AWS Lambda (Operazioni, risorse e chiavi di condizione per AWS Lambda).

3.    In uno scenario multi-account, accedi agli account di origine e destinazione per verificare le autorizzazioni necessarie per assumere un ruolo IAM per richiamare la funzione Lambda.
Per maggiori informazioni, consulta In che modo posso configurare una funzione Lambda affinché assuma un ruolo IAM in un altro account AWS?

4.    Per connettersi a un VPC, il ruolo di esecuzione della funzione Lambda deve avere le seguenti autorizzazioni:
ec2:CreateNetworkInterface
ec2:DescribeNetworkInterfaces
ec2:DeleteNetworkInterface

5.    Risolvi i problemi relativi alle autorizzazioni confrontando il set di autorizzazioni non funzionanti con qualsiasi configurazione di lavoro. Puoi anche fare riferimento alla documentazione di AWS per verificare le autorizzazioni.

6.    L'account di origine deve disporre dell'autorizzazione per richiamare la funzione Lambda. Controlla le autorizzazioni di mappatura dell'origine degli eventi richieste per la funzione Lambda. Una mappatura dell'origine eventi utilizza le autorizzazioni nel ruolo di esecuzione della funzione per leggere e gestire gli elementi nell'origine eventi. Le autorizzazioni, la struttura degli eventi, le impostazioni e il comportamento del polling variano a seconda dell'origine dell'evento. Per ulteriori informazioni, consulta Troubleshooting AWS Lambda identity and access (Risoluzione dei problemi relativi all'identità e all'accesso di AWS Lambda).

7.    Controlla i registri di AWS CloudTrail per tracciare le chiamate API effettuate su Lambda. Esamina le informazioni raccolte da CloudTrail per determinare:
La richiesta che è stata fatta a Lambda.
L'indirizzo IP da cui è stata effettuata la richiesta.
Chi ha fatto la richiesta.
Quando è stata effettuata la richiesta.
Per ulteriori informazioni, consulta Logging Lambda API calls with CloudTrail (Registrazione delle chiamate API Lambda con CloudTrail).

8.    Se ancora non riesci a risolvere il problema, apri una richiesta di assistenza con il Supporto AWS. Fornisci le seguenti informazioni nella richiesta:

  • L'ARN della funzione Lambda.
  • Il flusso di lavoro sulla configurazione della funzione Lambda con tutti i servizi AWS inclusi.
  • Dettagli che indichino se il problema è intermittente o continuo.
  • Dettagli sull'eventualità che il problema riguardi uno scenario multi-account.
  • Le autorizzazioni e/o i nomi dei ruoli IAM coinvolti.
  • Registri completi di CloudWatch in formato .txt dal momento in cui si è verificato il problema. Questi registri di CloudWatch vengono utilizzati per identificare gli errori delle funzioni Lambda che includono problemi di timeout, durate di avvio e problemi di autorizzazioni.
  • Il timestamp esatto del problema con il fuso orario o il timestamp in UTC.

Nota: i rappresentanti del Supporto AWS non hanno accesso ai registri di CloudWatch dei clienti per motivi di sicurezza e privacy.


Informazioni correlate

Come posso utilizzare le policy basate sulle risorse con AWS Lambda per concedere i permessi ai servizi AWS?

In che modo posso configurare una funzione Lambda affinché assuma un ruolo IAM in un altro account AWS?

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa