Amazon web services AWS lambda通过专用Hostzone DNS连接到内部ELB
我想设置一个运行在私有VPC上的EC2实例。它可以从私有VPC连接到Internet,但不能从外部访问。还有一个lambda函数可以触发EC2启动与外部资源(S3、Dynamo、Internet)的一些交互 我已经建立了一个VPC,如下所示:Amazon web services AWS lambda通过专用Hostzone DNS连接到内部ELB,amazon-web-services,aws-lambda,amazon-route53,amazon-vpc,elastic-load-balancer,Amazon Web Services,Aws Lambda,Amazon Route53,Amazon Vpc,Elastic Load Balancer,我想设置一个运行在私有VPC上的EC2实例。它可以从私有VPC连接到Internet,但不能从外部访问。还有一个lambda函数可以触发EC2启动与外部资源(S3、Dynamo、Internet)的一些交互 我已经建立了一个VPC,如下所示: 在专用VPC子网中运行docker的EC2实例 配置为内部和专用子网(与EC2子网相同)的ALB(应用程序负载平衡器) 正在工作的NAT网关 一个lambda函数,用于HTTPs获取和发布到Internet和ALB Route53 private Host
这很有趣。我确实有一个公共hostzone与私有hostzone共存,但是公共hostzone用于其他目的。我不知道为什么lambda函数使用公共DNS而不是私有DNS,因为它是在私有子网中配置的 感谢所有发表评论和建议的人 为了解决这个问题,我几乎在网上找到了所有可能的解决方案。我把一切都放在正确的位置。Lambda函数、ELB和EC2位于同一VPC专用子网中。路由53、NAT和IGW已正确设置。我尝试过使用DHCP选项集,但没有成功。也许我不完全理解这个DHCP,我找不到一个例子 事实证明HTTPS协议不起作用。在我转到私有VPC之前,我在公共VPC中设置了相同的东西,资源使用HTTPS进行通信。例如,lambda函数将获取/发布到EC2实例或ELB。在我将内容移动到私有VPC后,HTTPS命令不能使用内部DNS名称 然而,如果我使用HTTP协议,资源最终可以通过内部DNS名称找到彼此
我仍然不知道为什么HTTPS不能在私有VPC中使用,但我可以接受这个解决方案 我也有同样的问题 ALB没有被添加为Lambda的触发器,这导致了我类似的证书问题。 在我的案例中,安全组配置错误。 我注意到我分配给Lambda的角色应该包括一个具有创建/删除ENI权限的策略
有时ALB更新不快。因此,我使用相同的设置重新创建,它开始工作。是否确保检查附加到Lambda的IAM角色是否可以访问ec2网络相关操作?以下是IAM策略的一个示例:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ec2:CreateNetworkInterface",
"ec2:DescribeNetworkInterfaces",
"ec2:DeleteNetworkInterface",
"ec2:DescribeSecurityGroups",
"ec2:DescribeSubnets"
],
"Resource": [
"*"
],
"Effect": "Allow"
}
]
}
Lambda功能配置为在VPC的私有子网中运行,并有到NAT网关的路由?您不能为
abcd.internal/api
配置记录集,并期望它执行任何操作。DNS不是这样工作的。DNS级别不处理路径。@MarkB是的,我已经确认它可以连接到Internet。@Michael sqlbot我为误解道歉。我将记录集配置为“abcd.internal”,然后,在lambda函数中,我将https访问地址“abcd.internal/api”,我认为可以将其用于此托管角色LambdaVPCAccessExecutionRole,但不确定是否涵盖了所有提到的权限。。。?