我使用以下“go”代码 (Lambda) 将文件“Sample.txt”从一个账户的 S3 存储桶复制到另一个账户的 S3 存储桶。它按预期工作,即它从源存储桶复制“Sample.txt”并在目标存储桶中上传“NewSample.txt”。但是,我无法将目标存储桶中的 'NewSample.txt' 文件设为public。因此,我无法打开/下载该文件。这是因为目标存储桶中“NewSample.txt”文件的所有者仍与源存储桶中“Sample.txt”文件的所有者相同。如果我手动在目标存储桶中上传另一个文件,我可以看到新文件有不同的所有者。
package main
import (
"fmt"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3"
)
// main comment
func main() {
svc := s3.New(session.New())
input := &s3.CopyObjectInput{
Bucket: aws.String("target-bucket"),
CopySource: aws.String("/source-bucket/Sample.txt"),
Key: aws.String("NewSample.txt"),
}
result, err := svc.CopyObject(input)
if err != nil {
if aerr, ok := err.(awserr.Error); ok {
switch aerr.Code() {
case s3.ErrCodeObjectNotInActiveTierError:
fmt.Println(s3.ErrCodeObjectNotInActiveTierError, aerr.Error())
default:
fmt.Println(aerr.Error())
}
} else {
fmt.Println(err.Error())
}
return
}
fmt.Println(result)
}
忽然笑
相关分类