我正在将Amazon Elastic Beanstalk与VPC一起使用,我想拥有多个具有不同IP地址的环境(工作人员)。我不需要它们是静态的,我实际上希望它们尽可能地定期更改。
是否可以使用动态外部IP地址建立多个环境?
答案 0 :(得分:0)
很难理解想要更改Elastic Beanstalk环境的实例IP地址的用例。像Elastic Beanstalk这样的托管服务提供的基本优势是对用于部署的基础架构的抽象。您将获得一个CNAME来访问环境(您的应用程序)的API,并且您不应依赖内部IP地址或负载均衡器URL来添加任何内容,因为它们可以被beantalk服务随意添加或删除。
话虽这么说,您有一种方法可以实现更改基础实例的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重建环境。您可以按照以下步骤来实现。
以下示例策略将有效
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:RebuildEnvironment"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
crontab -e
添加cron作业以下示例cron作业在每月的1月12:00重建环境。
0 0 1 * * aws elasticbeanstalk rebuild-environment --environment-name my-environment-name
不建议您不必要地重建环境,但是到目前为止,还没有明确的方法来满足您的特定要求。希望对您有所帮助!
进一步阅读: