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

Ultimo aggiornamento: 27/09/2021

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 un evento Amazon CloudWatch e conferma che la funzione Lambda richiama la policy basata su risorse.

Nota:

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

Alcuni servizi AWS come CloudWatch creano una policy basata su risorse per la funzione Lambda. Verifica che la policy basata su risorse non disponga dell'autorizzazione per l'evento CloudWatch 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.

Aggiunta di autorizzazioni per l'evento CloudWatch

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.


Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?