先日、terraformのインストール方法という記事を書きました。
https://qiita.com/sasshi_i/items/b5117d51fed800fa6b09
こちらの記事で~/.aws/credentials
に下記を追記しました。
[default]
aws_access_key_id = your_access_key_id
aws_secret_access_key = your_secret_access_key
現場を複数掛けもっており、複数のAWSアカウントを使い分けたい場合はこちらの設定だと毎回[default]の値が参照されてしまうため、具合が悪いです。
今回はAWSアカウントの切り替え方について説明します。
AWSアカウントの切り替え方法
使用するAWSアカウントを切り替えるためにはAWS_PROFILE
という環境変数に値を格納することで切り替えることができます。
例えば、下記の場合AWS_PROFILE
にhogehoge
が格納されていれば、hogehoge
の認証情報が使用され、何も指定されていなければdefault
が使用されます。
[default]
aws_access_key_id = your_access_key_id
aws_secret_access_key = your_secret_access_key
[hogehoge]
aws_access_key_id = your_access_key_id
aws_secret_access_key = your_secret_access_key
[hogehoge_2]
aws_access_key_id = your_access_key_id
aws_secret_access_key = your_secret_access_key
A社の開発で[hogehoge]の認証情報を使いたければ、A社のコードを修正している時にAWS_PROFILE
にhogehoge
を格納し、B社の開発で別の認証情報が使いたければAWS_PROFILE
に別の値を格納することでAWSアカウントを切り替えることができます。
毎回macの~/.bashrc
を修正して環境変数を修正するのは面倒なので、direnv
というツールを使います。
direnvとは?
カレントになっているディレクトリごとに環境変数を定義してくれるツールです。
指定しているディレクトリがカレントの時に環境変数を定義してくれたり、ディレクトリから抜けると環境変数を無効にしてくれます。
direnv
https://github.com/direnv/direnv
direnvのインストール方法
macの場合はHomebrewで簡単にインストールできます。
$ brew install direnv
~/.bashrc
に下記を追記
eval "$(direnv hook bash)"
bashrc再読み込み
$ source ~/.bashrc
下記コマンドでバージョンが表示されればインストール完了です。
$ direnv --version
2.20.1
direnvの使い方
環境変数を使用したいディレクトリ配下に.envrc
というファイルを作成し、そちらに環境変数を記載します。
例えば下記のように/terraform
ディレクトリ配下に.envrc
を作成した場合は/terraform
配下で設定した環境変数が適用されます。
cd /terraform
touch .envrc
vi .envrc
/terraform
配下で~/.aws/credentials
の[hogehoge]の認証情報を適用するために、.envrc
に下記を記載します。
export AWS_PROFILE=hogehoge
export AWS_REGION=ap-northeast-1
下記コマンドで環境変数を作成します。
direnv allow
これで設定は完了で、指定のディレクトリにcdすると環境変数が作成されます。
$ cd /terraform
direnv: loading .envrc
direnv: export +AWS_PROFILE +AWS_REGION
ディレクトリから抜けると環境変数が削除されます。
cd ..
direnv: unloading
これでディレクトリ毎で.envrc
に定義した環境変数が適用されるため、AWSの認証情報をディレクトリ毎で使い分けることができます。