dshimizu/blog

アルファ版

AWS SDK for Goで設定ファイルと認証情報ファイルの情報を参照する

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を使うのが良い。

参考