[アップデート]AWS Toolkit for VS CodeをAWS SSOのクレデンシャルで使えるようになりました

2021.03.23

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

AWS Toolkit for VS CodeをAWS SSOのクレデンシャルで利用できるようになりました!

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を作りたいユーザーでログインしましょう。 20210323-sso-login-form ログイン成功すると以下画面に遷移し、「Sign in to AWS CLI」をクリックすると、 202110323-sign-in-cli こういう画面に遷移します。ここまでくればブラウザは閉じて良いです。 202110323-done ターミナルにて、ログインしたSSOユーザーがスイッチロールできるアカウント一覧が出てくるので、選択します。 202110323-account その後同様に、選択したアカウント内のスイッチロールできる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のアイコンを選び、 20210323-aws-icon 右上をクリックして出てくるメニューから「Connect to AWS」を選びます。

202110323-connect

するとクレデンシャルファイルに書かれているprofileがズラッと出てきますので、先程設定したSSOのprofileを選択します。

202110323-profiles 「外部サイト開いていい?」と訊かれるので「Open」をクリック。 202110323-open-website すると先程aws configure ssoコマンドでprofileを設定したときと同様、ブラウザでSSOポータルが開くのログインします。

ログイン完了すれば、AWS Toolkit for VS Code内で、SSOのユーザー(がスイッチロールするIAM Role)の権限でリソースが見えるようになります。

202110323-awsresources

こちらは一時認証情報なのでいずれ期限切れになります。その際は再度「Connect to AWS」からのフローを実行してください。