我是Python和Lambda的新手,我试图在所有地区获得in-use卷的列表。
from datetime import datetime, date
import boto3
def lambda_handler(event, context):
ec2 = boto3.client('ec2')
# Get list of regions
regions = ec2.describe_regions().get('Regions',[] )
# Iterate over regions
for region in regions:
print "Looking at region %s " % region['RegionName']
reg=region['RegionName']
# Connect to region
ec2 = boto3.client('ec2',region_name=reg)
# Get all in-use volumes
volumes = ec2.describe_volumes( Filters=[{'Name': 'status', 'Values': ['in-use']}])
for volume in volumes:
print "Looking at volume %s" % volume['VolumeId']我一直收到以下错误,但不知道原因:
String indices must be integers, not str: TypeError
Traceback (most recent call last):
File "/var/task/lambda_function.py", line 22, in lambda_handler
print "Looking at volume %s" % volume['VolumeId']
TypeError: string indices must be integers, not str发布于 2017-02-13 19:59:57
volumes并不是一个卷的小块。
>>> volumes.keys()
['ResponseMetadata', u'Volumes']因此,您需要遍历volumes['Volumes']。试试这个:
for volume in volumes['Volumes']:
print "Looking at volume %s" % volume['VolumeId']输出
Looking at region ap-south-1
Looking at volume vol-1234853ed7652bbb1
Looking at volume vol-00aac56781f21a83
Looking at region eu-west-2
Looking at region eu-west-1
Looking at region ap-northeast-2
Looking at region ap-northeast-1https://stackoverflow.com/questions/42212334
复制相似问题