🧣
aws-sdk-go-v2 でIAMロール認証を使う
クレデンシャルの参照順序
aws-sdk-go-v2では、簡易に示すと以下の順序でクレデンシャルを取得します。
- 環境変数
- ~/.aws/config, ~/.aws/credentials
- IAMロール
ただしIAMロールを使用するよう推奨しています。詳細事項は以下にあります
config.LoadDefaultConfig
IAMロールの認証情報を取得するには、AWS SDK forGOV2の入門のコードにもあるようにLoadDefaultConfigという関数を基本的に利用するのが良さそうです。
リージョン情報は取ってくれないため指定するか、環境変数で定義する必要があります。
cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithRegion("us-west-2"))
if err != nil {
log.Fatal(err)
}
S3: ListBuckets
上記を踏まえて、例えばS3バケットの一覧と作成時刻を表示には以下のようなコードになります。
cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithRegion("us-west-2"))
if err != nil {
log.Fatal(err)
}
s3Client := s3.NewFromConfig(cfg)
buckets, err := s3Client.ListBuckets(context.TODO(), &s3.ListBucketsInput{})
if err != nil {
log.Fatal(err)
}
for _, bucket := range (*listBuckets).Buckets {
fmt.Printf("%s %s\n", *bucket.CreationDate, *bucket.Name)
}
Discussion