如何从适用于 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 移动开发工具包中内置的网络安全性如何?

使用适用于 Ruby 的 AWS 开发工具包时在 AWS Kinesis Firehose 记录之间插入换行符

在 ECS 中运行时,适用于 node.js 的 AWS 开发工具包未获取凭证