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

PowerShell复制文件到开启Object Lock的AWS S3桶Content-MD5报错求助

问题解决:上传文件到开启Object Lock的S3存储桶报错Content-MD5缺失

报错原文:

Write-S3Object : Content-MD5 HTTP header is required for Put Object requests with Object Lock parameters

该报错核心原因是:开启了Object Lock功能的S3存储桶,当PUT请求携带Object Lock相关参数时,AWS会强制要求请求头中包含Content-MD5字段用于校验文件完整性,旧版本的AWS Tools for PowerShell默认不会自动生成该字段,因此触发报错。

方案1:继续使用PowerShell Write-S3Object命令

  • 优先更新AWS Tools for PowerShell到最新版本
    从4.1.0版本开始,AWS.Tools.S3模块的Write-S3Object已自动处理Object Lock场景下的Content-MD5生成逻辑,直接执行更新命令即可:
    Update-Module AWS.Tools.S3 -Force
    更新后直接按原有逻辑调用Write-S3Object即可,无需额外修改参数。
  • 无法更新模块的场景,手动计算并传入MD5头
    先计算目标文件的Base64编码MD5值,再通过-Header参数传入请求头,示例代码如下:
    # 计算文件MD5并转Base64
    $filePath = "C:\SSIS\生成的目标文件.csv"
    $md5 = [System.Security.Cryptography.MD5]::Create()
    $fileHash = $md5.ComputeHash([System.IO.File]::ReadAllBytes($filePath))
    $contentMd5 = [System.Convert]::ToBase64String($fileHash)
    
    # 上传到S3,携带Object Lock配置
    Write-S3Object -BucketName "你的存储桶名称" `
      -Key "自定义前缀/目标文件名.csv" `
      -File $filePath `
      -ObjectLockMode "COMPLIANCE" `
      -ObjectLockRetainUntilDate (Get-Date).AddDays(30) `
      -Header @{"Content-MD5" = $contentMd5}
    

方案2:使用AWS CLI上传(更稳定,推荐)

AWS CLI的s3相关命令会自动处理所有S3规则要求的请求头,不需要手动计算MD5,直接调用即可,示例命令:

aws s3 cp C:\SSIS\生成的目标文件.csv s3://你的存储桶名称/自定义前缀/目标文件名.csv \
  --object-lock-mode COMPLIANCE \
  --object-lock-retain-until-date "2024-12-31T00:00:00Z"

该方案更适合SSIS调度场景,直接在SSIS的「执行进程任务」中调用AWS CLI即可,容错率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 23:00:01