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

Date de la dernière mise à jour : 27/09/2021

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.

Résolution

L'exemple suivant ajoute une autorisation pour un événement Amazon CloudWatch 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 CloudWatch 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 l'événement CloudWatch 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 l'événement CloudWatch

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.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?