2 回答

TA貢獻1860條經驗 獲得超9個贊
將值編碼為字節并上傳字節。下面介紹如何將值編碼為 JSON 字節:
func Save(client S3Client, value interface{}, key string) error {
p, err := json.Marshal(value)
if err != nil {
return err
}
input := &s3.PutObjectInput{
Body: aws.ReadSeekCloser(bytes.NewReader(p)),
…
}
…
}
使用要上傳的值調用保存:
value := &Event{ID: "an id", …}
err := Save(…, value, …)
if err != nil {
// handle error
}
有很多可能,包括gob,xml和json,msgpack等。最佳編碼格式將取決于您的應用程序要求。
獲取對象時反轉該過程:
func GetIt(client S3Client, T interface{}, key string) error {
svc := client.S3clientObject
resp, err := svc.GetObject(&s3.GetObjectInput{
Bucket: aws.String(GetS3Bucket()),
Key: aws.String(key),
})
if err != nil {
return err
}
return json.NewDecoder(resp.Body).Decode(T)
}
使用指向目標值的指針調用 GetIt:
var value model.Event
err := GetIt(client, &value, key)
if err != nil {
// handle error
}
fmt.Println(value) // prints the decoded value.

TA貢獻1830條經驗 獲得超9個贊
此處引用的示例表明,S3 允許您上傳實現 io 的任何內容。讀取器接口。該示例使用語法創建一個知道如何向調用方提供指定字符串的語法。您的工作(根據此處的AWS)是弄清楚如何將您需要存儲的任何內容調整為.strings.NewReaderio.Readerio.Reader
您可以直接存儲JSON編碼的字節,如下所示
package main
import (
"bytes"
"encoding/json"
)
type Event struct {
ID string
ProcessID string
TxnID string
Inputs map[string]interface{}
}
func main() {
// To prepare the object for writing
b, err := json.Marshal(event)
if err != nil {
return
}
// pass this reader into aws.ReadSeekCloser(...)
reader := bytes.NewReader(b)
}
- 2 回答
- 0 關注
- 185 瀏覽
添加回答
舉報