Pourquoi reçois-je une erreur d'autorisation lorsque j'essaie d'abonner ma fonction Lambda à ma rubrique Amazon SNS ?
Je reçois une erreur d'autorisation lorsque j'essaie d'abonner ma fonction AWS Lambda à ma rubrique Amazon Simple Notification Service (Amazon SNS). Comment résoudre ce problème ?
Brève description
Lorsque vous abonnez une fonction Lambda à une rubrique SNS, vous pouvez recevoir une erreur d'autorisation pour les raisons suivantes :
- Vous avez essayé de créer l'abonnement à partir d'un compte AWS différent de celui dans lequel se trouve votre fonction Lambda.
-ou- - L'identité AWS Identity and Access Management (IAM) que vous avez utilisée pour créer l'abonnement n'est pas autorisée à exécuter les opérations d'API suivantes :
(Lambda) AddPermission
(Amazon SNS) S'abonner
Pour résoudre le problème, vous devez effectuer l'une des opérations suivantes en fonction de la cause de l'erreur :
- Assurez-vous d'abonner votre fonction Lambda à la rubrique SNS à partir du compte AWS où se trouve votre fonction.
-ou- - Assurez-vous que l'identité IAM que vous utilisez dispose des autorisations nécessaires pour exécuter les opération d'API AddPermission et S’abonner SNS.
Solution
Vérifiez la cause de l'erreur en fonction du message d'erreur renvoyé par Lambda
Si vous créez l'abonnement à partir d'un compte AWS différent de celui où se trouve votre fonction, Lambda renvoie l'une des erreurs suivantes :
Exemple d’erreur d’AWS CLI : vous avez essayé de créer l'abonnement à partir d'un compte différent de celui dans lequel se trouve votre fonction Lambda.
An error occurred (AuthorizationError) when calling the Subscribe operation: The account YOUR_AWS_ACCOUNT_ID_1 is not the owner of the endpoint arn:aws:lambda:us-east-1:YOUR_AWS_ACCOUNT_ID_2:function: your_Lambda_function_ARN
Exemple d'erreur d'AWS Management Console : vous avez essayé de créer l'abonnement à partir d'un compte différent de celui dans lequel se trouve votre fonction Lambda
Error code: AccessDeniedException - Error message: User: arn:aws:sts::XXXXXXX:XXXXXXX/XXXXX/XXXXXX is not authorized to perform: lambda:AddPermission on resource: arn:aws:lambda:us-west-2:XXXXXXX:function:XXXXXXX
Si vous utilisez le bon compte, mais que votre identité IAM ne dispose pas des autorisations requises, Lambda ou SNS renvoie l'une des erreurs suivantes :
Exemple d'erreur d’AWS CLI : l'identité IAM que vous avez utilisée pour créer l'abonnement n'est pas autorisée à exécuter l'action AddPermission Lambda
An error occurred (AccessDeniedException) when calling the AddPermission operation: User: arn:aws:iam::XXXXXXX:user/XXXXXXXX is not authorized to perform: lambda:AddPermission on resource: arn:aws:lambda:us-west-2:XXXXXX:function:XXXXXXX because no identity-based policy allows the lambda:AddPermission action
Exemple d'erreur d’AWS Management Console : l'identité IAM que vous avez utilisée pour créer l'abonnement n'est pas autorisée à exécuter l'action AddPermission Lambda
Error code: AccessDeniedException - Error message: User: arn:aws:sts:XXXXXXXX:assumed-role/XXXXXXXX/XXXXX-XXXXXX is not authorized to perform: lambda:AddPermission on resource: arn:aws:lambda:us-west-2:XXXXXXXXX:function:XXXXXXX because no identity-based policy allows the lambda:AddPermission action
Exemple d'erreur d’AWS CLI lorsque vous essayez d'utiliser une identité IAM qui n'est pas autorisée à exécuter l'action SNS Subscribe
An error occurred (AuthorizationError) when calling the Subscribe operation: User: arn:aws:iam::XXXXXXX:user/XXXXXXXX is not authorized to perform: SNS:Subscribe on resource: arn:aws:sns:us-west-2:XXXXXXXX:XXXXXXX because no resource-based policy allows the SNS:Subscribe action
Assurez-vous d'abonner votre fonction Lambda à la rubrique SNS à partir du compte AWS où se trouve votre fonction
Vous pouvez utiliser la console Lambda ou l'AWS CLI pour abonner votre fonction Lambda à une rubrique SNS.
Pour abonner une fonction à une rubrique SNS à l'aide de la console Lambda
Remarque : lorsque vous ajoutez le déclencheur SNS à l'aide de la console Lambda, la console autorise automatiquement l'autorisation lambda:InvokeFunction du service:sns.amazonaws.com principal.
1. Sur la page Fonctions de la console Lambda, choisissez votre fonction.
2. Sous Overview (Présentation), choisissez Add trigger (Ajouter un déclencheur).
3. Pour la Configuration du déclencheur, choisissez Sélectionner un déclencheur, puis SNS.
4. Pour la rubrique SNS, collez la rubrique SNS Amazon Resource Name (ARN) depuis l'autre compte AWS.
5. Cochez la case Activer le déclencheur.
6. Choisissez Add (Ajouter).
Pour plus d'informations, consultez la section Configuration des options de fonction Lambda.
Remarque : si vous recevez l'erreur suivante, vous devez accorder des autorisations d'action d'API Subscribe (Abonner) à l'identité IAM que vous utilisez. Pour obtenir des instructions de dépannage, consultez l'article suivant :Comment résoudre les erreurs d'autorisation lorsque j'essaie d'ajouter des abonnés à une rubrique Amazon SNS ?
An error occurred (AuthorizationError) when calling the Subscribe operation: User: your_IAM_user_or_role is not authorized to perform: SNS:Subscribe on resource: your_SNS_topic_ARN
Pour abonner une fonction à une rubrique SNS à l'aide de l'AWS CLI
Remarque : si vous recevez des erreurs lors de l'exécution de commandes AWS CLI, assurez-vous d'utiliser la version la plus récente de l'AWS CLI.
1. Configurez votre AWS CLI avec un utilisateur IAM qui appartient au compte AWS sur lequel se trouve votre fonction Lambda :
aws configure --profile-name your_profile_name
Important : veillez à transmettre l'identifiant de la clé d'accès AWS et la clé secrète de votre utilisateur IAM.
2. Autoriser les invocations Lambda à partir de la rubrique SNS en ajoutant l'autorisation Lambda:InvokeFunction du service:sns.amazonaws.com principal :
aws lambda add-permission --function-name your_lambda_function_name --statement-id sns_invoke_permission --action lambda:InvokeFunction --principal sns.amazonaws.com --source-arn your_sns_topic_arn
3. Abonnez votre fonction Lambda à votre rubrique SNS :
aws sns subscribe --topic-arn your_sns_topic_ARN --protocol lambda --notification-endpoint your_lambda_function_arn --profile your_profile_name_passed_on_#1
Remarque : si vous recevez l'erreur suivante, vous devez accorder des autorisations d'action d'API Subscribe (Abonner) à l'identité IAM que vous utilisez. Pour obtenir des instructions de dépannage, consultez l'article suivant :Comment résoudre les erreurs d'autorisation lorsque j'essaie d'ajouter des abonnés à une rubrique Amazon SNS ?
An error occurred (AuthorizationError) when calling the Subscribe operation: User: your_IAM_user_or_role is not authorized to perform: SNS:Subscribe on resource: your_SNS_topic_ARN
Assurez-vous que l'identité IAM que vous utilisez dispose des autorisations nécessaires pour exécuter les opérations d'API Lambda AddPermission et SNS Subscribe
Vérifiez la politique basée sur l'identité de votre identité IAM. Assurez-vous que la politique autorise explicitement l'identité IAM à exécuter les deux actions suivantes :
lambda:AddPermission
SNS:Subscribe
Si la politique basée sur l'identité n'accorde pas les autorisations requises, ajoutez les autorisations requises à la politique. Ensuite, abonnez votre fonction Lambda à la rubrique SNS à partir du compte AWS dans lequel se trouve la fonction.
Vidéos associées
Contenus pertinents
- demandé il y a 2 anslg...
- demandé il y a un anlg...
- demandé il y a 2 anslg...
- demandé il y a 2 anslg...
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a 3 ans
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a 2 ans