使用boto3检索所有区域的存储桶列表。

0

【以下的问题经过翻译处理】 我试图使用boto3从所有区域检索桶列表,但是我无法列出来自正确区域的存储桶。

到目前为止,我已经尝试了 location['LocationConstraint'],但它显示为 None。 我也尝试了以下方法,但没有起作用。

任何帮助都将不胜感激,谢谢!

profile picture
エキスパート
質問済み 5ヶ月前41ビュー
1回答
0

【以下的回答经过翻译处理】 head_bucket函数会自动在后台重定向到正确的区域,因此无论从哪个区域调用它,x-amz-bucket-region标头始终将是存储桶的区域。

将条件更改为以下内容应给出所需的输出:

if client.head_bucket(Bucket=bucket['Name'])['ResponseMetadata']['HTTPHeaders']['x-amz-bucket-region'] == reg:

然而,像那样遍历每个区域会产生许多不必要的请求,因此可能值得查看get_bucket_location函数,该函数返回LocationConstraint值,正如您所发现的,对于位于us-east-1的存储桶,该值为None。任何其他区域的存储桶都应返回实际的区域名称。只需遍历所有桶一次并在每个桶上调用get_bucket_location即可加快响应速度。

profile picture
エキスパート
回答済み 5ヶ月前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

質問に答えるためのガイドライン