[Go] AWS 3 객체 업로드
차리다
$ go get github.com/aws/aws-sdk-go
샘플 코드
s3
포장을 직접 사용할 수 있지만 s3manager
포장 내부에 여러 가지 배려가 있어 편리합니다.업로드
main.go
package main
import (
"strings"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3/s3manager"
)
func main() {
// s3manager.Uploader を初期化
// リージョン、プロファイル名は適宜書き換えてください
sess, err := session.NewSessionWithOptions(session.Options{
Config: aws.Config{Region: aws.String("ap-northeast-1")},
Profile: "default",
})
if err != nil {
panic(err)
}
u := s3manager.NewUploader(sess)
// アップロードするデータを用意
data := strings.NewReader(`{"message": "hello world"}`)
// ローカルのファイルをアップロードする場合は以下のようにする
// data, err := os.Open("example.json")
// if err != nil {
// panic(err)
// }
// defer data.Close()
// バケット名とオブジェクトのパスを指定してアップロード
_, err = u.Upload(&s3manager.UploadInput{
Bucket: aws.String("bucket-name"),
Body: aws.ReadSeekCloser(data),
Key: aws.String("path/to/file"),
ContentType: aws.String("application/json"),
})
if err != nil {
panic(err)
}
}
다운로드
main.go
package main
import (
"bytes"
"fmt"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3"
"github.com/aws/aws-sdk-go/service/s3/s3manager"
)
func main() {
// s3manager.Downloader を初期化
// リージョン、プロファイル名は適宜書き換えてください
sess, err := session.NewSessionWithOptions(session.Options{
Config: aws.Config{Region: aws.String("ap-northeast-1")},
Profile: "default",
})
if err != nil {
panic(err)
}
d := s3manager.NewDownloader(sess)
// 書き込み先を用意
buf := aws.NewWriteAtBuffer([]byte{})
// ローカルにダウンロードする場合は以下のようにする
// buf, err := os.Create("example.json")
// if err != nil {
// panic(err)
// }
// defer buf.Close()
// バケット名とオブジェクトのパスを指定してダウンロード
_, err = d.Download(buf, &s3.GetObjectInput{
Bucket: aws.String("bucket-name"),
Key: aws.String("path/to/file"),
})
if err != nil {
panic(err)
}
// aws.NewWriteAtBuffer() を使用した場合は bytes.NewBuffer() で中身を読み込むことができる
data := bytes.NewBuffer(buf.Bytes()).String()
fmt.Println(data)
}
참고 자료
Reference
이 문제에 관하여([Go] AWS 3 객체 업로드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/kou_pg_0131/articles/go-aws-s3-download-and-upload텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)