使用多个环境创建和保护 AWS EB 应用程序

Create and Secure AWS EB Application with multiple Environments

现在

我开发了一个应用程序,它在一组服务之上运行,这些服务正在收集和详细说明从 Internet (app_one、app_two、app_three) 收集的数据,然后我有一个核心应用程序可以合并和可视化该信息 (app_core)。 该项目基于 AWS Elastic Beanstalk,每个应用程序都有自己的 git。 为了处理应用程序之间的连接,我(不安全地)将每个服务映射到一个子域。

我想做什么

我很乐意将此项目的开发转移到 VPC 中,并保护 REST Flask 应用程序(一、二、三)和核心应用程序之间的接口。

我的问题

1) 我怎样才能避免给我的 eb 环境提供 public ip?每次我 运行:

eb create myenvname --instance_type t2.XXX

它会自动设置一个 public IP。我可以把它移到 VPS 和 Internet Gateway 后面吗?

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

您必须将您的应用程序启动到私有子网或设置配置标志 AssociatePublicIpAddress = false

如何设置那个标志?

Configuration Files

Use .ebextensions to configure options that are required to make your application work, and provide default values for other options that can be overridden at a higher level of precedence. Options specified in .ebextensions have the lowest level of precedence and are overridden by settings at any other level.

To use configuration files, create a folder named .ebextensions at the top level of your project's source code. Add a file with the extension .config and specify options in the following manner:

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

+ 资源

希望对您有所帮助!