【AWS】AWS Systems Manager Run Commandを試してみた
どもども、急に肌寒くなってきて衣替えを余儀なくされそうですね。
本日はAWS Systems Managerの数ある機能の一つのRun Commandを使用してNginxのアクセスログを読んでみたいと思います。
まずはさくっと検証用IAMロール、EC2インスタンスを作成しRun Commandを実行するという流れで行きますので良ければ一緒に作業してみてください。
AWS Systems Manager Run Commandとは
検証作業に入る前に、そもそもAWS Systems Manager Run Commandとは何かおさらいしておきます。
AWS Systems Manager Run Commandとは
Systems Manager Run Command を使用して、EC2 インスタンス、オンプレミスサーバー、VM の設定をリモートで管理します。
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/execute-remote-commands.htmlより
とAWS公式リファレンスで紹介されています。
実際に今回の使用方法はEC2インスタンスで稼働するNginxのアクセスログをAWSコンソール上から読みに行くので、まさに紹介通りの使用方法と言えそうです。
早速、Run Commandを使用してみましょう。
検証環境を準備する
まずはRun Commandの実行対象となるEC2インスタンスとRun Commandに必要なIAMロールを準備したいと思います。
AWSコンソール画面にログインしたら、下記条件でIAMロールを作成します。
・ユースケースはEC2
・AmazonEC2RoleforSSMポリシーをアタッチ
・ロール名は任意でOKです
続いてEC2インスタンスを作成します。
・今回は検証用なのでインスタンスタイプはt2.microでOKです
・VPCやサブネットなどはデフォルトのものを使用してください
・IAMロールは上記で作成したものを指定してください
・セキュリティグループは22と80を開けておいてください
・キーペアは既存のものでも、新規作成しても問題ありません
インスタンスが立ち上がったらSSH接続しましょう。
SSH接続ができたら既存パッケージのバージョンアップをします。(検証用インスタンスなので必須ではないですが)
$ sudo su -
$ yum update -y
アップデートが完了しましたら、Nginxをインストールしていきましょう。
$ sudo amazon-linux-extras install nginx1
インストールできたか確認の上、Nginxを起動します。
$ nginx -v
nginx version: nginx/1.20.0
$ systemctl start nginx.service
$ systemctl status nginx.service
検証ようなのでNginxの自動起動設定は省略します。必要に応じて対応してください。
Nginxが起動していることが確認できましたら、パブリックIPをブラウザに入力してサーバにアクセスしてください。
Nginxの初期ページが表示されたらOKです。アクセスログを見てみましょう。
less /var/log/nginx/access.log
先ほど接続した分のログが出力されていることがわかります。
これでRun Commandを使用する準備ができました!
Run Commandを実行してみる
それでは実際にRun Commandを実行してnginxのアクセスログを読み込んでみましょう。
今回はNginxのアクセスログ からGETリクエストの件数を出力する下記コマンドをRun Command経由で実行してみます。
$ sudo cat /var/log/nginx/access.log | grep "GET /" | wc -l
ここからは画像も交えて説明していきます。
まず初めにAWSコンソールのAWS Systems Managerページに移行してください。左側ナビのRun Commandをクリックしましょう。
ページが変わったら、右上にある"コマンドを実行する"ボタンをクリックしましょう。
コマンドドキュメントはAWS-RunShellScriptを選択します。
コマンドパラメータに今回実行するコマンドを入力します。
ターゲットに今回作成したEC2インスタンスが表示されるはずですので、そちらを選択してください。
ここまで設定できましたら、後の設定はデフォルトのままで問題ないのでそのまま実行してみましょう。
コマンドのステータスが成功になりましたら、実際の出力結果を確認してみます。
無事件数が表示されていれば実行成功です。下記の例だとNginx経由でのGETリクエストログが3件アクセスログに出力されていることがわかります。
Run Commandはサーバに接続せずにインスタンス内を操作できるので非常に便利ですね!
さいごに
今回はAWS Systems Manager Run Commandに挑戦してみました。
AWSリソースとサーバ内の操作をAWSコンソール上で統一して行えるようにするなど、用件によってはかなり使い勝手の良いサービスだと思いました。
EC2インスタンスの運用における定期業務の簡略化など様々な場面でRun Commandにチャレンジしてみようと思います。
最後まで読んでいただきありがとうございました!
↓オススメ教材