如何配置 AWS lambda 触发器以使用 vpc 端点使用 SQS 队列
How to configure an AWS lambda trigger to use an SQS queue using an vpc endpoint
我正在尝试为 lambda 函数配置 SQS 队列触发器,主要遵循此 guide。
lambda函数角色拥有SQS队列的相关权限(ReceiveMessage
、DeleteMessage
、GetQueueAttributes
)。
lambda 函数在 VPC 中。
在另一端,配置了一个 VPC 端点(在同一 VPC 上)以访问 SQS 队列(遵循 AWS documentation), and a policy has been made to deny access if it is not from the vpc endpoint (similar to this policy 中的安全最佳实践)
问题是当我尝试创建触发器时,出现了以下错误:
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: [...]; Proxy: null)
我错过了什么吗?有谁知道是否可以同时使用 VPC 端点拒绝策略和 lambda 触发器?
备注:
- 如果我删除 VPC 端点拒绝规则,那么我可以创建触发器,所以我的理解是这个问题以某种方式链接到 vpc 端点。
- 如果我不创建 SQS 触发器,而是尝试访问 lambda 函数代码中的 SQS 队列,它可以正常工作(通过 VPC 端点),所以我的理解是问题与触发器部分(它证明我相信安全组规则允许 lambda 安全组和 vpc 端点安全组之间的连接)。
AWS Lambda SQS 触发器功能依赖于轮询 SQS 队列的后台进程。这是您无法控制的 AWS 托管流程。此进程 运行s 在您的 VPC 之外的某个地方。该进程不断轮询您的 SQS 队列,并在收到消息后调用您的 Lambda 函数,将调用负载中的 SQS 消息传递给它。调用的 Lambda 函数可能在您的 VPC 内配置为 运行,但轮询 SQS 队列的托管进程未在您的 VPC 内配置为 运行,目前无法更改。
我正在尝试为 lambda 函数配置 SQS 队列触发器,主要遵循此 guide。
lambda函数角色拥有SQS队列的相关权限(ReceiveMessage
、DeleteMessage
、GetQueueAttributes
)。
lambda 函数在 VPC 中。
在另一端,配置了一个 VPC 端点(在同一 VPC 上)以访问 SQS 队列(遵循 AWS documentation), and a policy has been made to deny access if it is not from the vpc endpoint (similar to this policy 中的安全最佳实践)
问题是当我尝试创建触发器时,出现了以下错误:
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: [...]; Proxy: null)
我错过了什么吗?有谁知道是否可以同时使用 VPC 端点拒绝策略和 lambda 触发器?
备注:
- 如果我删除 VPC 端点拒绝规则,那么我可以创建触发器,所以我的理解是这个问题以某种方式链接到 vpc 端点。
- 如果我不创建 SQS 触发器,而是尝试访问 lambda 函数代码中的 SQS 队列,它可以正常工作(通过 VPC 端点),所以我的理解是问题与触发器部分(它证明我相信安全组规则允许 lambda 安全组和 vpc 端点安全组之间的连接)。
AWS Lambda SQS 触发器功能依赖于轮询 SQS 队列的后台进程。这是您无法控制的 AWS 托管流程。此进程 运行s 在您的 VPC 之外的某个地方。该进程不断轮询您的 SQS 队列,并在收到消息后调用您的 Lambda 函数,将调用负载中的 SQS 消息传递给它。调用的 Lambda 函数可能在您的 VPC 内配置为 运行,但轮询 SQS 队列的托管进程未在您的 VPC 内配置为 运行,目前无法更改。