5
Jul 2020
by
武史 清田
今日はコマンドラインでの作業効率をあげるための便利ツール、awsp の紹介です。
タグバンではこの頃、AWSのログイン方法を、AWS Single Sign-On に統一しました。
ログイン先としては、AWS Organizations で管理しているお客さんのアカウントや各社員に配布している検証用(sandbox)アカウントです。
管理者目線では、認証の有効期限の設定や、ユーザーの権限の制御を一元管理できて便利です。
一方で利用者目線としては SSO で認証後に、以下のような方法で複数のアカウントを切り替えて作業する際には手間に感じることもありました。
- 作業シェルごとに使用するアカウントの環境変数を設定して作業する
- direnv を使用するとディレクトリと環境変数を紐付けられるので少しは楽になるが...
- もしくは profile を指定してコマンドを実行
awsp をつかってみる
aws cli 実行に使用する profile を簡単に切り替えられるツールです。選択した profile の情報で awscli が実行できるようになります。
README の通りにさくっとインストールします。
npm install -g awsp
alias awsp="source _awsp"
profile を切り替えるツールなので、当然 profile は登録しておく必要があります。
$ aws configure sso --profile [profile_name] SSO start URL [None]: https://test.sso.com/start SSO Region [None]: your_sso_region There are 21 AWS accounts available to you. Using the account ID account_id The only role available to you is: account_role Using the role name "account_role" CLI default client Region [None]: ap-northeast-1 CLI default output format [None]: json CLI profile name [dev-012345678901]: profile_name
awscli を使用して SSO のログインを済ませておきます。(ブラウザが立ち上がり認証を求められます)
$ aws sso login --profile sandbox Attempting to automatically open the SSO authorization page in your default browser. If the browser does not open or you wish to use a different device to authorize this request, open the following URL: https://device.sso.us-east-1.amazonaws.com/ Then enter the code:
で awsp を使用してみると 対話シェルで profile の切り替えができます。
$ awsp
? Choose a profile (Use arrow keys) ❯ sandbox account-a account-b default ? Choose a profile sandbox
※この時に参照している profile の情報は、ホームディレクトリにあります
$ cat .aws/config [profile sandbox] sso_start_url = https://test.sso.com/start sso_region = us-east-1 sso_account_id = 123456789012 sso_role_name = admin region = ap-northeast-1 output = json [profile account-a] sso_start_url = https://test.sso.com/start sso_region = us-east-1 sso_account_id = 23456789013 sso_role_name = dev region = ap-northeast-1 output = json [profile account-b] sso_start_url = https://test.sso.com/start sso_region = us-east-1 sso_account_id = 3456789014 sso_role_name = ops region = ap-northeast-1 output = json
選択した profile が環境変数に設定されているため profile の指定無しにコマンド実行が可能になります。
$ echo $AWS_PROFILE
sandbox
$ aws s3 ls --profile sandbox | grep sandbox
2020-06-08 11:27:29 sandbox
$ aws s3 ls | grep sandbox
2020-06-08 11:27:29 sandbox
まとめ
- awsp は対話シェルで profile を切り替えて awscli を実行できるためとても便利
- 作業ミスに注意して、aws s3 ls してからオペレーションしよう!