aws-sdk-goの紹介
Goでs3を扱う方法を紹介します。
aws
コマンドは有効化済みの想定です
インストール
go get github.com/aws/aws-sdk-go/aws
go get github.com/aws/aws-sdk-go/aws/session
go get github.com/aws/aws-sdk-go/service/s3
プログラム本体
package main
import (
"fmt"
"log"
"os"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3"
)
func main() {
sess, err := session.NewSession(&aws.Config{
Region: aws.String("ap-northeast-1")},
)
if err != nil {
log.Fatal(err)
}
svc := s3.New(sess)
// バケット一覧出力
result, err := svc.ListBuckets(nil)
if err != nil {
log.Fatal(err)
}
for _, bucket := range result.Buckets {
fmt.Printf("%s\n", aws.StringValue(bucket.Name))
}
// ファイルアップロード
file, err := os.Open("file_name")
if err != nil {
log.Fatal(err)
}
defer file.Close()
_, err = svc.PutObject(&s3.PutObjectInput{
Bucket: aws.String("bucket_name"),
Key: aws.String("file_name"),
Body: file,
})
if err != nil {
log.Fatal(err)
}
}
特別複雑なことは無く、他の言語でawsを操作したことがある人なら難なく扱えると思います。
Goでこういうことをしようとするともっと面倒なのかと思っていましたが、案外シンプルに収まったので、今後はこういう作業もGoでやってみようと思いました。