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

AWS控制台可传文件至S3存储桶,CLI上传报AccessDenied如何解决?

解决AWS CLI执行s3 sync时的AccessDenied问题

你遇到的问题根源在于:aws s3 sync命令需要读取目标S3桶内的现有对象列表(对应ListObjectsV2操作,即s3:ListBucket权限),以此对比本地文件和桶内文件的差异实现增量同步;而AWS控制台手动上传文件仅需s3:PutObject权限,不需要列出桶内容的权限,所以控制台能成功但CLI sync失败。

可以按以下步骤解决:

  • 检查并补充IAM权限:确保你CLI使用的IAM身份(用户/角色)拥有以下权限:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:PutObject",
                    "s3:ListBucket"
                ],
                "Resource": [
                    "arn:aws:s3:::<s3-bucket>",
                    "arn:aws:s3:::<s3-bucket>/test-directory/*"
                ]
            }
        ]
    }
    

    注意替换<s3-bucket>为你的实际桶名,s3:ListBucket的资源是桶本身,s3:PutObject的资源是桶内的目标路径。

  • 确认CLI使用的身份与控制台一致:有时候CLI默认配置的身份和你控制台登录的不是同一个。执行以下命令查看当前CLI的身份:

    aws sts get-caller-identity
    

    对比返回的UserId和Arn与你控制台登录的IAM身份是否匹配。如果不一致,需要切换CLI的配置文件(用aws configure --profile <profile-name>)或者更新默认配置的密钥。

  • 临时替代方案(无需增量同步):如果不需要sync的增量更新功能,直接用递归上传命令,该命令仅需s3:PutObject权限:

    aws s3 cp --recursive d1/ s3://<s3-bucket>/test-directory
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 17:13:12