我正在尝试从我的AWS账户中检索S3存储桶名称,但是下面的代码似乎无法按照我想要的方式运行。
import boto3
import json
s3client = boto3.client('s3')
def lambda_handler(event, context):
s3response = s3client.list_buckets()
print(s3response)
如果我在Python中逐行运行代码,那么我看到s3response中包含值,但是当我运行>>> Python listalls3buckets.py之类的文件时,似乎无法将其打印到屏幕上。
如果我逐行进行操作,这就是我所看到的;
Python 2.7.10 (default, Feb 22 2019, 21:55:15)
[GCC 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.37.14)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import boto3, json
>>> s3client = boto3.client('s3')
>>> s3response = s3client.list_buckets(
... )
>>> s3response
{u'Owner': {u'DisplayName': 'mylab+myLabServices-nonProd-4177', u'ID': 'c226028770a60fb45fb951e27ff6353280086514dd5c019d07a46efe892aa4f8'}, u'Buckets': [{u'CreationDate': datetime.datetime(2019, 8, 1, 16, 47, 12, tzinfo=tzutc()), u'Name': 'sample-testbucket-delete'}], 'ResponseMetadata': {'HTTPStatusCode': 200, 'RetryAttempts': 0, 'HostId': '1sFG3nzi+HTw5eHcJqC3p0PxVQhdbJ0js4z6KU45+oNaO/879uraDaOD6c2RiFKWD0HK/jH7kqA=', 'RequestId': 'E1B30DBB4114C29C', 'HTTPHeaders': {'x-amz-id-2': '1sFG3nzi+LGw5eHcJqC3p0PxVQhdbJ0js4z6KU45+oNaO/879uraDaOD6c2RiFKWD0HK/jH7kqA=', 'server': 'AmazonS3', 'transfer-encoding': 'chunked', 'x-amz-request-id': 'E1B30DBB4114C29C', 'date': 'Thu, 01 Aug 2019 18:53:41 GMT', 'content-type': 'application/xml'}}}
我可以看到存储桶的名称是“ sample-testbucket-delete”,但是我想要的是,当我运行代码时,它只是打印出了名称。我可以帮忙吗?
编辑:我到了可以看到没有打印出很多元数据的存储桶名称的地步;
>>> s3response["Buckets"]
[{u'CreationDate': datetime.datetime(2019, 8, 1, 16, 47, 12, tzinfo=tzutc()), u'Name': 'sample-testbucket-delete'}]
现在尝试仅打印出名称,然后在最终代码中使用此代码。
答案 0 :(得分:1)
如您所见,s3response
是一个字典,其中包含您需要的内容以及大量其他元数据;您只需要相应地取出内容即可。
for bucket in s3response['Buckets']:
print(bucket['Name'])