AWS-从VPC内的Lambda函数向SQS发送消息

时间:2019-05-28 15:26:40

标签: amazon-web-services aws-lambda chalice

我已经在VPC上使用AWS Chalice托管了Lambda函数,因为我希望它可以访问无服务器Aurora数据库实例。现在,我还希望该函数将send_message()发送到SQS。

我遵循了Tutorial: Sending a Message to an Amazon SQS Queue from Amazon Virtual Private Cloud,并且能够从我的EC2内部调用SQS。但是即使那样,我仍然无法使用Lambda函数来调用SQS。

如果有人可以告诉我如何手动完成整个操作而不是使用CloudFormation堆栈,或者至少告诉我如何使SQS端点正常工作,这将非常有帮助。

2 个答案:

答案 0 :(得分:0)

您需要为SQS添加VPC Endpoint到VPC,或者将Lambda函数放置在具有到NAT网关的路由的子网中。

答案 1 :(得分:0)

您的情况似乎是:

  • 具有Amazon Aurora数据库的Amazon VPC
  • 想要与Aurora数据库 AND Amazon SQS队列进行通信的AWS Lambda函数

AWS Lambda函数可以配置为:

  • 已连接到VPC中的子网,或
  • 未连接到VPC,这意味着它已连接到Internet

如果您希望让AWS Lambda函数与VPC Internet中的资源进行通信,那么您将需要:

  • Lambda函数连接到专用子网
  • 公共子网中的NAT网关
  • 连接到公共子网的Internet网关(它很可能已经在您的VPC中)

或者,您可以使用用于SQS的VPC端点,该功能允许Lambda函数访问SQS,而无需访问Internet。如果要连接到多个服务(例如S3,SNS,SQS),则使用NAT网关比为每个服务创建VPC端点可能更容易。