我正在尝试连接并动态获取特定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()
的地区。请帮忙!
答案 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指标之外的其他指标。