AWS SSOを利用したCLIが最高だったので感情そのままで書く


いやまじ最高だわ。

まずこれ書いてる人は、コマンドラインという存在が大っ嫌いです。GUIで済むのならGUIだけで生きていたいそんな気持ちで日々を生活しています。
ですが、そうもいかない時があります。残念だけど。

前提の条件

タイトルにもあるけど、AWS SSOが既に設定されているということです。
されていればなんでもいいです。IdPがなんであろうとなんでもOK。最高か

ただしAWS CLI v2がのみ利用可能。v1じゃダメです。でもConfigの設定とかは最低限でいい。

名前付きのプロファイルを作成して利用する

AWS SSOが1つのアカウントで複数のロールを利用できたり、AWS CLIのプロファイルを複数作れるようにAWS SSOでCLIを利用するときも名前付きのプロファイルを作成できます。

ちなみに、名前付きのプロファイルって表現があってるかはわからない。でもAWSの公式ドキュメントの和訳もそうなのでこのまま通します。

AWS SSOを利用してCLIを利用するときは自動と、プロファイルに書き込んどく手動の2種あるようですが、CLI弱者なので、プロファイルなんていじりたくないので自動の方でやりました。

$ aws configure sso
SSO start URL [None]: [None]: https://my-sso-portal.awsapps.com/start 
    GUIでAWS SSOにログインした時にアカウント一覧が表示されるURL
SSO region [None]:ap-northeast-1  
    アクセスしたいリージョン

コマンドラインで以下を叩くとブラウザに遷移します。
すでにブラウザでIdPでAWS SSOにアクセスなどを直近でしていると、自動で自分のアカウントを判定してくれます。
してなければIdPのログイン画面が表示されます。

ブラウザでの操作が終わるとコマンドライン側に戻ります。
複数アカウントがある場合は、一覧で接続できるアカウトが表示されるので、接続したいアカウント選んでください。
そうするとこんな感じ


There are (アカウント数) AWS accounts available to you.
    アカウント一覧が表示される
Using the account ID 
    アカウントを選択するとアカウントIDが表示される
The only role available to you is: AdministratorAccess
    そのアカウントでの自分の利用できるロールが表示される
Using the role name "AdministratorAccess"
    使うロールの選択
CLI default client Region [ap-northeast-1]:
    リージョンの選択                                     
CLI default output format [None]: json                                          
CLI profile name [AdministratorAccess-xxxxxxxxxxx]: hogehoge
    このアカウントでの自分のプロファイルネーム

こんな感じのがざっくり表示され選択します
これでAWS SSOで設定されてる自分のロールを利用してCLIがりようできるという感じです。

実際の挙動

こっからは正直、AWS CLIとほぼ変わらないです。
例で出すとちょうど触っていたのがセッションマネージャーだったのでこんな感じ

% aws ssm start-session --target i-インスタンスID --profile hogehoge
Starting session with SessionId: IdPでのアカウント名 -インスタンスID
sh-4.2$ 


今までokta-awscliとか使ってたんですが、普通にしんどくて泣きそうだったので今日から私は、このAWS SSOでログインできるAWS CLIに魂を売ろうと思います。


詳しいというか、AWSの公式ドキュメントはこれ

AWS Single Sign-On を使用するための AWS CLI の設定

homebrewでAWS CLIをインストールするのもしんどかった私も感動できる楽だったので、コマンドライン恐怖症の皆様ぜひこれ使おう。(なおAWS SSOができていること前提である)

お昼ご飯代で使います