En utilisant AWS re:Post, vous acceptez les AWS re:Post Conditions d’utilisation

Comment puis-je utiliser des politiques basées sur les ressources pour AWS Lambda pour accorder des autorisations aux services AWS ?

Lecture de 3 minute(s)
0

Je souhaite utiliser des politiques basées sur les ressources pour AWS Lambda afin d'accorder des autorisations aux services AWS.

Brève description

Vous pouvez utiliser AWS Command Line interface (AWS CLI) avec Lambda pour accorder des autorisations aux services AWS à l'aide de politiques basées sur les ressources. Pour en savoir plus, consultez Utilisation des politiques basées sur les ressources pour AWS Lambda.

Solution

L'exemple suivant ajoute une autorisation pour EventBridge et confirme que la fonction Lambda appelle la politique basée sur les ressources.

Remarque :

Vérifier que la fonction Lambda n'a pas de politique de ressource configurée

Certains services AWS tels que EventBridge créent une politique basée sur les ressources pour la fonction Lambda. Vérifiez que la politique basée sur les ressources n'est pas autorisée pour EventBridge avec la commande AWS CLI get-policy similaire à la suivante :

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.

Cette erreur confirme que la fonction Lambda n'a pas de politique basée sur les ressources configurée.

Ajouter des autorisations pour EventBridge

Exécutez la commande AWS CLI add-permission pour appeler la fonction Lambda similaire à la suivante :

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\"}}}"
}

Vérifier les autorisations pour la politique basée sur les ressources de la fonction Lambda

Exécutez à nouveau la commande « get-policy » d'AWS CLI comme suit :

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"
        }
      }
    }
  ]
}

(Facultatif) Supprimer l'autorisation d'une politique basée sur les ressources de fonction Lambda

Si vous n'avez plus besoin d'un service AWS pour déclencher la fonction Lambda, vous pouvez exécuter la commande AWS CLI remove-permission comme suit :

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

Remarque : le quota de politique basé sur les ressources de la fonction Lambda est de 20 Ko. Pour plus d'informations, consultez la section Quotas Lambda.


Informations connexes

Comment résoudre l'erreur « La taille de la politique finale dépasse la limite » qui se produit dans Lambda ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 3 ans