はじめに
JAWS DAYS 2019に初めて参加してきました!!
すごい盛り上がりで、約2000人が参加されたそうです!キャンセル待ちも多数いたとか!!!
朝から参加しましたけど、内容が濃すぎて後半は頭がパンクしておりました…
自分が参加したセッションの中でも特に多くの聴講者がいたと感じたのは、EKS、CI/CDでした。
EKSは皆さん注目しているんでしょうね!弊社も本番環境docker化計画で密かに検討中です!
JAWS DAYS 2019とは?
JAWS DAYS 2019 資料まとめ
タイトルと注目のサービスが違うじゃん…
そうなんです。ですが、今回はタイトルにある通りAWS Session Managerについてお話しようと思っております。
JAWS DAYS 2019でもAWS Session Managerのセッションがありました。
弊社の環境では、踏み台サーバを経由してEC2インスタンスにSSHログインする、という流れになっていたのですが、セッションのタイトルに 1日でSSHをやめることができた話 と書いてあるのを見つけ、すぐに 僕が作った最強のタイムテーブル に追加しました。
セッションの資料:1日でSSHをやめることができた話 ~AWS Systems Manager Session Manager 導入と運用Tips~
セッションを聞いてみて
- SSHログインが不要
- 踏み台サーバが不要で余計なEC2インスタンスが減らせる!
- 公開鍵・秘密鍵の管理が不要!
- SSHのインバウンドポートが不要
- IAMで一元管理できる
- 人が増えてもサクッと追加できる!
- コンソールでの実行履歴が残せる
- S3 or CloudWatchLogsに送れる!
- CloudWtachLogs→lambdaとかでSlackに通知もできる!
マジかよ…メリットしかないやんけ…
というわけで、すぐにStaging環境で試してみました!
試した結果
1日というか、 30分 でシェルアクセスが出来ました!!!
登壇者の方も「1日と言っていますが、実際かかったのは3時間くらいです。」と仰っていましたが、それ以上の簡単さでした!
というわけで、自分が設定した手順を説明します。
手順
- EC2に割り当てられているロールに AmazonEC2RoleforSSM をアタッチする
以上でした。
え…?マジで…?
実際に最小限これで出来ました。本当はよりセキュアにする設定もあるのですが、とりあえずお試しなのでよしとします。
本来の手順であれば、
- EC2にSSMエージェントをインストール
- IAMインスタンスプロファイルロールの作成
- EC2に上記のロールを割り当てる
- その他、よりセキュアな設定
とするのですが、弊社の環境はElasticBeanstalkを使用して、オートスケールするようにしています。
EC2にはすでに専用のロールが設定されており、そこに AmazonEC2RoleforSSM をアタッチしました。
また、SSMエージェントは2017年9月以降のAmazon Linux AMI に標準インストールされています。
そのため、たった1ステップでインスタンスにシェルアクセスができるようになったというわけです!
(セキュアな設定…?Staging環境だから大丈夫!!)
それだけで30分はかかりすぎでしょ…
ポリシーをアタッチしてもすぐに反映されてなくて…色々調べてから戻って来たら表示されてて…
今後の予定
Staging環境でしばらく使ってみて、問題がなければセキュアな設定をしたのち、本番環境にも適用しようと思います!
おわりに
JAWS DAYS 2019に行けてとてもよかったです!!
運営の皆さま、登壇者の皆さま、スポンサーの皆さま、本当にありがとうございました!!
この流れで頑張ってEKSを使って本番環境docker化していきたいと思います!!
追記
その後セキュアな設定をした際に色々調べた結果、弊社のEC2は全てNATゲートウェイを通って外に出ていたので、1ステップでシェルアクセスができていたことが分かりました…
セッション時のコマンドとかの情報が外にダダ漏れしていた訳ですね…壊れるなぁ…
セキュアな設定(VPCエンドポイントの設定)をすることで、VPC内に閉じた通信経路でセッションマネージャを使用することができるため、ちゃんとその設定をしてから使いましょう!!!