この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
お疲れ様です、第三システム部の岡野です。学習したことに関する記事の投稿としては当ブログでは今回が初となります。よろしくお願いします。
今回は、AWS Systems Managerを学ぶために公式ハンズオンに取り組んだ内容について記そうと思います。(ハンズオンの動画と2022年9月現在では画面が一部異なります)
参照サイト:AWS Systems Manager を使ったサーバ管理はじめの一歩編
手順
1:cloudformationでvpcを作成
ハンズオンで事前に準備されていたjsonをもとに、cloudformationでvpcを作成します。
2:Systems Manager環境のセットアップ
主に行う作業はIAMロールの作成とマネージドインスタンスの作成です。
IAMロールを作成する理由は、Systems Managerと連携しないと使えないからです。
IAMManagedConsoleに移動し、ロールを作ります。アクセス管理のロール→ロールの作成→ユースケースのEC2を選択→許可ポリシーにSSMMaと入力してAmazonSSMManagedInstanceCoreにチェックします。AmazonSSMManagedInstanceCoreはインスタンスがSystems Managerと連携するための必要最低限の権限を与えるロールで、トラブルを避けるために権原を必要なものだけに絞る必要があります。
ロール名を入力し(今回はわかりやすいようにokn-h4b-roleと入力)ロールの作成をクリックすれば完成です。
次にマネージドインスタンスの作成をします。
マネージドインスタンスは
- SSM Agent導入済みのインスタンス
- Systems Managerへのアウトバウンド経路
- Systems Manager利用に必要な権限を持ったIAMロール
を持っています。
インスタンスタイプはデフォルトのものを使用します。
vpcはデフォルトのものではなく、cloudformationで作成したvpc(h4b-vpc)を使用します。また、プライベートサブネットを選択します。
高度な詳細をクリックし、IAM インスタンスプロフィールを今回作ったものに変更します。
名前とタグにインスタンス名を入力します。入力欄にそのまま入れればキーがName、値が今回入力したもの(もの(okn-h4b-instance)となります。
セキュリティグループを設定します。既存のセキュリティグループを選択するにチェックを入れ、デフォルトのものではなくcloudformationで作成されたh4b-ec2-sg
を選択します。
キーペアはキーペアなしで続行を選択します。
以上の作業が完了後、インスタンスの作成をクリックします。
無事、作成が完了しました。
3:マネージドインスタンスとして動くかの検証
Systems ManagerのFleet Managerで確認します。
Fleet Managerはマネージドコンソールからマネージドインスタンスの確認をしたり、OSユーザー、グループの管理をしたりする機能があります。
今回作成したインスタンスがFleet Managerに表示されているのでマネージドインスタンスとして成り立っていることが確認できました。
4:Session Managerを使ったサーバーログイン
Session Managerはサーバー側のインバウンドポートを解放せずにサーバーへアクセスすることを可能にします。なので踏み台サーバーの準備やIDやPWといったサーバへのログイン情報の管理が不要になります。その代わり、IAM認証で制御します。
SSM Agentはアウトバウンド通信でvpc内からSystems Managerと通信します。サーバー自らがSystems Managerと連携することでSystems Managerによるさーサーバー管理が可能となります。それによってインバウンドの解放が不要となります。
Systems Managerからセッションマネージャーをクリックし、セッションの開始をクリックします。
その後、ターゲットインスタンスから自分のインスタンスを選択し、セッションを開始するをクリックします。
コマンドを入力すると反応が返ってくるので接続が成功しています。
ssm-userとして接続していることがわかります。
5:ログの出力の設定
サーバーに接続した操作をログとして残すことができます。サーバー上のコマンド操作のログを取る場合はCloudWatch Logsを使います。
CloudWatchからロググループを選択し、ロググループの作成をクリックします。
名前を入力し、作成をクリックします。
Session Managerに移動し、設定をクリックします。
その後、編集をクリックしCloudWatch loggingのEnableにチェックを入れます。
CloudWatch のロググループは自分が作成したものを設定します。
最初に作ったIAMロールにCloudWatchに関する権限を与える必要があります。
IAMManagementに移動し移動し、自分が作成したロールをクリックします。その後、許可を追加をクリックし、ポリシーをアタッチをクリックします。
cloudwatchlogと入力し、CloudWatchLogsFullAccessを選択します。その後ポリシーのアタッチをクリックします。
権限が追加されました。
動作を確認するためSession Managerでコマンド入力します。
CloudWatchに移動し、自分の作ったロググループを確認します。
先ほど入力したコマンドとログの内容が一致しているので成功です。
6:Run Commandの実行
Session ManagerのRun Commandをクリックし、別画面に遷移した先でもRun Commandをクリックします。
shellと入力し、AWS-RunShellScriptを選択します。(OSのコマンドをパラメータとして実行する処理の1セットを実行するため)
コマンドのパラメータに実行したいコマンドを入力します。
ターゲットを選択します。
コマンドを実行し、成功を確認しました。
ログを確認するため自分のインスタンスIDを選択し、出力の表示をクリックします。
Outputをクリックし、内容を確認します。
Run Commandの内容と一致したので成功です。
まとめ
一口にSystems Managerと言ってもサーバーの接続やコマンド入力など色々な機能があり、使いこなすには練習が必要だと思いました。また、作業をする中でClowdwatchやIAMなど様々な機能を組み合わせるので勉強として充実したものとなりました。