DVC执行push推送数据到S3时返回403 HeadObject错误如何解决
问题原因定位
从dvc push -vv的详细日志可定位到根因:底层首先抛出InvalidAccessKeyId错误,明确提示你提交的AWS访问密钥ID不存在于AWS官方记录中,后续的403 HeadObject权限错误是该问题触发的连锁报错。
解决步骤
- 修正DVC远程存储的密钥配置
你执行的密钥配置命令中直接使用了占位符AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY,没有替换为你的实际AWS密钥值,需要重新配置:
# 替换<>包裹的内容为你自己的AWS密钥 dvc remote modify storage access_key_id <实际的AWS Access Key ID> dvc remote modify storage secret_access_key <实际的AWS Secret Access Key>
如果不想将密钥明文提交到Git仓库,可以加上--local参数,配置会保存在.dvc/config.local(该文件默认被Git忽略):
dvc remote modify --local storage access_key_id <实际的AWS Access Key ID> dvc remote modify --local storage secret_access_key <实际的AWS Secret Access Key>
- 验证密钥与权限有效性
确认你的AWS IAM账号对目标S3桶拥有以下最低权限:- s3:ListBucket
- s3:GetObject
- s3:PutObject
你可以直接用AWS CLI验证权限是否正常:
aws s3 ls s3://mybucket/dvcstore
检查远程路径一致性
你初始添加的远程路径是s3://mybucket/dvcstore,但执行推送时日志显示实际目标是s3://my-bucket/models,需要确认是否有其他配置(如本地config覆盖、DVC环境变量)修改了远程存储路径,保持路径一致。重试推送
完成上述调整后重新执行dvc push即可。
内容的提问来源于stack exchange,提问作者Code Guru
相关产品推荐
相关产品推荐

