assume-roleでプロファイルに対応していないツールでもassume roleする

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは、ついに積もってしまった雪に絶望しつつも熱燗が美味しくなるなとわずかな希望を見出している今日この頃です。

先日assume roleに対応していないコマンドラインツールを使う際に使ったassume roleというツールが便利だったので紹介します。

これはなに?

公式リポジトリには下記のようにあります。

This tool will request and set temporary credentials in your shell environment variables for a given role.

ざっくりいうと、シェルの環境変数に指定したロールの一時的セキュリティ認証情報をセットした状態で任意のコマンドを実行できるようにするツールです。 aws cliでいう--profile オプションをプロファイルに対応していないコマンドでも、実現するツールというとわかりやすいかもしれません。

インストール

READMEに書かれていますが、非常に簡単です。

Macだと

brew install remind101/formulae/assume-role

あるいは

go get -u github.com/remind101/assume-role

使い方

使い方も簡単です。

まずは、assume roleしたいロールを.aws/configにプロファイルとして設定します。 詳細はこちらの記事「初めてのAssumeRole」をご参照ください。

そしてプロファイル名とコマンドを下記のように指定して実行します

assume-role <プロファイル名> <コマンド>

実行例

aws cliを使う場合下記の2つのコマンドは同じ結果になります。

# profileオプションを使う
$ aws ec2 describe-instances --profile some-role
# assume-roleを使う
$ assume-role aws ec2 describe-instances

まとめ

assume roleを使うと任意のプロファイルの一時的セキュリティ認証情報を使ってコマンドを実行できます。 AWSを使っていると本番、検証といった環境ごとにロールを切り替えて作業したりすることは多いと思います。 お使いのツールがプロファイルに対応していなくて都度IAMユーザーを作ったりしていた方はぜひ試してみてください。