我已经设置了一个包含3个子网的VPC,这可以从我的Lambda函数访问私有RDS实例。 RDS< - > Lambda连接工作正常,但现在我无法发布到SNS。
我发现了对SNS的VPC端点支持的公告(包括此博客帖子https://aws.amazon.com/blogs/security/securing-messages-published-to-amazon-sns-with-aws-privatelink/),并添加了具有这些属性的VPC端点接口:
Service name: com.amazonaws.eu-west-1.sns
VPC: same as Lambda functions and other services
Subnets: all included in my VPC (have also tested toggling them individually)
Security Groups: all VPC security groups selected
所有服务都在 eu-west-1 区域。我知道发布到SNS的代码是正确的,因为它在非VPC环境中运行时起作用。我发布的ARN保持不变:arn:aws:sns:eu-west-1:962446592636:whatever
。
我知道可以设置NAT服务器来避免此问题,但如果可能的话,我更愿意使用VPC端点来降低成本。
答案 0 :(得分:2)
对我有用!
我做了以下事情:
0.0.0.0/0
的所有TCP (用于测试目的)所以,一切都很好。我没有必要修改任何Lambda代码。
我的Lambda代码:
def lambda_handler(event, context):
import boto3
client = boto3.client('sns', region_name='ap-southeast-2')
response = client.publish(
TopicArn='arn:aws:sns:ap-southeast-2:123456789012:stack',
Message='From Lambda'
)
return