Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 私有VPC中的弹性Beanstalk应用程序,无NAT_Amazon Web Services_Amazon Elastic Beanstalk_Amazon Vpc - Fatal编程技术网

Amazon web services 私有VPC中的弹性Beanstalk应用程序,无NAT

Amazon web services 私有VPC中的弹性Beanstalk应用程序,无NAT,amazon-web-services,amazon-elastic-beanstalk,amazon-vpc,Amazon Web Services,Amazon Elastic Beanstalk,Amazon Vpc,是否可以在自定义专用VPC中部署EB应用程序,而不使用NAT网关?我想使用AWS API网关作为应用程序的公共入口点,同时保持服务的私有性。设置完所有内容后,我的环境不断出现故障: EC2实例无法与AWS Elastic Beanstalk通信,原因可能是VPC的配置问题或EC2实例出现故障。检查VPC配置,然后再次尝试启动环境。 专有网络包括: EC2实例的两个专用子网 负载平衡器的两个专用子网 我使用的模板来自EB样本回购协议 EB应用程序是一个多容器docker应用程序,具有Ngin

是否可以在自定义专用VPC中部署EB应用程序,而不使用NAT网关?我想使用AWS API网关作为应用程序的公共入口点,同时保持服务的私有性。设置完所有内容后,我的环境不断出现故障:

EC2实例无法与AWS Elastic Beanstalk通信,原因可能是VPC的配置问题或EC2实例出现故障。检查VPC配置,然后再次尝试启动环境。
专有网络包括:

  • EC2实例的两个专用子网
  • 负载平衡器的两个专用子网
我使用的模板来自EB样本回购协议

EB应用程序是一个多容器docker应用程序,具有Nginx反向代理和运行uWSGI的Flask应用程序(类似于)。我使用的是内部网络负载均衡器,实例未分配公共IP地址。Docker图像位于AWS ECR中

论坛中的一个常见答案似乎是有一个带有NAT的公共子网,以允许访问internet。AWS指出,使用专用/专用配置是可能的,但只要应用程序不需要互联网连接

我配置的端点包括:

com.amazonaws.us-east-1.s3
com.amazonaws.us-east-1.elasticbeanstalk
com.amazonaws.us-east-1.ecs-telemetry
com.amazonaws.us-east-1.ecs-agent
com.amazonaws.us-east-1.ecs
com.amazonaws.us-east-1.ecr.dkr
com.amazonaws.us-east-1.ecr.api
com.amazonaws.us-east-1.elasticbeanstalk-health
看起来Beanstalk的VPC端点相当新,我找不到任何其他资源解释如何做到这一点

谢谢

编辑(已解决) 我忘了提到一些设置细节:

  • 在VPC中启用DNS解析和DNS主机名
  • 为每个端点启用私有DNS
  • 确保端点的安全组允许实例的VPC作为入站流量
由于@Marcin的建议,我能够通过会话管理器登录实例(只需添加ssmec2messagesssmmessages端点)。检查日志后,我注意到以下错误:

2020-08-01 15:15:56,801 [WARNING] Timeout of 60 seconds breached
2020-08-01 15:15:56,801 [ERROR] Client-side timeout
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/cfnbootstrap/util.py", line 162, in _retry
    return f(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/cfnbootstrap/util.py", line 231, in _timeout
    raise TimeoutError("Execution did not succeed after %s seconds" % duration)
TimeoutError
我发现有相同的问题,它是由cfn信号无法执行引起的。我可以通过添加cloudformation端点来解决这个问题。在接下来的部署中,我现在注意到一个新的
sqs连接错误
,通过添加sqs端点解决了这个问题

将上述端点添加到VPC后,部署成功。无论哪种方式,我都不知道为什么这些端点是必要的,为什么AWS文档中没有首先提到它。

的模板没有NAT,尽管描述中说它有。我错了

该模板创建两个专用子网,完全与internet和任何其他服务(如EB或ECR)断开

需要注意的重要一点是,如果模板未能展示它,则为端点启用

为此,您必须确保为专有网络启用和。文档中的模板无法启用它们


这些可能解释了为什么VPC接口端点不工作。

谢谢你的回答。你说得对,模板描述有误导性。我忘了提到我在创建VPC后启用了DNS解析和DNS主机名,以及每个端点的私有DNS。关于什么可能设置错误,还有其他想法吗?或者是某种调试方法?谢谢@SemyLevy VPC接口端点的安全组如何?你调整过了吗?他们应该允许来自您的EB实例的SG的入站流量。我一直在为EB实例和VPC端点使用默认安全组。我还尝试在创建后立即将EB创建的安全组作为入站规则添加到默认值中,但得到了相同的结果:(让我感到沮丧的是,除了来自EB的通信错误之外,我无法获得任何其他日志,因此很难判断它失败的原因。感谢您的建议,我能够通过查看日志来解决它(请参见编辑)。