これをやった経緯
以前に社内で管理されているシステムの外形監視をあるSaaSを利用して対応したのですが、その際に下記の要件があって、外向けの共有インスタンスを1つたてたのですが、
社内システムであるために監視ツールからのIPのみを許可する必要があり、セキュリティグループでどうにか対応したのですが、監視対象のシステムにより担当者が異なるため、
「共有インスタンスのSSHキーの管理どうするかなー」と悩んでいました。。。
そんなとき、セッションマネージャーの機能がリリースされたとのことで、使ってみよう!ということで対応してみました。
参考サイトは下記です。
- 最新 – AWS Systems Manager セッションマネージャーで EC2 インスタンスへのシェルアクセスを実現 | Amazon Web Services ブログ
- SSH不要時代がくるか!?AWS Systems Manager セッションマネージャーがリリースされました! | DevelopersIO
うまくできなかったってどうなったの?
上記サイトの手順通り進めたのですが、「セッションの開始」を押して、コマンドを打てるコンソールまでは開いたのですが、、、
画面上にプロンプトが出ない!? という事象に悩まされまして、、、、下記を試したんですが、うまくいきませんでしばらく放置していました。
- Amazon Linux 2にしてみる
- 自分のIAMユーザに権限を追加
- サーバ再起動
全てやってもできないので、指定されたエラーログなどを共有してサポートに聞いてみると、、、
Encryption validation failed, err: We couldn't start the session because encryption is not set up on the selected CloudWatch Logs log group. Either encrypt the log group or choose an option to enable logging without encryption.
このエラーメッセージは、セッションマネージャーのログの出力先として設定されている CloudWatch Logs のロググループが存在しない場合や、ロググループでのログデータの暗号化の設定が行われていない場合に記録されます。
とのこと、、、エラーメッセージでもその通り言ってますね。
勝手に作成してくれると思ってたのは大間違いだったようです
ちゃんと参考サイトを読んでないのがバレましたね・・・
ログの出力先となるロググループ名: /aws/ssm/session_logs
ログデータの暗号化 : true
ということで、上記のロググループを作成して、再度「セッションを開始」したところ、問題なくプロンプトも表示され、
ちゃんとコマンドを打つことができるようになりました。
めでたしめでたし