1

我正在尝试连接并动态获取特定 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(). 请帮忙!

4

3 回答 3

0

You can choose the Cloudwatch region in the .boto config file. For example:

[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

The above will connect you to us-west-2 when you run:

import boto

conn = boto.connect_cloudwatch()

Hope it helps.

于 2014-05-23T23:49:54.147 回答
0

您在上面显示的代码看起来不错。该list_metrics方法将返回当前帐户中实际具有与其关联的数据的所有指标。如果您只看到 EC2 指标,那么这意味着您的账户只有在 CloudWatch 中为该区域收集的 EC2 数据。

于 2014-05-24T14:26:42.543 回答
0

boto.connect_cloudwatch()将完全一样,boto.ec2.cloudwatch.connect_region('eu-west-1')但不要求该地区。该区域从 中的配置中使用~/.botoconnect_region('myregion')如果您不跨多个区域工作,则指定区域的常用方法是使用或仅在配置中设置它。

因此,如果您在由您创建的连接对象中找不到您的指标,boto.ec2.cloudwatch.connect_region('eu-west-1')您将无法在另一个对象中找到它。两种情况都会创建一个boto.ec2.cloudwatch.CloudWatchConnection对象。(博托文档

据我了解,文档 boto 目前不支持 EC2 指标以外的其他指标。

于 2014-05-24T21:58:23.453 回答