Come posso usare le policy basate su risorse con AWS Lambda per concedere l'autorizzazione ai servizi AWS?

3 minuti di lettura
0

Vorrei usare le policy basate su risorse per AWS Lambda per concedere l'autorizzazione ai servizi AWS.

Breve descrizione

Puoi usare l'AWS Command Line Interface (AWS CLI) con Lambda per concedere l'autorizzazione ai servizi AWS usando policy basate su risorse. Per ulteriori informazioni, consulta Utilizzo delle policy basate su risorse per AWS Lambda.

Risoluzione

L'esempio seguente aggiunge l'autorizzazione per EventBridge e conferma che la funzione Lambda richiama la policy basata su risorse.

Nota:

Conferma che nella funzione Lambda non sia configurata una policy basata su risorse

Alcuni servizi AWS come EventBridge creano una policy basata su risorse per la funzione Lambda. Verifica che la policy basata su risorse non disponga dell'autorizzazione per EventBridge con il comando di AWS CLI get-policy, in modo analogo a quanto segue:

aws lambda get-policy --region your-region --function-name your-function

An error occurred (ResourceNotFoundException) when calling the GetPolicy operation: The resource you requested does not exist.

Questo errore conferma che nella funzione Lambda non è configurata una policy basata su risorse.

Aggiungere autorizzazioni per EventBridge

Esegui il comando di AWS CLI add-permission per richiamare la funzione Lambda, in modo analogo a quanto segue:

aws lambda add-permission --region your-region --function-name your-function --statement-id "your-event-permission" --action "lambda:InvokeFunction" --principal "events.amazonaws.com" --source-arn "arn:aws:events:your-region:xxxxxxxxxxxxx:rule/your-event"

{
    "Statement": "{\"Sid\":\"your-event-permission\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"events.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:your-region:xxxxxxxxxxxxx:function:your-function\",\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:events:your-region:xxxxxxxxxxxxx:rule/your-event\"}}}"
}

Verificare le autorizzazioni per la policy basata su risorse della funzione Lambda

Esegui nuovamente il comando get-policy di AWS CLI, in modo analogo a quanto segue:

aws lambda get-policy --region your-region --function-name your-function

{
  "Version": "2012-10-17",
  "Id": "default",
  "Statement": [
    {
      "Sid": "your-event-permission",
      "Effect": "Allow",
      "Principal": {
        "Service": "events.amazonaws.com"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:your-region:xxxxxxxxxxxxx:function:your-function",
      "Condition": {
        "ArnLike": {
          "AWS:SourceArn": "arn:aws:events:your-region:xxxxxxxxxxxxx:rule/your-event"
        }
      }
    }
  ]
}

(Facoltativo) Rimozione dell'autorizzazione da una policy basata su risorse della funzione Lambda

Se non hai più necessità che un servizio AWS attivi la funzione Lambda, puoi eseguire il comando di AWS CLI remove-permission, in modo analogo a quanto segue:

aws lambda remove-permission --region your-region --function-name your-function --statement-id "your-event-permission"

Nota: la quota delle policy basate su risorse della funzione Lambda è di 20 KB. Per ulteriori informazioni, consulta Quote di Lambda.


Informazioni correlate

In che modo posso risolvere l'errore "La dimensione della policy finale supera il limite" di Lambda?

AWS UFFICIALE
AWS UFFICIALEAggiornata 3 anni fa