Closed3
ローカルとEKSでのAWSクレデンシャルの使い方

こうしたい
- ローカル
- アクセスキー、シークレットアクセスキー(~/.aws/credential)
- 環境変数(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
- EKS
- IRSAまたはPodIdentity

コード
package main
import (
"context"
"fmt"
"log"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/service/s3"
)
func main() {
ctx := context.Background()
// AWS SDKが自動的にクレデンシャルを検索・取得
cfg, err := config.LoadDefaultConfig(ctx)
if err != nil {
log.Fatalf("unable to load SDK config, %v", err)
}
s3Client := s3.NewFromConfig(cfg)
// バケット一覧を取得
result, err := s3Client.ListBuckets(ctx, &s3.ListBucketsInput{})
if err != nil {
log.Fatalf("failed to list buckets, %v", err)
}
fmt.Println("S3 Buckets:")
for _, bucket := range result.Buckets {
fmt.Printf("- %s\n", *bucket.Name)
}
}

仕組み
config.LoadDefaultConfig
を使うとローカルファイルだろうが環境変数だろうがIAMロールだろうがOK
config.LoadDefaultConfig、SDK はデフォルトの認証情報チェーンを使用して AWS 認証情報を検索します
このスクラップは2ヶ月前にクローズされました