AWS CLI v2 プレビューのインストーラが公開&AWS SSOに対応しました!

ひさびさにAWS CLI v2のニュースが入ってきて興奮しています!

昨年のre:InventでAWS CLI v2の話題が出てきましたが、あまり大きな動きがありませんでした。

そんなときにAWS Developer Blogに、バーンと2つのニュースが入ってきました!

さっそく試してみます!

AWS CLI v2 プレビューをインストーラでインストールしてみる

AWS CLI v2 プレビューのインストーラでは、 /usr/local/bin ディレクトリに aws2 コマンドとしてインストールされます。
そのため、現在のAWS CLI( aws コマンド)とも共存できます。

インストールはブログに記載のとおりやればとても簡単です。

次の3つのインストーラが公開されています。

  • MacOS executable installer
  • Linux executable installer
  • Windows MSI installer

私はMacbookを利用しているので、MacOSへのインストールをやっていきます。

curl コマンドでインストーラをダウンロードして。

$ curl 'https://d1vvhvl2y92vvt.cloudfront.net/awscli-exe-macos.zip' -o 'awscli-exe.zip'

unzip コマンドで展開して、 install スクリプトを実行するだけです。

$ unzip awscli-exe.zip
$ sudo ./aws/install

AWS CLI v2 プレビューのコマンドを実行してみると、問題なく動きました!簡単です。

$ /usr/local/bin/aws2 --version
aws-cli/2.0.0dev0 Python/3.7.4 Darwin/18.7.0 botocore/2.0.0dev0

AWS CLI v2 プレビューを AWS SSOでログインして使用してみる

とてもユニークな機能です。まさか、ブラウザでログインしてターミナルのAWS CLIが使えるようになるとは思いませんでした。

AWS SSO自体の構築方法については、弊社ブログをご参照ください。

SSO Profileを設定してみる

ブログを参考に、AWS CLI v2 プレビューの設定をしていきます。

まず最初に、 aws2 configure sso コマンドを実行します。

$ aws2 configure sso
SSO start URL [None]: https://d-0123456790.awsapps.com/start
SSO Region [None]: us-east-1

そうすると、SSO start URLSSO Regionの入力を促されます。

SSO Regionは、AWS SSOを構築したリージョンです。

SSO start URLは、AWS SSOのログイン画面のURLです。

余談ですが、AWS CLI v2では、こういった細かい点で補完が効くようになっています。

ここまで入力するとターミナルは入力の受け付けをいったん停止し、デフォルトブラウザでAWS SSOのログイン画面が開きます

ログイン画面からログインすると、AWS CLIでサインインしてよいかと確認を促されるので、そのままサインインします。

そうすると、AWS CLIでのサインインが成功します。

何のこっちゃと思っちゃうんですが、ここでターミナルに戻ってみると次の入力ができるようになっています。スゴい!

後はCLIがデフォルトで使用するRegionと、デフォルトで使用するアウトプットのformatと、Profile名を適当につけてやれば設定は完了です。

$ aws2 configure sso
SSO start URL [None]: https://d-0123456790.awsapps.com/start
SSO Region [None]: us-east-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.us-west-2.amazonaws.com/

Then enter the code:

ABCD-EFGH
Successully logged into Start URL: https://d-1234567890.awsapps.com/start
There are 2 AWS accounts available to you.
Using the account ID 123456789012
There are 2 roles available to you.
Using the role name "readOnly"
CLI default client Region [None]: us-west-2
CLI default output format [None]: json
CLI profile name [readOnly-123456789012]: my-sso-profile

SSO Profileを使ってみる

AWS SSOでログインしてAWS CLI v2プレビューを使うには、aws2 sso login コマンドでログインが必要です。

$ aws2 sso login --profile my-sso-profile

そうすると、設定時と同様にデフォルトブラウザでログイン画面が表示されます。そのままログインを進めていくとAWS CLI v2プレビューのコマンドをAWS SSOの権限で使用できるようになります。

試しに、aws2 s3 ls コマンドを実行してみると、問題なく実行できていそうなことがわかります。

$ aws2 s3 ls --profile my-sso-profile

どうなっているのかと aws2 configure list してみると、どうやらAWS SSOが一時的なクレデンシャルキーを発行をして、うまいこと利用できるようにしていそうです。

$ aws2 configure list --profile my-sso-profile
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile           my-sso-profile           manual    --profile
access_key     ****************WC27              sso
secret_key     ****************/6h0              sso
    region                <not set>             None    None

CLIの利用が終わったら、 aws2 sso logout コマンドでログアウトできます。

$ aws2 sso logout

ログアウトすると、当然権限がなくなりコマンドを実行するとエラーが出るようになります。

$ aws2 s3 ls --profile my-sso-profile
Error loading SSO Token: The SSO access token has either expired or is otherwise invalid.

終わりに

AWS CLI v2 プレビューのニュースを聞いて、テンション上がりました!
AWS SSOに対応して、さらなる進化を遂げそうです!

プレビュー版なのでまだ本番環境で使うことはありませんが、検証環境ではガンガン試していきたいと思います!