处于VPC中的AWS Lambda无法发送事件至Event Bus的解决咨询
解决VPC内Lambda跨账号向Event Bus发送事件的问题
核心原因
VPC内的Lambda默认无法直接访问AWS托管的Event Bus服务——Event Bus属于AWS公网服务范畴,VPC内Lambda若无公网出口或对应VPC端点,就无法建立连接;即便已配置VPC peering,该连接仅打通两个VPC的私网通信,不涉及AWS托管服务的访问路径。
可行解决方案
方案一:配置EventBridge VPC端点(推荐)
- 创建EventBridge接口型VPC端点:在Lambda所在VPC中,通过AWS控制台或
aws ec2 create-vpc-endpoint命令,创建指向com.amazonaws.<区域>.events的接口端点。需确保端点的安全组允许Lambda所在安全组的443端口出站流量。 - 确认Lambda的VPC配置:保证Lambda已关联到该VPC的子网和安全组,且安全组允许向EventBridge端点发起443端口请求。
- 配置跨账号Event Bus权限:目标账号的Event Bus需添加资源策略,允许Lambda所在账号的执行角色发送事件。示例策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<你的账号ID>:role/<Lambda执行角色ARN>" }, "Action": "events:PutEvents", "Resource": "arn:aws:events::<目标账号ID>:event-bus/<目标Event Bus名称>" } ] }
- Lambda代码指定目标Event Bus:调用
PutEventsAPI时,明确将EventBusName设为目标账号的Event Bus ARN。
方案二:为Lambda配置公网访问路径
- 部署NAT网关:在Lambda所在VPC的公网子网中创建NAT网关,并将Lambda所在子网的路由表配置
0.0.0.0/0指向该NAT网关(公网子网需关联互联网网关)。 - 配置安全组:允许Lambda所在安全组的443端口出站流量到公网。
- 同方案一配置跨账号Event Bus权限,Lambda代码指定目标Event Bus ARN。
额外注意事项
- VPC peering仅用于两个VPC的私网通信,无需针对该连接做额外配置来适配Event Bus访问。
- 需确认Lambda执行角色已拥有
events:PutEvents权限,且权限策略中包含目标Event Bus的ARN。
内容的提问来源于stack exchange,提问作者M Akin
相关产品推荐
相关产品推荐

