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

如何在AWS SDK for Go V2的S3Client.GetObject()中区分对象不存在错误?

区分AWS SDK for Go v2中S3 GetObject的对象不存在错误

AWS SDK for Go v2提供了封装好的错误判断工具,无需手动解析Smithy错误结构或HTTP状态码,就能直接区分对象不存在的情况。

具体实现代码如下:

import (
    "context"
    "fmt"
    "github.com/aws/aws-sdk-go-v2/aws"
    "github.com/aws/aws-sdk-go-v2/service/s3"
    "github.com/aws/aws-sdk-go-v2/service/s3/types"
)

// ...

out, err := client.GetObject(context.TODO(), &s3.GetObjectInput{
    Bucket: aws.String(bucketName),
    Key:    aws.String(key),
})
if err != nil {
    // 直接判断是否为对象不存在错误
    if types.IsNotFound(err) {
        // 这里处理对象不存在的逻辑
        fmt.Printf("对象 %s 在存储桶 %s 中不存在\n", key, bucketName)
    } else {
        // 处理其他类型的错误
        fmt.Printf("获取对象失败: %v\n", err)
    }
    return
}
// 后续处理正常返回的对象数据

补充说明

  • types.IsNotFound(err)是SDK内置的工具函数,会自动识别S3的NoSuchKey错误(对应HTTP 404状态码)。
  • S3的types包还提供了其他场景的错误判断函数,比如IsAccessDenied(err)判断权限不足、IsBucketNotFound(err)判断存储桶不存在等,可按需使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 11:07:34