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

AWS S3 NoSuchKey错误求助:服务器上传文件后对象缺失

排查AWS S3 NoSuchKey错误与服务器上传失败问题

核心现象

  • 手动上传文件到S3后访问URL完全正常
  • 服务器上传图片后,文件并未存入目标桶,访问返回的URL会触发NoSuchKey错误,错误详情如下:
This XML file does not appear to have any style information associated with it. The document tree is shown below.

<Error>
<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
<Key>1.jpg</Key>
<RequestId>...</RequestId>
<HostId>...</HostId>
</Error>

已确认的配置信息

  1. 存储桶已解除公共访问限制,处于公开状态
  2. 桶权限策略:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my bucket name/*"
        },
        {
            "Sid": "2",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::awsaccount ID:root"
            },
            "Action": [
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::my bucket name/*"
        }
    ]
}
  1. CORS配置:
[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "PUT",
            "POST"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [
            "ETag"
        ]
    }
]
  1. 已配置对应IAM用户权限(截图显示相关权限)

问题排查与解决步骤

1. 检查服务器使用的IAM身份权限

当前桶策略仅允许根账户执行s3:PutObject操作,但服务器上传几乎不可能使用根账户,大概率用的是普通IAM用户:

  • 登录AWS控制台进入IAM模块,找到服务器使用的IAM用户
  • 确认该用户的权限策略中包含针对目标桶的s3:PutObject权限
  • 若缺失,添加如下权限策略:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::my bucket name/*"
        }
    ]
}

2. 验证服务器上传代码的桶名与路径正确性

  • 核对代码中指定的桶名是否和实际桶名完全一致(S3桶名大小写敏感,注意空格、特殊字符)
  • 确认上传时指定的对象键(如1.jpg)是否正确,是否存在额外前缀(比如images/1.jpg)导致实际存储路径与访问URL不匹配
  • 查看服务器上传日志,确认请求返回状态码:403代表权限问题,200但桶内无文件则大概率是路径配置错误

3. 检查服务器AWS SDK配置

  • 确认服务器使用的AWS SDK已正确配置有权限的IAM用户的访问密钥(Access Key ID和Secret Access Key)
  • 检查SDK指定的区域是否与目标桶所在区域一致,区域不匹配会导致上传到错误区域的桶,目标桶内自然看不到文件

4. 排查上传过程的异常情况

  • 检查服务器上传逻辑的错误处理:是否存在上传异常未捕获,导致文件未成功写入S3
  • 确认是否有其他服务/脚本删除了刚上传的文件
  • 若已开启S3桶访问日志,搜索对应的PutObject请求,查看是否有失败记录及请求细节(桶名、对象键、发起者身份)

总结

最可能的问题是服务器使用的IAM用户无s3:PutObject权限,或者上传代码的桶名/路径配置错误,优先从这两点入手排查。

内容的提问来源于stack exchange,提问作者반가우면반갑다고해

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 05:05:33