无法将触发器添加到 AWS Lambda

Unable to add trigger to 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)

Tried via adding AWSLambdaVPCAccessExecutionRole to the policy for the role as well via IAM. But no luck!

我想不通我哪里出错了?请帮助我,如果有人过去有类似的经验或知道如何解决它。提前谢谢你!

请在您的 lambda 执行角色中附加托管策略 AWSLambdaSQSQueueExecutionRole。 如果您的 lambda 函数与任何其他 aws 服务一起使用,您可以尝试创建自定义角色并添加特定权限。

在 aws 中,如果任何服务想要访问任何其他服务,您需要角色中的那些特定权限。

有关 lambda 权限的更多信息,请查看 Managed lambda permissions

您需要将以下操作添加到附加到您的 lambda 的 IAM 角色中:

  • sqs:ReceiveMessage
  • sqs:删除消息
  • sqs:GetQueueAttributes

否则您的 lambda 将无法从队列中接收任何消息。 DeleteMessage 操作允许在消息成功处理后从队列中删除消息。作为资源设置 SQS 队列的 ARN。政策应如下所示:

{
    "Action": [
        "sqs:DeleteMessage",
        "sqs:ReceiveMessage",
        "sqs:GetQueueAttributes"
    ],
    "Resource": "arn:aws:sqs:region:accountid:queuename",
    "Effect": "Allow"
}

如果您正在寻找托管策略,请查看 AWSLambdaSQSQueueExecutionRole。

附加一个 lambda 角色的策略,如果您需要从这个 lambda 调用另一个 lambda,您可能需要更改 account_number 到您的帐户否

{
"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": "*"
    }
]
}