如何在Python中获取Amazon S3桶的元数据/头部(使用Boto库),类似于Openstack Swift?

1 投票
1 回答
5492 浏览
提问于 2025-04-18 17:08

我想获取一个亚马逊S3存储桶的元数据/头信息列表。

在OpenStack Swift存储中,我可以通过以下方式获取元数据 -> 这是请求元数据的curl命令:

curl -i http://localhost:8080/v1/AUTH_test/container1 -X HEAD -H "X-Auth-Token: AUTH_tk6194fghrt"

上面curl命令的响应:

HTTP/1.1 204 No Content
Content-Length: 0
X-Container-Object-Count: 6
Accept-Ranges: bytes
X-Trans-Id: tx0ff9f8541e2c4e019dea1-0053eb48a7
Date: Wed, 13 Aug 2014 11:14:47 GMT
X-Container-Meta-Century: Nineteenthsssssssssssss
X-Timestamp: 1399987571.97634
X-Container-Meta-Author: Mustafa
X-Container-Bytes-Used: 3978833
Content-Type: text/plain; charset=utf-8
X-Trans-Id: tx1c2734f1e4ca4f3e835da-0053eb497d

在OpenStack Swift中,我可以使用python-swiftclient API获取上述Swift容器(存储桶)的元数据。
我想对亚马逊S3存储桶做同样的事情。那么,我该如何用Python获取Amazon S3存储桶元数据呢?(我正在使用boto库)
这可能吗,还是我在“白费力气”?

更新:
我想获取的是存储桶的元数据,而不是存储桶中的键。

1 个回答

2

你可以试试这个 boto 的代码片段:

from boto.s3.connection import S3Connection
conn = S3Connection('<aws access key>', '<aws secret key>')
mybucket = conn.get_bucket('mybucket')
for key in mybucket:
    key = mybucket.get_key(key.name)
    print key.name
    print key.get_metadata('revision')

想了解更多关于 boto 的信息,可以查看这里: https://boto.readthedocs.org/en/latest/s3_tut.html

希望这对你有帮助。

更新:

你还可以尝试其他的方法:

resp = conn.make_request("HEAD", mybucket)
print resp.getheaders()

希望你能在响应头中看到你想要的一些元数据。

撰写回答