如何从适用于 Java 的 AWS 开发工具包克隆 Elastic Beanstalk 环境?
Posted
技术标签:
【中文标题】如何从适用于 Java 的 AWS 开发工具包克隆 Elastic Beanstalk 环境?【英文标题】:How can I clone an Elastic Beanstalk environment from the AWS SDK for Java? 【发布时间】:2017-02-15 19:44:44 【问题描述】:我需要从 AWS SDK for Java 克隆一个 Elastic Beanstalk 环境。
我找到了 this 答案,解释了如何创建环境,但我找不到任何示例或说明如何克隆环境的文档。
我为CreateEnvironmentRequest
找到了clone
方法,但根据documentation,它克隆了CreateEnvironmentRequest
对象,而不是环境。
【问题讨论】:
可能你应该先创建一个docs.aws.amazon.com/elasticbeanstalk/latest/api/…,然后从这个模板创建需要的环境? 【参考方案1】:嗯,你不能用 Java SDK for AWS 完全克隆一个环境,我的方法是每次都简单地创建一个新环境,你可以这样做:
将您的部署文件(war、zip 等)上传到 S3
为您的部署创建一个链接到之前上传的文件的版本
private CreateApplicationVersionRequest createApplicationVersion()
return new CreateApplicationVersionRequest()
.withApplicationName("The app name")
.withAutoCreateApplication(true)
.withSourceBundle(new S3Location("bucket_name", deployedArtifactId))
.withVersionLabel("a number for the version");
你去寻找你的堆栈的最新版本
private void getLatestStackSolutionVersion()
ListAvailableSolutionStacksResult response = beanstalkClient.listAvailableSolutionStacks();
for (int i = 0; i < response.getSolutionStacks().size(); i++)
if (response.getSolutionStacks().get(i).contains("Java 8")
stackName = response.getSolutionStacks().get(i);
break;
配置您的环境、系统属性和一切的属性。
private Collection<ConfigurationOptionSetting> setEnvironmentProperties()
Collection<ConfigurationOptionSetting> configurationOptionSettings = new HashSet<>();
configurationOptionSettings.add(new ConfigurationOptionSetting("aws:autoscaling:launchconfiguration", "InstanceType", "t2.medium"));
configurationOptionSettings.add(new ConfigurationOptionSetting("aws:ec2:vpc", "VPCId","thevpcid");
configurationOptionSettings.add(new ConfigurationOptionSetting("aws:ec2:vpc", "Subnets", "thesubnets");
configurationOptionSettings.add(new ConfigurationOptionSetting("aws:ec2:vpc", "ELBSubnets", "theelbsubnets");
configurationOptionSettings.add(new ConfigurationOptionSetting("aws:elasticbeanstalk:application:environment", "ANOTHER_PROPERTY", "a value"));
return configurationOptionSettings;
一切就绪,创建环境。
public void deployCreatingEnvironment()
getLatestStackSolutionVersion();
beanstalkClient.createApplicationVersion(createApplicationVersion());
beanstalkClient.createEnvironment(setupNewEnvironment());
瞧!这就像每次都在克隆,希望这对你有用。
【讨论】:
【参考方案2】:已经为此打开了一个issue,因为目前无法从 sdk 进行克隆操作。如果您有兴趣,您可能需要重新开票并提供您的理由。
另一种可能性是从 Java 调用 eb
cli 来运行环境的克隆。
【讨论】:
以上是关于如何从适用于 Java 的 AWS 开发工具包克隆 Elastic Beanstalk 环境?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用适用于 DynamoDb 的 AWS Rust 开发工具包编写惯用的 Rust 错误处理?
从适用于 PHP 的 AWS 开发工具包中提取受保护的请求响应
使用适用于 Ruby 的 AWS 开发工具包发布到 SNS 主题时指定区域
适用于 iOS/Android 的 AWS 移动开发工具包中内置的网络安全性如何?