【发布时间】:2021-12-20 16:43:25
【问题描述】:
我有以下设置
- 单个 VPC
- 跨 2 个可用区的 2 个公共子网(包含 AWS Beanstalk 应用程序并公开一个 api)
- 跨 2 个可用区的 2 个私有子网(包含 Lambda 函数)
- 1 用于 Elastic beanstalk 的接口 VPC 端点(服务名称 com.amazonaws.us-east-2.elasticbeanstalk)
我不想为我的 lambda 函数创建 NAT 网关以便能够通过 Internet 访问 AWS Beanstalk 应用程序 API,而是想创建一个 VPC 端点,以便我可以从我的 lambda 函数访问 AWS 内部网络中的 aws beanstalk。
公共子网具有允许 Web 流量(端口 80/443)的安全组
VPC 终端节点与私有子网关联,其安全组允许 Web 流量(端口 80/443)。
lambda 函数还与私有子网相关联,其安全组允许 Web 流量通信(端口 80/443)。
DNS 解析和 DNS 主机名在 VPC 级别启用。
我复制了 Endpoint dns 名称以形成 lambda 函数正在调用的 url,我得到了一个超时
即使我尝试了上述所有步骤,AWS Lambda 仍无法访问 beanstalk 应用程序 api。
简化的 lambda 函数:
def lambda_handler(event, context):
http = urllib3.PoolManager()
r = http.request('GET', 'http://vpce-**********.elasticbeanstalk.us-east-2.vpce.amazonaws.com/')
print(r.data)
# TODO implement
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
Elastic beanstalk 应用程序可通过 Internet 获取,地址为 http://sample-app-dev.******.us-east-2.elasticbeanstalk.com/
我在这里错过了什么?
【问题讨论】:
标签: amazon-web-services aws-lambda amazon-elastic-beanstalk aws-private-link