You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用boto3在S3存储桶创建文件夹失败求助

解决boto3创建S3文件夹时的MissingContentMD5ForObjectLock错误

你的S3存储桶启用了Object Lock,调用PutObject接口创建零字节对象(即模拟文件夹的foo/键)时,服务端强制要求携带Content-MD5请求头,这是导致报错的原因。

解决方案

方案1:直接添加ContentMD5参数

对于零字节对象,其MD5固定为d41d8cd98f00b204e9800998ecf8427e,将此值传入put_object即可:

import boto3

access_key = "REDACTED"
secret_key = "REDACTED"
endpoint = "http://REDACTED"

o = boto3.client(
  's3',
  endpoint_url=endpoint,
  aws_access_key_id=access_key,
  aws_secret_access_key=secret_key)

# 添加ContentMD5参数
o.put_object(Bucket="MyBucket", Key="foo/", ContentMD5="d41d8cd98f00b204e9800998ecf8427e")

方案2:通过分片上传创建空文件夹

使用分片上传的方式创建零字节对象,无需携带Content-MD5:

import boto3

access_key = "REDACTED"
secret_key = "REDACTED"
endpoint = "http://REDACTED"

o = boto3.client(
  's3',
  endpoint_url=endpoint,
  aws_access_key_id=access_key,
  aws_secret_access_key=secret_key)

# 初始化分片上传
upload_id = o.create_multipart_upload(Bucket="MyBucket", Key="foo/")['UploadId']
# 完成分片上传(无分片内容,生成零字节对象)
o.complete_multipart_upload(
    Bucket="MyBucket",
    Key="foo/",
    MultipartUpload={'Parts': []},
    UploadId=upload_id
)

方案3:关闭存储桶的Object Lock(若不需要)

如果你的业务场景不需要Object Lock功能,可修改存储桶配置关闭该功能,之后原代码即可正常运行。

内容的提问来源于stack exchange,提问作者Abhishek Kulkarni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 06:05:16