python connect_cloudwatch不同的区域

时间:2014-05-23 18:32:19

标签: python amazon-web-services amazon-ec2 boto amazon-cloudwatch

我正在尝试连接并动态获取特定AWS区域中AWS 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()的地区。请帮忙!

3 个答案:

答案 0 :(得分:0)

您可以在.boto配置文件中选择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

以上操作会在您运行时将您连接到我们 - west-2:

import boto

conn = boto.connect_cloudwatch()

希望它有所帮助。

答案 1 :(得分:0)

您在上面显示的代码看起来很好。 list_metrics方法将返回当前帐户中实际具有与之关联的数据的所有指标。如果您只看到EC2指标,则表示您的帐户仅在CloudWatch中为该地区收集了EC2数据。

答案 2 :(得分: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指标之外的其他指标。