我试图将SQS作为触发器添加到运行在AWS中的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)
尝试通过将
AWSLambdaVPCAccessExecutionRole
添加到角色的策略中,以及通过IAM。但运气不好!
我不知道我在哪里犯了一个错误?请帮助我,如果谁有类似的经验在过去或知道如何解决它。提前谢谢你!
发布于 2020-07-21 11:13:52
请将托管策略AWSLambdaSQSQueueExecutionRole
附加到lambda执行角色中。如果您的lambda函数正在使用任何其他aws服务,则可以尝试创建自定义角色并添加特定权限。
在aws中,如果任何服务想访问任何其他服务,则需要这些特定的角色权限。
有关lambda权限的更多信息,请查看托管lambda权限
发布于 2020-07-21 11:14:56
您需要向您的lambda附加的IAM角色添加以下操作:
否则,lambda将无法接收来自队列的任何消息。DeleteMessage操作允许在消息成功处理后从队列中删除它。作为资源集,SQS队列的ARN。政策应如下所示:
{
"Action": [
"sqs:DeleteMessage",
"sqs:ReceiveMessage",
"sqs:GetQueueAttributes"
],
"Resource": "arn:aws:sqs:region:accountid:queuename",
"Effect": "Allow"
}
如果您正在寻找托管策略,请查看AWSLambdaSQSQueueExecutionRole。
发布于 2020-07-21 11:16:00
为lambda角色附加一个策略,如果您需要调用另一个lambda表单,则可能必须将account_number更改为帐户no。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:**eu-west-1**:**account_number:function**:*"
},
{
"Sid": "",
"Effect": "Allow",
"Action": [
"logs:PutLogEvents",
"logs:CreateLogStream",
"logs:CreateLogGroup"
],
"Resource": "*"
},
{
"Sid": "",
"Effect": "Allow",
"Action": [
"sqs:*"
],
"Resource": "*"
}
]
}
https://stackoverflow.com/questions/63012956
复制相似问题