如何使用Python打印s3存储桶名称

时间:2019-08-01 18:59:58

标签: python-3.x amazon-web-services boto3

我正在尝试从我的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'}]

现在尝试仅打印出名称,然后在最终代码中使用此代码。

1 个答案:

答案 0 :(得分:1)

如您所见,s3response是一个字典,其中包含您需要的内容以及大量其他元数据;您只需要相应地取出内容即可。

for bucket in s3response['Buckets']:
    print(bucket['Name'])