获取当前运行beanstalk版本标签的Java代码?

时间:2014-02-26 00:19:01

标签: amazon-web-services elastic-beanstalk

在运行在beanstalk上的正在运行的Java应用程序中,如何获取当前正在运行的beanstalk版本标签?

[以后多次修改...]

经过索尼的一些反复评论(见下文),我写了下面的代码,现在对我有用。如果在部署时在版本标签中添加了有意义的注释,那么这将告诉您正在运行的内容。我们有一个持续的构建环境,因此我们可以让我们的构建环境提供一个标签,该标签会导致相关代码的签入注释。把这些放在一起,您的服务器可以准确地告诉您它运行的相对于您的源代码签入的代码。对我们真的很有用。好了,我现在正在回答我自己的问题,但索尼提供了宝贵的帮助。遗憾的是,您无法删除硬编码值并在运行时查询这些值。

String getMyVersionLabel() throws IOException {
    Region region = Region.getRegion(Regions.fromName("us-west-2")); // Need to hard-code this

    AWSCredentialsProvider credentialsProvider = new ClasspathPropertiesFileCredentialsProvider();
    AWSElasticBeanstalkClient beanstalk = region.createClient(AWSElasticBeanstalkClient.class, credentialsProvider, null);

    String environmentName = System.getProperty("PARAM2", "DefaultEnvironmentName"); // Need to hard-code this too

    DescribeEnvironmentsResult environments = beanstalk.describeEnvironments();
    for (EnvironmentDescription ed : environments.getEnvironments()) {
        if (ed.getEnvironmentName().equals( environmentName)) {
            return "Running version " + ed.getVersionLabel() + " created on " + ed.getDateCreated());
            break;
        }
    }
    return null;
}

1 个答案:

答案 0 :(得分:1)

您可以使用AWS Java SDK并直接调用它。

请参阅describeApplicationVersions API的详细信息,了解如何获取应用程序中的所有版本。确保为您的区域提供(否则您将获得默认AWS区域的版本)。

现在,如果您需要了解当前部署的版本,则需要另外调用DescribeEnvironmentsRequest。这有 versionLabel ,它会告诉您当前部署的版本。

同样,如果您需要知道代码中的环境名称,则需要将其作为参数传递给aws控制台中的beanstalk配置,并作为PARAM进行访问。