このページについて
golangを使ってs3のapiを叩くためにセットアップを行った際のメモです。
環境: Mac OS
手順
awscliのインストール
$ brew install awscli
cliが使う環境変数のセットアップ
$ aws configure
AWS Access Key ID [None]: your-key
AWS Secret Access Key [None]: your-token
Default region name [None]: ap-northeast-1
Default output format [None]:
golang clientのインストール
こちらを使う
$ go get github.com/aws/aws-sdk-go
sdk はデフォルトで ~/.aws/credentials
の設定情報を読みに行くので
aws configure
でファイルを作りました。(ここに書いてあります)
あとはサンプルコードを動かすだけです
package main
import (
"context"
"fmt"
"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 := session.Must(session.NewSession(aws.NewConfig().WithRegion("ap-northeast-1")))
svc := s3.New(sess)
ctx := context.Background()
objects := []string{}
myBucket := "your-backet"
err := svc.ListObjectsPagesWithContext(ctx, &s3.ListObjectsInput{
Bucket: aws.String(myBucket),
}, func(p *s3.ListObjectsOutput, lastPage bool) bool {
for _, o := range p.Contents {
objects = append(objects, aws.StringValue(o.Key))
}
return true // continue paging
})
if err != nil {
panic(fmt.Sprintf("failed to list objects for bucket, %s, %v", myBucket, err))
}
fmt.Println("Objects in bucket:", objects)
}
とりあえず、指定したbucket内のファイル名をとるスクリプトを公式からもってきました
そのため、動かす前にbucketの作成と中に適当なファイルを突っ込んでみてください
参考
自身の環境に入れるcredentialのユーザは権限しぼったもの入れましょう
作り方はこちらを見ました