我需要列出我的数字海洋空间中存储桶中的所有对象。这是我现在的代码。
s3 = boto3.resource('s3', region_name=region_name, endpoint_url=endpoint_url, aws_access_key_id=key, aws_secret_access_key=secret)
bucket = s3.Bucket(bucket_name)
for object in bucket.objects.all():
print(object)
引发以下异常
NoSuchKey: An error occurred (NoSuchKey) when calling the ListObjects operation: Unknown
任何关于可能出现问题或我需要添加的内容的想法。谢谢!
我没有发现您的代码有任何语法或语义问题。您可能会遇到问题,因为如果对象的路径包含任何空格或对象名称包含任何特殊字符或 URL 编码字符。
请参阅 AWS 的排查 404“NoSuchKey”错误文档。我建议检查本文档中的最后三个项目符号。
在我的例子中,我用于 Digital Ocean 的端点 URL 包含存储桶名称
从端点中删除存储桶名称使其正常工作
例如:
无法使用此网址:
https://some-bucket-name.nyc3.digitaloceanspaces.com
此端点网址有效:
https://nyc3.digitaloceanspaces.com