[アップデート]AWS Toolkit for VS CodeをAWS SSOのクレデンシャルで使えるようになりました
AWS Toolkit for VS CodeをAWS SSOのクレデンシャルで利用できるようになりました!
- Introducing AWS SSO support in the AWS Toolkit for VS Code | AWS Developer Blog
- Using AWS SSO credentials - AWS Toolkit for VS Code
AWS Toolkit for VS Codeとは
VS Codeのextensionです。VS Code上でAWS上の各種リソースが確認できたり、デプロイできたりするようになります。特にAWS SAMとの連携が充実しています。
できることの詳細は以下ユーザーガイド配下をチェックしてください。
そんな便利ツールAWS Toolkitですが、使う際にはもちろんAWSのクレデンシャルが必要になります。で、今回AWS SSOのクレデンシャルを使えるようになったというわけです。
やってみた
AWS SSOの設定をする
まず当たり前ですが、AWS SSOを有効化して、設定を完了してください。必要な設定やその意味については以下にまとめていますのでご覧いただけると幸いです。
SSO profileを設定する
AWS SSOのユーザー(がスイッチロールするIAM Role)の権限でAWS CLIを使う際に設定するやつです。以下のような記述をクレデンシャルファイルに書きます。
[profile sso-user-1] sso_start_url = https://example.com/start sso_region = us-east-2 sso_account_id = 123456789011 sso_role_name = readOnly region = us-west-2
もちろん上記を手書きしても良いですが、aws configure sso
というコマンドを使うと質問に答えていくだけで上記記述が出来上がるので楽です。
$ aws configure sso SSO start URL [None]: https://d-xxxxxxxx.awsapps.com/start SSO Region [None]: ap-northeast-1 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.ap-northeast-1.amazonaws.com/ Then enter the code: ZKTN-KTCZ
SSO start URL
はSSO有効化した際に作成される、SSOポータルのURLです。SSO Region
はSSOインスタンスが存在するリージョンです。SSOを有効化したリージョンですね。
ここまで答えるとブラウザでSSOポータルが自動で開きます。profileを作りたいユーザーでログインしましょう。 ログイン成功すると以下画面に遷移し、「Sign in to AWS CLI」をクリックすると、 こういう画面に遷移します。ここまでくればブラウザは閉じて良いです。 ターミナルにて、ログインしたSSOユーザーがスイッチロールできるアカウント一覧が出てくるので、選択します。 その後同様に、選択したアカウント内のスイッチロールできるIAM Role一覧が出てくるので選択します。続いてデフォルトリージョン、デフォルトアウトプットフォーマット、最後にprofile名を訊かれます。
There are 3 AWS accounts available to you. Using the account ID 123456789012 There are 2 roles available to you. Using the role name "AdministratorAccess" CLI default client Region [ap-northeast-1]: CLI default output format : CLI profile name [AdministratorAccess-123456789012]: vscode-test To use this profile, specify the profile name using --profile, as shown: aws s3 ls --profile vscode-test
これで完了です。 ~/.aws/config
末尾に以下のようなものが追記されているはずです。
[profile vscode-test] sso_start_url = https://d-xxxxxxxx.awsapps.com/start sso_region = ap-northeast-1 sso_account_id = 123456789012 sso_role_name = AdministratorAccess region = ap-northeast-1 output = json
AWS Toolkit内でSSO profileを使ってAWSに接続する
AWS Toolkit自体はVS Codeにinstall済であるとします。
VS Code左端の一覧からawsのアイコンを選び、
右上…
をクリックして出てくるメニューから「Connect to AWS」を選びます。
するとクレデンシャルファイルに書かれているprofileがズラッと出てきますので、先程設定したSSOのprofileを選択します。
「外部サイト開いていい?」と訊かれるので「Open」をクリック。
すると先程aws configure sso
コマンドでprofileを設定したときと同様、ブラウザでSSOポータルが開くのログインします。
ログイン完了すれば、AWS Toolkit for VS Code内で、SSOのユーザー(がスイッチロールするIAM Role)の権限でリソースが見えるようになります。
こちらは一時認証情報なのでいずれ期限切れになります。その際は再度「Connect to AWS」からのフローを実行してください。