我目前正在尝试从对象存储 – 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相关文档:
对象存储 - 端点和对象存储地理可用性
对象存储 Swift - S3/Swift REST API 兼容性
谢谢约翰分享这篇文章。您共享的链接提供了拼图的最后一块。这是 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
)