Ami*_*mar 1 amazon-sqs amazon-web-services amazon-iam amazon-vpc aws-lambda
我正在尝试将SQS作为触发器添加到我在 AWS-VPC 中运行的Lambda函数,但它引发错误为:
An error occurred when creating the trigger: The provided execution role does not have permissions to call ReceiveMessage on SQS (Service: AWSLambda; Status Code: 400; Error Code: InvalidParameterValueException; Request ID: d34b7525-5c69-4434-a015-112e8e74f447; Proxy: null)
Run Code Online (Sandbox Code Playgroud)
尝试通过添加
AWSLambdaVPCAccessExecutionRole到角色的策略以及通过 IAM。但没有运气!
我无法弄清楚我在哪里犯了错误?请帮助我,如果有人过去有类似的经历或知道如何解决它。提前谢谢你!
San*_*ose 14
请在您的 lambda 执行角色中附加托管策略AWSLambdaSQSQueueExecutionRole。如果您的 lambda 函数正在与任何其他 aws 服务配合使用,您可以尝试创建自定义角色并添加特定权限。
在AWS中,如果任何服务想要访问任何其他服务,您需要角色中的特定权限。
有关 lambda 权限的更多信息,请查看托管 lambda 权限
小智 5
您需要向附加到您的 lambda 的 IAM 角色添加以下操作:
否则您的 lambda 将无法从队列接收任何消息。DeleteMessage 操作允许在成功处理后从队列中删除消息。作为资源设置 SQS 队列的 ARN。策略应如下所示:
{
"Action": [
"sqs:DeleteMessage",
"sqs:ReceiveMessage",
"sqs:GetQueueAttributes"
],
"Resource": "arn:aws:sqs:region:accountid:queuename",
"Effect": "Allow"
}
Run Code Online (Sandbox Code Playgroud)
如果您正在寻找托管策略,请查看 AWSLambdaSQSQueueExecutionRole。