如何使用boto从elasticache获取cache_cluster_id

时间:2014-11-27 02:15:41

标签: python amazon-web-services boto amazon-elasticache

我想获得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
>                     }
>                 ]
>             }
>     } }

2 个答案:

答案 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)