该错误通常是由于使用的AWS密钥没有足够的权限来执行所需的操作而引起的。要解决此问题,请确保您的AWS密钥具有适当的权限访问和修改指定的S3存储桶。
以下是使用AWS SDK Go V2来上传对象时,如何设置访问密钥和桶权限的示例代码:
package main
import (
"context"
"fmt"
"os"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/service/s3"
"github.com/aws/aws-sdk-go-v2/feature/s3/manager"
)
func main() {
// 配置 AWS SDK
cfg, err := config.LoadDefaultConfig(context.TODO())
if err != nil {
fmt.Fprintf(os.Stderr, "failed to load configuration, %v\n", err)
os.Exit(1)
}
// 创建 Amazon S3 服务客户端
client := s3.NewFromConfig(cfg)
// 对象存储桶名称
bucketName := "my-bucket"
// 对象键
objectKey := "my-object"
// 对象内容
objectContent := []byte("Hello, world!")
// 配置上传对象选项
uploader := manager.NewUploader(client)
_, err = uploader.Upload(context.TODO(), &s3.PutObjectInput{
Bucket: &bucketName,
Key: &objectKey,
Body: bytes.NewReader(objectContent),
// 设置桶ACL
ACL: s3.ObjectCannedACLPublicRead,
// 设置访问密钥
AccessControlTranslation: &s3.AccessControlTranslation{
Owner: s3.OwnerOverride,
},
})
if err != nil {
fmt.Fprintf(os.Stderr, "failed to upload object, %v\n", err)
os.Exit(1)
}
fmt.Println("object uploaded successfully!")
}