如何在无服务器中使用带有 ses 的 vpc 端点
Posted
技术标签:
【中文标题】如何在无服务器中使用带有 ses 的 vpc 端点【英文标题】:how to use vpc endpoint with ses in serverless 【发布时间】:2020-07-07 11:53:18 【问题描述】:我在没有 nat 网关/互联网访问的 vpc 中部署了功能。 目标:通过 SES 从此功能发送电子邮件(在 vpc 中)
我已经尝试使用带有 nat 网关的公有私有子网来发送电子邮件,它工作正常。但我正在尝试使用它 vi VPC 端点。我创建了一个电子邮件 vpc 端点,但不确定如何在 serverless.yml 中配置它。已尝试按照 https://www.serverless.com/framework/docs/providers/aws/guide/serverless.yml/
中所述设置配置但没有任何效果,因为没有提及 ses。
【问题讨论】:
您好 Shubham,只是想知道无服务器部分的作用,因为您已经说过您的目标是通过 SES 从 VPC 中的功能发送电子邮件。您是否打算稍后将此函数迁移到无服务器 Lambda? lambda 代码是在 nodejs 的无服务器框架中编写的。它不是普通的 aws lambda 我能理解你的沮丧,因为我最近经历了一件非常相似的事情。我将分享我学到和建立的东西。希望它能让你继续前进。 【参考方案1】:您需要以下配置,以便 CloudFormation 创建资源。 (注意括号中的变量)
resources:
Resources:
VPCEndpointForSES:
Type: AWS::EC2::VPCEndpoint
Properties:
PrivateDnsEnabled: True
SecurityGroupIds:
- <ID of the VPC Security Group>
ServiceName: 'com.amazonaws.<AWS Region String>.email-smtp'
SubnetIds:
- <Subnet of your VPC>
- <Subnet of your VPC>
- <Subnet of your VPC>
VpcEndpointType: Interface
VpcId: <ID of your VPC>
【讨论】:
【参考方案2】:您是否查看过适用于 VPC 终端节点的 AWS PrivateLink?
您无需设置 Internet 网关、NAT 设备、*** 连接或 AWS Direct Connect 连接。您的 VPC 可以使用 AWS PrivateLink 与 Amazon 网络中的 AWS SES 进行通信。
请注意,VPC 终端节点当前不支持跨区域请求 - 确保您在计划向 Amazon SES 发出 API 调用的同一区域中创建终端节点。
您需要创建一个安全组和一个 VPC 接口点。有一步一步的例子here
其他资源:AWS PrivateLinkInterface Endpoints
【讨论】:
【参考方案3】:您必须使用 AWS SES SMTP 终端节点,因为 AWS 不支持 AWS SES API 的 VPC 私有终端节点。
使用私有 VPC 终端节点配置 AWS SES SMTP 的指南: https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-set-up-vpc-endpoints.html
与 AWS PrivateLink 集成的可用 AWS 服务列表(或可以创建私有 VPC 端点): https://docs.aws.amazon.com/vpc/latest/privatelink/integrated-services-vpce-list.html
【讨论】:
以上是关于如何在无服务器中使用带有 ses 的 vpc 端点的主要内容,如果未能解决你的问题,请参考以下文章