【问题标题】:Is there a way to have multiple external IP addresses with Elastic Beanstalk?有没有办法让 Elastic Beanstalk 拥有多个外部 IP 地址?
【发布时间】:2019-09-23 23:51:01
【问题描述】:

我将 Amazon Elastic Beanstalk 与 VPC 结合使用,并且我希望拥有多个具有不同 IP 地址的环境(工作人员)。我不需要它们是静态的,如果可能的话,我实际上更希望它们定期更改。

有没有办法让多个环境具有动态外部 IP 地址?

【问题讨论】:

    标签: amazon-elastic-beanstalk


    【解决方案1】:

    很难理解想要更改 Elastic Beanstalk 环境的实例 IP 地址的用例。像 Elastic Beanstalk 这样的托管服务提供的基本优势是对部署的底层架构的抽象。您将获得一个 CNAME 来访问环境(您的应用程序)的 API,并且您不应该依赖内部 IP 地址或负载均衡器 URL 来获取任何内容,因为它们可以被 beanstalk 服务随意添加和删除。

    话虽如此,有一种方法可以实现为底层实例更改 IP。

    Elastic Beanstalk Rebuild Environment 会销毁包括 EC2 在内的现有资源并创建新资源,从而使您的实例拥有新的 IP 地址。考虑到计划的停机时间(几分钟,具体取决于您的资源)对于这个用例来说不是问题,这将是可行的。

    您可以使用以下两种方式之一来安排环境重建

    解决方案 1:

    您可以使用简单的 lambda 函数安排您的 Rebuild Environment

    import boto3
    envid=['e-awsenvidid']
    client = boto3.client('elasticbeanstalk')
    def handler(event, context):
        try:
             for appid in range(len(envid)):
                 response = client.rebuild_environment(EnvironmentId=str(envid[appid].strip()))
                 if response:
                     print('Restore environment %s' %str(envid[appid]))
                 else:
                     print('Failed to Restore environment %s' %str(envid[appid]))
    
        except Exception as e:
            print('EnvironmentID is not valid')
    

    为此,您必须创建一个具有所需权限的 IAM 角色。

    您可以在this AWS Guide 中找到综合指南。

    解决方案 2:

    您可以使用 cron 作业通过 aws-cli 重建环境。您可以按照以下步骤来实现。

    1. 创建 EC2 实例
    2. 创建具有重建环境权限的 IAM 角色

    以下示例策略将起作用

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Action": [
            "elasticbeanstalk:RebuildEnvironment"
          ],
          "Effect": "Allow",
          "Resource": "*"
        }
      ]
    }
    
    1. 将 IAM 角色附加到 EC2 实例
    2. 使用命令crontab -e添加一个cron作业

    以下示例 cron 作业在每月 1 日凌晨 12 点重建环境

    0 0 1 * * aws elasticbeanstalk rebuild-environment --environment-name my-environment-name
    
    1. 保存 cronjob 并退出。

    不建议不必要地重建环境,但目前还没有明确的方法来实现您的特定要求。所以希望这会有所帮助!

    进一步阅读:

    【讨论】:

    • 感谢您的帮助。我在 VPC 中有我的环境,以便我可以与我的 mongo 数据库进行对等。有没有办法让每个环境都有自己的 IP 地址并且仍然都在 VPC 中?
    猜你喜欢
    • 2015-06-21
    • 2022-08-14
    • 2019-04-26
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 2012-03-09
    • 1970-01-01
    • 2012-01-01
    相关资源
    最近更新 更多