AWSume(オースム)は、AWSの複数アカウント・複数IAMロールをコマンド一つで切り替えるためのCLIツールです。名前は「AWS Assume Made Awesome(ロール引き受けを快適に)」に由来し、AWSコンサルティング企業のTrek10がオープンソースで公開しています。aws sts assume-roleの一時認証情報の取得やMFA認証を肩代わりし、取得したクレデンシャルを実行中のシェルの環境変数へ直接反映するのが最大の特徴です。この記事では、AWSumeの仕組み・インストール・プロファイル切替とMFA運用、そしてaws-vaultなど類似ツールとの違いと採用判断までを整理します。
まとめ:AWSumeの要点
- 正体:AWSのIAMロール引き受け(AssumeRole)とMFA認証をラップし、一時認証情報を現在のシェルの環境変数へ書き込むCLIツール(開発元Trek10、公式サイトawsu.me)。
- 仕組み:サブシェルを起動せず、実行中のシェルに
AWS_ACCESS_KEY_IDなどをexportする。この方式のため、Unix系ではドットソースするエイリアス設定が必須。 - 導入:Python 3.5以上が前提。
pipx install awsume(推奨)またはpip install awsumeでインストールし、エイリアスをログインスクリプトに設定する。 - MFA:MFA認証済みクレデンシャルを最大12時間キャッシュし、ロール認証情報の失効時に再入力なしで更新できる。MFAはTOTPコード方式が前提で、FIDO/U2Fのセキュリティキーはコマンドライン認証では使えない。
- 使い分け:頻繁なロール切替とMFA運用がある開発者向け。単発利用は標準の
aws --profileで足り、秘匿性重視ならaws-vaultが候補になる。
AWSumeの仕組みと解決する課題
複数アカウント・ロール切替の煩雑さを解消する
AWSを本番・検証・開発などで複数アカウント運用したり、監査・管理用のIAMロールを引き受けて作業する構成では、都度aws sts assume-roleで一時認証情報を取得し、返ってきたアクセスキー・シークレット・セッショントークンを環境変数へ手作業でexportする必要があります。MFAが必須のロールではトークン入力も加わり、手順が長くなります。AWSumeはこの一連の流れをawsume <プロファイル名>の一行に集約します。
実行中のシェルへ環境変数を反映する方式
AWSumeは取得した一時認証情報を、実行中のシェルに次の環境変数として書き込みます。以降のAWS CLIやSDKは--profileを付けなくてもこの認証情報で動作します。
| 環境変数 | 内容 |
|---|---|
| AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY | 一時認証情報のキー |
| AWS_SESSION_TOKEN | セッショントークン |
| AWS_REGION / AWS_DEFAULT_REGION | 対象リージョン |
| AWSUME_PROFILE / AWSUME_EXPIRATION | 現在のプロファイル名と失効時刻 |
環境変数を「今のシェル」に焼き込むため、別プロセスとして子シェルを立ち上げるaws-vault execとは設計が異なります。この違いがそのままエイリアス必須の理由になります。
AWSumeのインストール(pipx導入とエイリアス設定)
pipx/pipでの導入手順
AWSumeはPython製で、Python 3.5以上が必要です。コマンドライン専用ツールを独立環境へ入れられるpipxが公式の推奨です。
# 推奨:pipx(ツールを隔離環境に導入)
pipx install awsume
# もしくは pip
pip install awsume
pipがバイナリを配置する場所がPATHに含まれている必要があります。インストール時、AWSumeは~/.bash_profileや~/.bashrcなどのログインスクリプトへエイリアスの自動追記を試みます。
エイリアス設定と対応シェル
Unix系シェルでは、現在のシェルに環境変数を反映させるためドットソース(.)で呼び出すエイリアスが必須です。
alias awsume=". awsume"
自動追記が行われた場合も、反映にはターミナルの再起動かログインスクリプトの再読み込みが必要です。対応シェルはBash・Zsh・Fish・PowerShell・Windowsコマンドプロンプトで、Windowsでも利用できます(シェルごとにエイリアス相当の設定方法が異なります)。
AWSumeの基本的な使い方
プロファイルの準備と切り替え
AWSumeは~/.aws/configと~/.aws/credentialsのプロファイルをそのまま使います。ロールを引き受けるプロファイルはsource_profileとrole_arnを指定します。
# ~/.aws/config
[profile dev]
source_profile = default
role_arn = arn:aws:iam::123456789012:role/DevRole
region = ap-northeast-1
この設定に対し、次のように実行するとdevプロファイルの一時認証情報が現在のシェルに設定されます。
awsume dev
環境変数の確認と解除
設定済みのプロファイルはecho $AWSUME_PROFILEで確認できます。作業を終えて認証情報をクリアするには--unsetを使います。別プロファイルへ切り替えたいときも、混在を避けるため一度解除してから再実行すると安全です。
awsume --unset
MFAとロール認証情報のキャッシュ
MFA付きプロファイルでの利用
プロファイルにmfa_serial(MFAデバイスのARN)を設定しておくと、AWSume実行時にMFAトークンの入力を求められます。スクリプトなどで対話入力を避けたい場合は--mfa-tokenでコードを直接渡せます。MFAはTOTPコードを生成するデバイスが前提で(公式ドキュメントは仮想MFAデバイスでの利用を案内)、FIDO/U2Fのセキュリティキーはコマンドライン認証では利用できません。
awsume dev --mfa-token 123456
キャッシュと自動更新(autoawsume)
AWSumeはMFA認証済みのクレデンシャルを最大12時間キャッシュします。ロールの一時認証情報が失効しても、AWSumeを再実行すればキャッシュ済みのMFA認証情報を使ってMFA再入力なしで新しいロール認証情報を取得できます。-a(--auto-refresh)を付けると、バックグラウンドでautoawsumeが起動し、認証情報を自動更新し続けます。長時間の作業で認証切れを避けたいときに有効です。
便利なオプションとプラグイン
コンソール表示や一覧などの主なオプション
| オプション | 用途 |
|---|---|
| -l / –list-profiles | 利用可能なプロファイルの一覧表示 |
| -c / –console | 現在の認証情報でマネジメントコンソールをブラウザで開く(別途 awsume-console-plugin の導入が必要) |
| -a / –auto-refresh | autoawsumeによる認証情報の自動更新 |
| –unset | シェルのAWS環境変数をクリア |
| –mfa-token | MFAコードを非対話で指定 |
プラグインはpipで追加でき、CLIの認証情報からそのままWebコンソールへ入れるconsoleプラグインなどがあります。SAML連携やプロファイルのあいまい一致(fuzzy matching)といった拡張も用意されています。
AWSumeの採用を見送るべきケースと注意点
AWSumeは万能ではありません。次の条件では、標準機能や別ツールの方が素直です。
- CI/CDや共有サーバーなど非対話環境:エイリアスとログインスクリプトへの設定を前提とするため、パイプライン内では
aws sts assume-roleやGitHub ActionsのOIDC連携で直接ロールを引き受ける方が管理しやすい。 - FIDO/U2Fのセキュリティキー運用:MFAはTOTPコード方式が前提で、FIDO/U2Fのセキュリティキーを必須とする組織のコマンドライン認証には合わない。
- 単一プロファイルの単発利用:ロール切替やMFAが絡まないなら、標準の
aws --profile 名前やAWS_PROFILE環境変数で十分。AWSumeが効くのは切替頻度が高い運用に限られる。 - クレデンシャルの秘匿性を重視する場合:AWSumeは
~/.awsの平文クレデンシャルを起点にする。長期キーをOSのキーチェーンに保管したいならaws-vaultが候補になる。
また、環境変数を現在のシェルへ焼き込む方式ゆえ、同じシェルで複数プロファイルを続けて使うと設定が残り事故につながります。切り替え時は--unsetを挟むか、別のシェルセッションで作業を分けてください。IAMやロール切替の前提整理には、Amazon Cognito(コグニート)とは?料金・できること・使い方のIAM・IAM Identity Centerとの違いの解説もあわせて参考になります。
よくある質問(FAQ)
AWSumeの意味・読み方は?
「AWS Assume Made Awesome」を縮めた造語で、一般に「オースム(awesome)」と読まれます。AssumeRole(ロールの引き受け)を快適にする、という意図が込められています。
AWSumeのインストール方法は?
Python 3.5以上を用意し、pipx install awsume(推奨)またはpip install awsumeで導入します。Unix系ではドットソースするエイリアスの設定が必要です。
aws-vaultとの違いは?
AWSumeは一時認証情報を現在のシェルの環境変数へ書き込む方式で、aws-vaultは認証情報をOSのキーチェーンに秘匿し、サブプロセスとして隔離実行する方式です。切替の手軽さを取るならAWSume、長期キーの保護を重視するならaws-vaultが向きます。
WindowsやPowerShellでも使えますか?
使えます。対応シェルはBash・Zsh・Fish・PowerShell・Windowsコマンドプロンプトです。シェルごとにエイリアス相当の設定が異なる点だけ注意してください。
AWSumeのGitHubリポジトリはどこですか?
開発元Trek10のリポジトリ(trek10inc/awsume)で公開されており、ドキュメントは公式サイトawsu.meにまとまっています。オプションやプラグインの最新仕様は公式ドキュメントで確認してください。