2014-02-26 41 views
1

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

[多个编辑后...]

与索尼(见下文)几回的往复的意见后,我写了下面的代码这对我现在的作品。如果您在部署时在版本标签中添加有意义的评论,那么这会告诉您您正在运行的是什么。我们有一个持续的构建环境,所以我们可以让我们的构建环境提供一个标签,导致相关代码的签入注释。把这一切放在一起,你的服务器可以告诉你它的运行相对于源代码检查的确切代码。真的对我们有用。现在我确实在回答我自己的问题,但有索尼的宝贵帮助。看起来很遗憾你不能删除硬编码值并在运行时查询这些值。

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

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

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

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

这里再一次,如果您需要知道代码中的环境名称,您需要将它作为参数传递给aws控制台中的beanstalk配置,并作为PARAM进行访问。

+0

是的,你需要告诉该地区。否则它从默认区域获取。看看它是否有帮助。 –

+0

谢谢索尼 - 我修改了原始问题中的代码(参见上文),它使我现在正确的版本(来自右侧区域),但是我怎么知道哪一个是当前运行的版本? – Danger

+0

我在上面的答案中添加了更多信息。 –