1

연결할 때 동적으로 특정 AWS 지역에서 AWS CloudWatch에서에서 사용할 수있는 모든 서비스에 대한 모든 통계를 얻기 위해 노력하고 있어요 :파이썬 connect_cloudwatch 다른 지역

try: 
    print "Connecting to region %s" % (args.region) 
    conn = boto.connect_cloudwatch() 
    #conn = boto.ec2.cloudwatch.connect_to_region(args.region) 
    print "Retrieving all CloudWatch metrics" 
    metrics = conn.list_metrics() 
    print "Collected %d metrics" % (len(metrics)) 
except boto.exception.BotoServerError, error: 
    print "Failed to connect to AWS\n ->%s" % (error) 
    sys.exit(1) 

불행하게도 boto.ec2.cloudwatch.connect_to_region(args.region)이 지역에서 유일한 EC2 메트릭 줘, 나는 설명서에서 지역을 지정하는 방법을 conn = boto.connect_cloudwatch()으로 알 수 없습니다. 도와주세요!

답변

0

.boto 구성 파일에서 Cloudwatch 영역을 선택할 수 있습니다. 예를 들어 :

import boto 

conn = boto.connect_cloudwatch() 

는 희망이 도움이 :

[Credentials] 
aws_access_key_id = <your aws access key> 
aws_secret_access_key = <your aws secret access key> 

[Boto] 
cloudwatch_region_name = us-west-2 
cloudwatch_region_endpoint = monitoring.us-west-2.amazonaws.com 

는 상기 서쪽이 우리에게 당신이 실행에 연결됩니다.

+0

이것은 지금까지 할 수있는 최선의 방법입니다. 고마워, @ 리코! 나는 그것에게 시도를 줄 것이고,이 지위에 관해 후속 할 것이다. 이 접근법에 대한 역동적 인 해결책을 알고 있습니까? – eistrati

0

위의 코드는 정상적으로 보입니다. list_metrics 메서드는 현재 계정에서 실제로 연결된 데이터가있는 모든 메트릭을 반환합니다. EC2 측정 항목 만보고있는 경우 해당 지역의 CloudWatch에서 수집 한 EC2 데이터 만 계정에 있음을 의미합니다.

+0

다른 지역을 제공하는 방법에 대한 답을 찾고 있습니다. 'boto.connect_cloudwatch()'를 프로그래밍 방식으로 처리 할 수 ​​있습니까? 코드 샘플은 무엇을 할 수 있습니까? – eistrati

+0

글쎄, 당신은 자신의 RegionInfo 객체를 만들고 그것을''boto.connect_cloudwatch()''메소드에 전달할 수 있습니다.하지만 왜 그렇게하고 싶은지 궁금합니다. 나는''connect_to_region()''을 사용하는 것이 훨씬 쉽다고 생각한다. – garnaat

0

boto.connect_cloudwatch()은 정확히 boto.ec2.cloudwatch.connect_region('eu-west-1')과 동일하지만 해당 지역을 묻지 않습니다. 이 지역은 ~/.boto의 구성에서 사용됩니다. 영역을 지정하는 일반적인 방법은 connect_region('myregion')을 사용하거나 여러 영역에서 작업하지 않는 경우 구성에서 설정하는 것입니다.

boto.ec2.cloudwatch.connect_region('eu-west-1')으로 생성 된 연결 개체에서 메트릭을 찾을 수 없으면 다른 메트릭에서 메트릭을 찾을 수 없습니다. 두 경우 모두 boto.ec2.cloudwatch.CloudWatchConnection 개체를 만듭니다. (Boto documentation)

필자는 문서 boto는 현재 EC2- 메트릭보다 다른 메트릭을 지원하지 않는다고 알고 있습니다.