Contents
前回から続いてます~
「いちはじCDK第14回 EC2 SSM編」で作った外部接続なしのSSMで接続できるEC2インスタンスに、AWS SSOでログインしてから、SSM接続してみましょうという企画です。
AWS SSO(AWS Single Sign-on)については、現行のサービスは、IAM Identity Centerです。
旧サービスってことですね。ただ、今回は浸透率が高そうな、AWS SSOとして説明していきたいと思います。
事前準備
事前準備というか、前提条件とういか、これをやる前にできてないといけないことです。
IAM Identity Centerの設定ができてること
IAM Identity Centerが使える設定がされていることが必要です。
出来てない人は、以下のリンクなどを参考にしてみましょう。今回の目的とは異なるので、説明の方は割愛します。
「IAM Identity Center とは何ですか?」
AWS CLIのバージョン2のインストール確認
AWS CLIのV2バージョンのなるべく新しいバージョンがインストールできてること。
Windowsならコンソールなどで、以下のコマンドで確認しましょう。
> aws --version
結果は以下の感じなればOK。特に「aws-cli/2.33.3」の部分が、「aws-cli/1.xx.x」になっていないことを確認しましょう。

残念ながら「aws-cli/1.xx.x」だった人は、まず、AWS CLIのV1をアンインストールしてから、以下のサイトを見てV2をインストールしましょう。V1を先に削除しないと、V2インストールしてもV1のまま変わらない(私がそうでした)ことがあるのでV1アンインストール→V2インストールがおすすめです。
「AWS CLI の最新バージョンのインストールまたは更新」
SessionManagerPluginのインストール確認
Session Managerのプラグインがインストールできてないと、EC2インスタンスに接続しようとしても以下のメッセージで失敗します。
> SessionManagerPlugin is not found. Please refer to SessionManager Documentation here: http://docs.aws.amazon.com/console/systems-manager/session-manager-plugin-not-found
インストールできているかの確認コマンドは以下です。
Windowsならコンソールなどで、以下のコマンドで確認しましょう。
> session-manager-plugin

上記イメージのリプライならOKです。
残念ながらダメだった人は以下のサイト見ながら、インストールしましょう~
「AWS CLI 用の Session Manager プラグインをインストールする」
では始めましょう~
始めましょうと言いつつもう一つconfig設定。
awsのconfig設定を先にしましょう。
先に配置先と、内容を書いちゃいます。
配置先は、
windows:C:\Users\ユーザー名\.aws
※C:\はwindowsのインストール先によってD:\だったりもするかもなので自分の環境に合わせて読み替えて下さい。
linux:~/.aws
です。
無かったら、自分でディレクトリ作ってしまって良いです。
configファイルは以下の内容になります。「config」という名前のテキストファイルを作って以下の内容の修正ができたら、「.aws」ディレクトリ下に配置しましょう!
[profile mysso]
sso_start_url = https://xxxxxxxxx.awsapps.com/start/#
sso_region = ap-northeast-1
sso_account_id = 1234567891122
sso_role_name = AdministratorAccess
region = ap-northeast-1
output = json
赤字の部分は各々の好みと、環境に合わせて直す必要あります。
myssoは任意の名前なんで、「oursso」とか自由でよろしいです。
sso_start_urlは以下から取得しましょう。
まずAWSのアクセスポータルへ接続して、「アクセスキー」をクリック

以下の画面の赤枠がそうです。

sso_role_nameですがこちらは、以下の赤枠を指定しましょう。人それぞれで異なると思います。

SSOログイン開始です。
まず。SSOログインします。以下のコマンドを実行です。Linuxならそのまま打てば良いでしょう。Windowsなら、PowerShell使うのが良いかと思います。
> aws sso login --profile mysso
赤字「mysso」はconfigファイルに記載したものを指定してください。
以下のようなリプライが返却されます。
赤枠で2箇所囲みましたが、上のhttps://~の部分は、ブラウザー環境がない場合に必要になります。コンソール入力主体のLinuxマシンなどの場合は必要です。
下の「NQBW-XTND」は、この後ブラウザー画面で連携して、承認するためのキーになります。

さて、上記に書きましたが、ブラウザー環境のないLINUXなどのマシンの場合ここでストップしてしまいますが、ブラウザーのある別マシンなどで、「https://~」の部分を入力して、アクセスしましょう。
で、上記の認証キー「NQBW-XTND」を入力する画面でるので、そこで入力コードを入力してください。
Windowsなどブラウザーあるマシンは自動的に、ディフォルトブラウザーが起動して以下の画面に遷移します。

「確認して続行」クリックです。

許可してあげて下さい。

これでOKです。ブラウザーは閉じちゃいましょう。
そうするとコンソールの方が先にすすんで以下の青枠のようになります。

これでSSOログイン完了です。
EC2インスタンスへSSMログイン
では、上記のSSOログイン完了のままのコンソールで、続けてEC2インスタンスへSSM接続しましょう。
接続する前に接続先EC2インスタンスIDを調べましょう。以下の赤枠を確認しておきます。

上記の場合は「i-01977030f8bede6d5」がそうです。
では以下のコマンドでSSM接続開始です。
> aws ssm start-session --target i-01977030f8bede6d5 --profile mysso
SSM接続完了後のコンソールです。あまり接続した実感が湧かないですけど、接続できています。
以下のイメージ取り忘れたの後でとったので、EC2インスタンスIDが違いますが気にしないようにして下さい。また、失敗しちゃった部分が大きな赤い四角でマスクしました!(テヘッ)

以上になりますね~
おわりの言葉
さて本手順でSSM接続することは、何が嬉しいのか?ってところですね。
AWSコンソールからのWEB画面経由の接続だと若干操作しにくいです。っていうのが一つと、1番大きな理由は、結構セッションがすぐ切れるというところです。
セッションの再接続するかのポップアップウィンドウが出てきて再接続しないといけないし、接続していた、WEBコンソール画面がEC2インスタンスの一覧に戻ってしまったりで。。。作業がしずらいというのが大きいです。
LINUXマシンや、PowerShellなどのコンソールからの接続は、かなり長い時間セッション切れないので作業しやすいということがとても良いです。
特にLINUXマシンからのCLI作業はやりやすいですね。
その点PowerShellはちょっと使いずらい感があります~(個人的な感想ですーーー)
では、次回はたぶんECSのEC2編ですね!

コメント