首页 > 解决方案 > 在没有公有子网的私有子网中运行 Amazon ElasticBeanstalk 实例

问题描述

我的 AWS 账户中有 Kinesis 和 DynamoDB 等资源,我想从我的 ElasticBeanstalk 应用程序访问这些资源。ElasticBeanstalk 应用程序不提供任何与 Web 相关的流量,而只是侦听 Kinesis Stream 或其他一些资源并处理它们,将它们写入 DynamoDB 等文件。

我有以下问题: 1. 这个 Web Server 层或 Worker 层的最佳环境是什么?我的应用程序不提供任何 Web 流量,但同时 Worker 层似乎是用于批处理作业的,并且与 SQS 队列相关联。我可以根据网络流量自动扩展我的 Beanstalk 环境,我在 Web 服务器层上尝试了几次,效果很好。2. 如果我只想访问我的 AWS 账户中的 DynamoDB、Kinesis 资源,是否可以将我的所有 EC2 实例放在一个私有子网中?3. 为什么大多数标准 ElasticBeanstalk cloudformation 模板分为公有子网和私有子网,实例位于私有子网中,ELB 和 NAT 网关位于公有子网中。这更安全吗?如果黑客进入公共子网不会

标签: amazon-elastic-beanstalk

解决方案


如果您的 Beanstalk 应用程序不需要对公共 Internet 可见,那么最好在私有子网中对其进行配置。

  1. 根据问题中的信息很难回答这个问题,但听起来您当前的环境是合适的。

  2. 是的,您可以将您的 EC2 实例放入私有子网中,如果它们不需要公共 Internet 访问,建议您这样做。如果您的服务需要与其他 AWS 服务通信,则应使用PrivateLink,但如果服务不支持,则需要使用 NATGateway。

    您需要公共子网中的 EC2 实例来连接到任何私有 EC2 实例。您应该对该公共实例应用安全加固,并且您可以在不使用它时将其关闭。

  3. 拆分私有子网和公共子网是一种标准的安全做法,原因很简单,您不希望关键服务位于公共 Internet 上。理论上,如果他们在公共网络中,一个坚定的黑客可以访问您的私有实例,但是您可以尽可能锁定公共访问以防止这种情况(例如 Web 应用程序防火墙、安全组、ALB 等)。


推荐阅读