我想获得elasticache cache_cluster_id以填充jinja2模板。
我正在使用boto从API中获取一些内容,例如ec2实例或elb数据,但对于弹性操作,似乎更难。
import boto.elasticache
conn = boto.elasticache.connect_to_region(region)
elasticache_data = conn.describe_cache_clusters()
这就是我设法得到的,但我不确定如何通过cache_cluster_id循环来获取我需要的所有数据。
参考:http://docs.pythonboto.org/en/latest/ref/elasticache.html
api答案看起来像这样:
> {u'DescribeCacheClustersResponse':
> {u'ResponseMetadata':
> {u'RequestId': u'ID'},
> u'DescribeCacheClustersResult':
> {u'Marker': None,
> u'CacheClusters':
> [
> {u'Engine': u'redis', u'CacheParameterGroup':
> {u'CacheNodeIdsToReboot': [],
> u'CacheParameterGroupName': u'default',
> u'ParameterApplyStatus': u'in-sync'},
> u'CacheClusterId': u'whatever',
> u'CacheSecurityGroups': [],
> u'ConfigurationEndpoint': None,
> u'CacheClusterCreateTime': 1415217879.493,
> u'ReplicationGroupId': u'whatever',
> u'AutoMinorVersionUpgrade': True,
> u'CacheClusterStatus': u'available',
> u'NumCacheNodes': 1,
> u'ClientDownloadLandingPage': u'https://console.aws.amazon.com...',
> u'PreferredAvailabilityZone': u'us-east-1a',
> u'SecurityGroups': [{u'Status': u'active', u'SecurityGroupId': u'123'}],
> u'CacheSubnetGroupName': u'whatever',
> u'EngineVersion': u'2.8.6',
> u'PendingModifiedValues':
> {u'NumCacheNodes': None,
> u'EngineVersion': None,
> u'CacheNodeIdsToRemove': None},
> u'CacheNodeType': u'cache.m1.small',
> u'NotificationConfiguration': None,
> u'PreferredMaintenanceWindow':
> u'sat:04:30-sat:05:30',
> u'CacheNodes': None
> }
> ]
> }
> } }
答案 0 :(得分:1)
不确定这是否是正确的做法......但它似乎适合我的需要。 如果有人有更好的方法,请告诉我。
import boto.elasticache
conn = boto.elasticache.connect_to_region(region)
data = conn.describe_cache_clusters()
clusters = data["DescribeCacheClustersResponse"]["DescribeCacheClustersResult"]["CacheClusters"]
for value in clusters:
print value["CacheClusterId"]
答案 1 :(得分:0)
import boto3
conn = boto3.client('elasticache')
data = conn.describe_cache_clusters()
#print(data)
#print(data['CacheClusters'])
for r in data['CacheClusters']:
#print(r)
db_engine = r["Engine"]
print(db_engine)