amazon-elastic-beanstalk - 在没有公有子网的私有子网中运行 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 网关位于公有子网中。这更安全吗?如果黑客进入公共子网不会
解决方案
如果您的 Beanstalk 应用程序不需要对公共 Internet 可见,那么最好在私有子网中对其进行配置。
根据问题中的信息很难回答这个问题,但听起来您当前的环境是合适的。
是的,您可以将您的 EC2 实例放入私有子网中,如果它们不需要公共 Internet 访问,建议您这样做。如果您的服务需要与其他 AWS 服务通信,则应使用PrivateLink,但如果服务不支持,则需要使用 NATGateway。
您需要公共子网中的 EC2 实例来连接到任何私有 EC2 实例。您应该对该公共实例应用安全加固,并且您可以在不使用它时将其关闭。
拆分私有子网和公共子网是一种标准的安全做法,原因很简单,您不希望关键服务位于公共 Internet 上。理论上,如果他们在公共网络中,一个坚定的黑客可以访问您的私有实例,但是您可以尽可能锁定公共访问以防止这种情况(例如 Web 应用程序防火墙、安全组、ALB 等)。
推荐阅读
- php - 如何使用 eloquent 导航到集合中的集合
- markdown - 将序列图集成到markdown文件中
- php - PHP:想把变量和字符串放在mysql中
- reactjs - for 循环内的 setState 不更新状态:React+Typescript
- c - 垃圾邮件执行时C函数/对象没有返回一致的输出
- docker - kubernetes 服务 - 可以在 3 个不同的变量值(端口、目标端口、节点端口)上使用相同的端口值(即 10002)吗?
- python - 如何更改文本文件中的时间并编辑文本
- oracle - Oracle MINUS 运算符和删除
- python - 是否有用于整个数据集的图像数据增强的 python 代码?
- java - 用于识别解析错误的默认值(字符串 -> 双精度/任何数字)