我开发了一个应用程序,它可以处理收集和详细说明从Internet收集的数据(app_one,app_two,app_three)的一组服务,然后我有一个核心应用程序,可以合并并可视化该信息(app_core) 。 该项目基于AWS Elastic Beanstalk,为每个应用程序提供了自己的git。 为了处理应用程序之间的连接,我(不安全地)将每个服务映射到子域。
我很乐意在VPC内部开发此项目,并保护REST Flask应用程序(一,二,三)和核心应用程序之间的接口。
1)我怎样才能避免公开ip到我的eb-enviroment?每次我跑:
eb create myenvname --instance_type t2.XXX
它会自动设置公共IP。我可以将其移到VPS背后和Internet网关吗?
2)如果有办法在网关后面安全地移动这些服务, 如何解决这些应用程序之间的HTTP请求? 我内部没有子域名,我是否需要使用私有IP(我不这么认为)?有一种私人解决这些服务的方法吗?就像在Docker中一样,将单个docker称为“app_one /”。
如果这些问题看起来很幼稚,我很抱歉,但我有其他感兴趣的领域的背景
非常感谢
我添加项目文件夹结构:
--+/MyAPP
|
|---+/app_one # single env folder
| ...
|
|---+/app_two . # single env folder
| ...
|
|---+/app_three # single env folder
| ...
|
|---+/app_core # single env folder
|--/env # virtual env
|--+/app_core # flask application
|--/lib
|--+/.elasticbeanstalk # eb folder
| |--config.yml
|--application.py
|--requirements.txt
答案 0 :(得分:1)
您必须将您的应用启动到私有子网或设置配置标志AssociatePublicIpAddress = false
。
Configuration Files
使用.ebextensions配置使应用程序正常工作所需的选项,并为可以在更高优先级覆盖的其他选项提供默认值。 .ebextensions中指定的选项具有最低级别的优先级,并被任何其他级别的设置覆盖。
要使用配置文件,请在项目源代码的顶层创建名为.ebextensions的文件夹。添加扩展名为.config的文件,并按以下方式指定选项:
option_settings:
- namespace: namespace
option_name: option name
value: option value
- namespace: namespace
option_name: option name
value: option value
设置标记AssociatePublicIpAddress = false
.ebextensions/app.config
option_settings:
- namespace: aws:ec2:vpc
option_name: AssociatePublicIpAddress
value: false
Subnet
.ebextensions/app.config
option_settings:
- namespace: aws:ec2:vpc
option_name: VPCId
value: vpc-4545121
- namespace: aws:ec2:vpc
option_name: Subnets
value: sub-45455565
.ebextensions
.ebextensions
希望有所帮助!