我有以下设置
- 单个 VPC
- 2 个跨 2 个可用区的公共子网(包含 AWS Beanstalk 应用程序并公开一个 api)
- 跨 2 个 AZ 的 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 级别启用。
我复制了端点 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/
我在这里想念什么?