2014-02-26 2 views
1

실행중인 Java 응용 프로그램에서 실행중인 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

당신은 AWS Java SDK를 사용하여 직접 호출 할 수 있습니다.

응용 프로그램의 모든 버전을 얻는 방법은 describeApplicationVersions API의 세부 정보를 참조하십시오. 물론 지역을 제공 할 것인지 확인하십시오. 그렇지 않으면 기본 AWS 영역에서 버전을 가져옵니다.

현재 배포 된 버전을 알아야 할 경우 DescribeEnvironmentsRequest을 추가로 호출해야합니다. 이 버전은 versionLabel이며 현재 배포 된 버전을 알려줍니다.

코드에서 환경 이름을 알아야 할 경우 aws 콘솔의 beanstalk 구성에 param으로 전달하고 PARAM으로 액세스해야합니다.

+0

예, 해당 지역에 알려야합니다. 그렇지 않으면 기본 영역에서 가져옵니다. 도움이되는지 확인하십시오. –

+0

감사합니다. 소니 - 올바른 지역에서 올바른 버전을 얻을 수있는 원래 질문 (위 참조)의 코드를 수정했는데, 현재 실행중인 버전이 무엇인지 어떻게 알 수 있습니까? – Danger

+0

위의 대답에 대한 추가 정보를 추가했습니다. –