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ができていること前提である)
お昼ご飯代で使います