如何在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
相关产品推荐
相关产品推荐

