AWS SDK for Goを使ってAWSの設定ファイルと認証情報ファイルのçクレデンシャル情報を利用する方法のメモ。
~/.aws/credentialsの情報を参照する
最初にsessionライブラリのMust関数(session.Must())を使い、引数にsession.NewSession()を定義してセッションを確立する。 session.NewSession()で環境変数や共有認証ファイル(〜/.aws/credentials)、共有設定ファイル(〜/.aws/config)を元にしてセッションが作成される。 Must関数を使えばエラーハンドリングもここでやってくれる。
また、そのためにgithub.com/aws/aws-sdk-go/aws/session
をインポートする。
デフォルトのプロファイルを利用する場合は以下のようになる。
続いて各サービスのNew関数を利用してクライアント用インスタンスを作成する。ひとつ目の引数にsessionを、ふたつ目の引数にConfigを指定する。 以下ではcostexplorerを利用するためのものなので使うサービスによって読み替える。
import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/costexplorer" // 参照するAWSサービスのAPIに依存する ) : : sess := session.Must(session.NewSession()) svc := costexplorer.New( sess, aws.NewConfig().WithRegion("ap-northeast-1"), )
特定のプロファイルを利用する場合は以下のようにNewSessionWithOptions関数を利用し、その中でProfile名を指定する。 以下ではhogehogeプロファイルを利用している。
import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/costexplorer" // 参照するAWSサービスのAPIに依存する ) : : sess := session.Must(session.NewSessionWithOptions(session.Options{Profile:"hogehoge"}) svc := costexplorer.New( sess, aws.NewConfig().WithRegion("ap-northeast-1"), )
まとめ
AWS SDK for GoでのAWSクレデンシャルを参照する方法について書いた。 他にも環境変数を使う方法もある。 AWSのEC2とかで実行するならIAM Roleを使うのが良い。