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

时间:2018-01-17 17:49:47

标签: amazon-web-services elastic-beanstalk amazon-vpc flask-restful

现在

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

我想做什么

我很乐意在VPC内部开发此项目,并保护REST Flask应用程序(一,二,三)和核心应用程序之间的接口。

enter image description here

我的问题

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

1 个答案:

答案 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

+资源

希望有所帮助!