DigitalOcean Spaces 调用 list_buckets 不返回任何内容

mj_*_*mj_ 3 amazon-s3 digital-ocean boto3 digital-ocean-spaces

我在网上看到很多人都遇到了这个问题,现在我自己也遇到了这个问题。我正在尝试使用 boto3 来 list_buckets 在 DigitalOcean Spaces 中。它返回 200 状态代码,但内部没有列出存储桶。奇怪的是,我可以通过代码创建一个存储桶,但我无法列出它。

人们报告说,当他们使用不同的端点 URL 时,他们取得了成功。我使用过以下内容:

  • https://<space_name>.nyc3.digitaloceanspaces.com
  • https://nyc3.digitaloceanspaces.com

他们两个都没有运气。

import boto3
s3 = boto3.client('s3', region_name=region, endpoint_url=endpoint, aws_access_key_id=access_id, aws_secret_access_key=secret_key)
s3.list_buckets()
Run Code Online (Sandbox Code Playgroud)

list_buckets返回以下响应。

{'ResponseMetadata': {'RequestId': 'tx00000000000010c9ce0be-0061b571d4-1800930a-nyc3c', 'HostId': '', 'HTTPStatusCode': 200, 'HTTPHeaders': {'transfer-encoding': 'chunked', 'x-amz-request-id': 'tx00000000000010c9ce0be-0061b571d4-1800930a-nyc3c', 'content-type': 'application/xml', 'date': 'Sun, 12 Dec 2021 03:51:48 GMT', 'strict-transport-security': 'max-age=15552000; includeSubDomains; preload'}, 'RetryAttempts': 0}}

mj_*_*mj_ 6

我想到了。我创建了我的 DigitalOcean 空间并将其命名为foobar-development。我设置了endpoint='https://nyc3.digitaloceanspaces.com'. 当我这样做时list_buckets,我得到了包含我的空间名称的响应foobar-development。看来“桶”和“空间”是同义词。我以为它们是分开的,我会在空间中创建存储桶然后访问它,但事实并非如此。事情不是这样的。