我正在 GoLang 中使用 AWS S3 开发工具包,将上传和下载到各种存储桶。我想知道是否有更简单的方法将结构或对象直接上传到存储桶?
我有一个表示事件的结构:
type Event struct {
ID string
ProcessID string
TxnID string
Inputs map[string]interface{}
}
我想上传到S3存储桶中。但我在文档中找到的代码仅适用于上传字符串。
func Save(client S3Client, T interface{}, key string) bool {
svc := client.S3clientObject
input := &s3.PutObjectInput{
Body: aws.ReadSeekCloser(strings.NewReader("testing this one")),
Bucket: aws.String(GetS3Bucket()),
Key: aws.String(GetObjectKey(T, key)),
Metadata: map[string]*string{
"metadata1": aws.String("value1"),
"metadata2": aws.String("value2"),
},
}
这成功地将基本文件上传到S3存储桶,打开该文件时只需显示“测试此文件”。有没有办法上传到存储桶,以便它上传一个对象,而不仅仅是一个字符串值?
任何帮助都是值得赞赏的,因为我是Go和S3的新手。
编辑
这是我用于 Get 函数的代码:
func GetIt(client S3Client, T interface{}, key string) interface{} {
svc := client.S3clientObject
s3Key := GetObjectKey(T, key)
resp, err := svc.GetObject(&s3.GetObjectInput{
Bucket: aws.String(GetS3Bucket()),
Key: aws.String(s3Key),
})
if err != nil {
fmt.Println(err)
return err
}
result := json.NewDecoder(resp.Body).Decode(&T)
fmt.Println(result)
return json.NewDecoder(resp.Body).Decode(&T)
}
func main() {
client := b.CreateS3Client()
event := b.CreateEvent()
GetIt(client, event, key)
}
慕码人2483693
慕标琳琳
相关分类