Boto3 和 OVH:GetObject 错误指定的存储桶无效

问题描述 投票:0回答:1

我目前正在尝试从对象存储 – S3 API OVH 实现获取对象请求。我对使用 python 的项目有相同的实现,并想将其集成到这里,但由于缺乏对语言的了解,我相信我可能会遗漏一些东西。 我收到此错误:

指定的存储桶无效。

import boto3

client = boto3.client(
    's3',
    aws_access_key_id=ACCESS_KEY,
    aws_secret_access_key=SECRET_KEY,
    aws_endpoint_url=ENDPOINT_URL,
    region_name=REGION_NAME
)

s3_response_object = s3_client.get_object(Bucket=BUCK_NAME_IS_STRING, Key='KEY_STRING')

print(s3_response_object)

我尝试过的事情:

我确认存储桶名称准确并验证了相关权限。这些环境变量已在另一个使用 JavaScript 的项目中成功使用,没有出现任何问题。

值得注意的是,更改 aws_access_key_id 和 aws_secret_access_key 等变量不会影响错误消息,这表明该问题可能与格式错误有关。

ovh相关文档:

对象存储 - 端点和对象存储地理可用性

https://help.ovhcloud.com/csm/en-ie-public-cloud-storage-s3-location?id=kb_article_view&sysparm_article=KB0047393

对象存储 Swift - S3/Swift REST API 兼容性

https://help.ovhcloud.com/csm/en-ie-public-cloud-storage-pcs-s3-swift-rest-api-compatibility?id=kb_article_view&sysparm_article=KB0047197

python amazon-web-services amazon-s3 boto3 ovh
1个回答
0
投票

附加信息

谢谢约翰分享这篇文章。您共享的链接提供了拼图的最后一块。这是 mh4ckt3mh4ckt1c4s

发布的错误

https://github.com/boto/boto3/issues/3258

我想添加一些与 GitHub 上提到的问题相关的信息,该问题与从 OVH 控制面板检索凭证有关。 OVH 提供了以下格式的 URL: https://storage.region.cloud.ovh.net 在我的例子中,我使用了错误的 URL,因为“storage”是仍用于向后的旧名称兼容性。正确的 URL 是:https://s3.region.cloud.ovh.net**

CLI 无法工作的问题也是由于同样的原因。然而,这是一个简单的修复 - 我只需将其设置为

~/.aws/config

解决方案

import boto3

client = boto3.client(
    's3',
    aws_access_key_id=ACCESS_KEY,
    aws_secret_access_key=SECRET_KEY,
    aws_endpoint_url= https://s3.<region>.cloud.ovh.net,
    region_name=REGION_NAME
)
© www.soinside.com 2019 - 2024. All rights reserved.