aws-vault から Granted に移行した話
aws-vault の開発終了をきっかけに Granted へ移行しました。ロールの切り替えやコンソールの開き方の違いと、認証情報や既存の設定を引き継ぐ際の注意点をまとめます。
AWS の認証情報の管理に使っていた aws-vault の開発が停止したため、代替ツールを探し、Granted に移行しました。主な違いは、現在のシェルでロールを切り替える操作と、複数アカウントのコンソールを分けて開く機能です。
移行のきっかけ
2025年末、99designs/aws-vault の README に、開発が停止し、今後は更新されないとの告知が追記されました。
同じ告知には ByteNess/aws-vault への案内もあります。更新が停止したのは 99designs/aws-vault であり、フォークも含めて aws-vault の開発がすべて終了したわけではありません。
そのままフォークを使う選択肢もありましたが、ほかのツールも調べる中で見つけたのが Granted でした。AWS のロール選択と、複数アカウントのコンソールを同時に開く機能を備えています。
aws-vault と Granted の特徴
以下は、99designs/aws-vault と Granted の公式ドキュメントを基にした比較です。aws-vault のフォークは比較の対象に含めていません。
| 観点 | aws-vault | Granted |
|---|---|---|
| 主な用途 | 認証情報を安全に保管し、一時認証情報をコマンドへ渡す | ロールの選択・切り替えとコンソールへのアクセス |
| IAM アクセスキー | OS のキーストアなどに保管 | granted credentials で安全なストレージに保管可能 |
| IAM Identity Center(SSO) | 対応 | 対応。SSO トークンを暗号化してキャッシュ |
| ターミナルでの操作 | aws-vault exec でコマンドやサブシェルを起動 | assume で現在のシェルの認証情報を設定 |
| プロファイルの選択 | コマンドに名前を指定 | 名前の指定に加え、対話的な検索・選択が可能 |
| コンソールへのログイン | aws-vault login | assume -c。ブラウザーのコンテナーやプロファイルでセッションを分離 |
SSO はどちらも対応しています。操作上の違いが出るのは、プロファイルを選んでコマンドを実行するときや、複数アカウントのコンソールを開くときです。
基本操作を置き換える
macOS では Homebrew でインストールできます。Getting Started に沿って、次のコマンドを実行します。
brew tap fwdcloudsec/grantedbrew install fwdcloudsec/granted/grantedassume初回の案内に従ってブラウザーとシェルのエイリアスを設定し、新しいターミナルを開きます。以降の dev と prod は、設定済みのプロファイル名の例です。
aws-vault では、プロファイルと実行するコマンドを指定します。
aws-vault exec dev -- aws sts get-caller-identityGranted では、現在のシェルでプロファイルを選んでから AWS CLI を実行できます。
assume devaws sts get-caller-identityaws-vault exec dev がサブシェルを起動するのに対し、assume dev は現在のシェルに認証情報を設定します。その後に実行するコマンドも同じ認証情報を使うため、アカウントを切り替えた後は get-caller-identity でどのアカウントを使っているか確認します。
その認証情報を使う範囲を1つのコマンドに限定したい場合は、Granted の --exec を使えます。
assume dev --exec -- aws sts get-caller-identity複数アカウントのコンソールを開く
Granted では、次のようにプロファイルごとにコンソールを開けます。
assume -c devassume -c prodコンソールのドキュメントによると、Firefox では Granted の拡張機能を使い、コンテナータブでセッションを分離します。Chromium 系ブラウザーでは、ブラウザープロファイルを使って別々のウィンドウで開きます。
例えば、開発環境と本番環境の設定を見比べたいときに、両方のセッションを保ったまま確認できます。aws-vault にもコンソールへログインする機能はありますが、Granted では複数のセッションを分離して開けます。
移行時に確認する設定
Granted は AWS CLI と同じ設定ファイルを利用します。ただし、~/.aws/config のプロファイルと、aws-vault に保管したアクセスキーは別のものです。設定ファイルを引き継ぐだけでは、保存済みのキーは移行されません。
SSO を利用する場合は、既存プロファイルでログインできるかを確認します。IAM アクセスキーを利用する場合は、必要に応じて granted credentials add で登録します。Granted の credentials import は平文の AWS credentials ファイルから取り込む機能なので、aws-vault のストレージを直接移行するコマンドではありません。
また、credential_process やシェルのエイリアス、スクリプトに aws-vault の呼び出しが残っていると、Granted を導入しても aws-vault が必要なままです。プロファイルごとに CLI とコンソールの動作を確認し、それらの呼び出しを見直してから aws-vault を削除すると、移行漏れを見つけやすくなります。
まとめ
99designs/aws-vault の開発終了を受けて Granted に移行しましたが、aws-vault に近い操作を維持したければフォークを使う選択肢もあります。Granted は、対話的にプロファイルを選びたい場合や、複数アカウントのコンソールを並べて使いたい場合に向いています。
移行では、コマンドの置き換えに加えて、保存済みの認証情報と aws-vault を呼び出す設定の確認が必要です。既存のプロファイルを使える場合でも、CLI とコンソールの両方で動作を確かめてから切り替えます。
関連記事
Cognito User Pools と OIDC で Slack サインインを実装する
Cognito user pool を OIDC 経由で Slack と連携させ、"Sign in with Slack" を Amplify で Next.js アプリケーションに組み込みます。
Lambda Web Adapter で FastAPI を AWS Lambda にデプロイする
FastAPI で書いた API バックエンドをコンテナ化し、Lambda Web Adapter と AWS CDK を使って単一の Lambda 関数へデプロイします。
API Gateway WebSocket:モック統合の実装
バックエンドの Lambda を使わず、モック統合のみで API Gateway WebSocket API を構築し、あらかじめ用意したレスポンスを返します。
CloudFront 署名付き URL 経由で S3 にアップロードする
CloudFront の署名付き URL を使い、独自ドメイン経由で S3 にアップロードする方法を紹介します。S3 の署名付き URL を直接使えない場合に有用です。
AWS EventBridge Scheduler:スケジュールに沿って EC2 を起動・停止する
Lambda を介さず、EventBridge Scheduler から EC2 API を直接呼び出し、cron スケジュールに従って EC2 インスタンスを起動・停止します。
