【ハンズオン】サーバ管理を楽にしよう!SystemsManager の基本ハンズオン #AWSSummit

Systems Managerを利用することで踏み台サーバを利用せずアクセスしたり、OSの自動パッチ適用が容易になります。
2020.09.13

2020年9月8日から9月30日の間で開催されているAWS Summit Online のセッションに参加しています。
AWS Summit Onlineでは基調講演等の他、ハンズオンセッションという手を動かすセッションがあります。

今回はサーバ管理を楽にしよう!SystemsManager の基本ハンズオンに参加したのでレポートします。

セッション概要

スピーカー

石橋 香代子 氏
アマゾン ウェブサービス ジャパン
技術統括本部 エンタープライズソリューション本部
ソリューションアーキテクト

動画&資料はこちらになります。
ハンズオンの動画や手順書はとても分かりやすいので是非ご覧ください。
※私のPCはWindowsになるので、これからの記事はWindowsが前提になります。
Macの方は一部異なりますのでハンズオンの動画を視聴頂くことをお勧めいたします。

目的

AWS Systems Manager の基本機能をさわってみて、どのようなことができるのかを体感する

Systems Managerの概要

Systems Managerとは、AWS環境の運用管理をスケーラブルかつコスト効率よく行うサービス群です。
そもそもはグループ化・可視化を目的としていましたが、サーバへのリモートアクセスやサーバ群の上でコマンドを実行するRun Commandメンテナンスウィンドウの管理といった多機能を兼ね備えたサービスになっています。

今回は下の図でオレンジ色になっている部分を実際に設定してみようと思います!


※以下Systems ManagerはSSMと略します。

SSM利用にあたっての準備

マネージドインスタンスにする

①マネージドインスタンスにするため、SSM Agentの導入が必要になります。
Amazon LinuxやWindows、Ubuntu Serverのオフィシャルイメージには導入済みとのことです。※オンプレ等は別途導入が必要です。今回はEC2のAmazon Linuxを対象にしようと思います。

②SSM APIへの経路確保
SSM Agentから SSM APIへの アウトバウンド経路の確保が必要になります。
今回はPublic SubnetにEC2を作成し、SSM APIへアウトバウンド通信を行うようにします。

③IAMロール付与
AmazonSSMManagedInstanceCore というロールをアタッチすることが必要となります。

上の①~③を行うことで、SSMのマネージドインスタンスにすることができます。
実際に私のアカウントで試してみます。

IAMロールの作成

まずはAWS マネジメントコンソールにログインします。
サービスのところでIAMを検索し、ロール⇒ロールを作成をクリックしましょう。
AWSサービス、EC2をクリックし、次のステップのアクセス権限をクリックします。

ポリシーのところで上段に上げたAmazonSSMManagedInstanceCoreをクリックして進めます。

タグは特に設定せず、ロール名も分かりやすい名前を記載しロールを作成しましょう。

EC2の作成

次に対象となるEC2を作成します。
今回はLinuxのt2.micro、VPCやサブネットはデフォルトのままで、IAMロールを先ほど作成したものを設定します。

セキュリティグループも既存のものを設定します。既存のセキュリティグループだとセキュリティグループのソース以外は通信しない形になるので閉じたファイアウォールになります。

最後に新しいキーペアを作成してインスタンスを作成します。

インスタンスの作成が完了したら、SSMの画面でマネージドインスタンスになっているか確認します。

この時にでるインスタンスIDはメモしておきましょう。

セッションマネージャーによるサーバアクセス

では作成したEC2インスタンスにSSMセッションマネージャーからアクセスしてみます。
セッションマネージャーでは、なんとインバウンドの通信ポートを解放せずにサーバへのシェルアクセスが可能になります。
接続方法は①SSM Agent経由で直接アクセス、②SSM Agentでトンネル作成してSSHアクセス、の2パターンがあります。
まずは①のSSM Agent経由でアクセスします。

SSM Agent経由アクセス

では①のSSM Agent経由で直接アクセスしてみます。

SSMの左にあるセッションマネージャーをクリックします。
ターゲットインスタンスをクリックし、セッションを開始を押します。

するとコマンドが叩ける画面に遷移します。whoamiコマンドを打つとssm-userであることが確認できます。
sudo systemctl stop sshd.serviceを打つとstopすることが出来たり、sudo systemctl start sshd.serviceを打つことでサーバを起動することができます。

SSM Agentでトンネル作成してSSHアクセス

SSM AgentでトンネリングアクセスによるSSHアクセスの場合はAWS CLIのインストールと、AWS CLI用のSession Manager Plugin のインストールが必要です。
インストールを行ったら自身のターミナルを起動して、ターミナルからLinuxインスタンスに接続します。

実際の手順・コマンドにつきましては下記を参照してみてください。
AWS Systems Manager セッションマネージャーでSSH・SCPできるようになりました

Run Commandによるサーバ群へのコマンドの一括投入

Run Commandを利用することで、OS上でコマンドの実行が可能になります。
またサーバログイン不要で、ターゲットとしてインスタンスタグ指定やリソースグループの指定、手動選択が可能となっております。
Run Commandはコマンドドキュメントというものを実行します。

コマンドドキュメントとはSSMドキュメントにて定義して実行するものです。
Run Commandで実行するドキュメントをコマンドドキュメントと呼びます。

ハンズオンではEC2に対して「シェルスクリプトの実行」コマンドを実行してみまs。

Run Commandによるサーバ群へのコマンドの一括投入

では早速やってみます。まずはSSMの左のRun Commandをクリックし、コマンドドキュメントで「ドキュメント名のプレフィックス : Equals : AWS-RunShellScript」と検索します。

コマンドドキュメントででてきた名前をクリック、コマンドのパラメータは
uname -a
ssh -V

と記載、インスタンスは手動で選択するで先ほど作ったインスタンスを設定します。
実行を押すとコマンドが正常に送信され、コマンドのステータスが成功と表示されました。

打ったコマンドはコマンド履歴として見ることが可能です。

インスタンスへのOSのバッチの自動適用

最後のセッションはSSMパッチマネージャーを利用したOSのパッチの自動適用でした。
パッチルール準拠状況の確認、パッチ適用を自動化してくれるものです。

SSM メンテナンスウィンドウを利用することでスケジュールを指定して定期実行することができます。

では早速やってみます。
SSM画面のパッチマネージャーをクリックし、パッチ適用の設定をクリックします。

今回は作成したインスタンスを選択してメンテナンスウィンドウの設定をしていきます。
全て入力して”パッチ適用の設定”をクリックする事でパッチ適用の定期実行設定が完了となります。

パッチ適用の定期実行の確認はメンテナンスウィンドウを見る事で確認をとることが出来ました。

まとめ

今回SSMの機能を利用することで下記3点を体験することが出来ました。

  1. セッションマネージャーを利用したサーバアクセス
  2. Run Commandによるサーバ群へのコマンドの一括投入
  3. パッチマネージャーを用いた、インスタンスへのOSパッチの自動適用

感想

今回初めてSSMを利用してみました!機能が沢山あり是非利用されていない方がいたら活用してみたらいかがでしょうか。
ハンズオンといった形で無償で丁寧に教えてくれるのもありがたかったです!

ではまた!AWS事業本部 営業部の洲崎がお送りしました。