如何从AWS SDK for Java克隆弹性Beanstalk环境?

如何从AWS SDK for Java克隆弹性Beanstalk环境?,java,amazon-elastic-beanstalk,aws-sdk,Java,Amazon Elastic Beanstalk,Aws Sdk,我需要从AWS SDK for Java克隆一个弹性Beanstalk环境 我找到了解释如何创建环境的答案,但我找不到任何示例或说明如何克隆环境的文档 我为CreateEnvironmentRequest找到了一个克隆方法,但根据该方法,它克隆CreateEnvironmentRequest对象,而不是环境 已经为此打开了一个窗口,因为目前无法从sdk执行克隆操作。如果您感兴趣,您可能希望重新打开该票据并提供您的理由 另一种可能是从Java调用eb cli来运行环境克隆。好吧,您不能使用Java

我需要从AWS SDK for Java克隆一个弹性Beanstalk环境

我找到了解释如何创建环境的答案,但我找不到任何示例或说明如何克隆环境的文档

我为CreateEnvironmentRequest找到了一个克隆方法,但根据该方法,它克隆CreateEnvironmentRequest对象,而不是环境

已经为此打开了一个窗口,因为目前无法从sdk执行克隆操作。如果您感兴趣,您可能希望重新打开该票据并提供您的理由


另一种可能是从Java调用eb cli来运行环境克隆。

好吧,您不能使用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());
}