LoginSignup
7

More than 3 years have passed since last update.

posted at

direnvを用いてterraformで複数のAWSアカウントを使い分ける方法

先日、terraformのインストール方法という記事を書きました。
https://qiita.com/sasshi_i/items/b5117d51fed800fa6b09

こちらの記事で~/.aws/credentialsに下記を追記しました。

~/.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_PROFILEhogehogeが格納されていれば、hogehogeの認証情報が使用され、何も指定されていなければdefaultが使用されます。

~/.aws/credentials
[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_PROFILEhogehogeを格納し、B社の開発で別の認証情報が使いたければAWS_PROFILEに別の値を格納することでAWSアカウントを切り替えることができます。

毎回macの~/.bashrcを修正して環境変数を修正するのは面倒なので、direnvというツールを使います。

direnvとは?

カレントになっているディレクトリごとに環境変数を定義してくれるツールです。
指定しているディレクトリがカレントの時に環境変数を定義してくれたり、ディレクトリから抜けると環境変数を無効にしてくれます。

direnv
https://github.com/direnv/direnv

direnvのインストール方法

macの場合はHomebrewで簡単にインストールできます。

$ brew install direnv

~/.bashrcに下記を追記

~/.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に下記を記載します。

/terraform/.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の認証情報をディレクトリ毎で使い分けることができます。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
7