AWS SystemsManagerとは?
SSM(SystemsManager)でできることはかなり沢山あるみたいです。
オンプレミスのサーバーも管理できるみたいですが、今回はEC2でのみの使用となります。
AWS Systems Manager は、AWS アプリケーションおよびリソースのオペレーションハブであり、ハイブリッドおよびマルチクラウド環境向けのセキュアなエンドツーエンドの管理ソリューションです。これにより、安全でセキュアなオペレーションを大規模に実現できます。(AWS公式から引用)
SSM RunCommandとは?
「AWS マネージドコンソールから各種コマンドを実行できる」機能です。
SSH等で対象サーバー内に入ることなく、マネージドコンソール上から各種コマンドが打てるようになります。
RunCommandを実行するための前提条件
SSM RunCommandを実行するためにはいくつかの前提条件をクリアする必要があります。*EC2の場合
- インターネットアクセス(アウトバウンド)
- 対象EC2でSSM Agentがインストールされている
- 対象EC2でSystemsManagerがアクションを実行できるようにアクセスを許可
詳しくは以下公式ドキュメントを参照してください。
SSM Agentとは?
AWS Systems Manager エージェント (SSM Agent) は、Amazon Elastic Compute Cloud (Amazon EC2) インスタンス、エッジデバイス、オンプレミスサーバー、仮想マシン (VM) で実行される Amazon のソフトウェアです。
SSM Agent を使用すると、SystemsManager でこれらのリソースを更新、管理、設定できるようになります。
このSSM Agentを対象のEC2で実行させることでSystemsManagerからEC2の操作が可能になります。
SystemsManager RunCommandを実装する
ステップ1. IAMロールを作成する
対象のEC2インスタンスでSystemsManagerがアクションを実行するための権限をSystemsManagerに付与するためのIAMロールを作成していきます。
ステップ2. EC2インスタンスにIAMロールをアタッチする
EC2インスタンスを起動する場合
-
アタッチするIAMロールを選択する
EC2の設定画面 「高度な詳細」の「IAMインスタンスプロフィール」 にて、先ほど作成したIAMロール「EnableEC2ToAccessSystemsManagerRole」を選択します。
起動中のEC2インスタンスにアタッチする場合
対象のEC2インスタンスを選択
↓
「アクション」
↓
「セキュリティ」
↓
「IAMロールを変更」と進みます
先ほど作成したIAMロール「EnableEC2ToAccessSystemsManagerRole」を選択し、IAMロールの更新を選択。
ステップ3. 対象のEC2にSSM Agentをインストールする
AmazonLinux2以降であれば標準でインストールされています。
インストールされていない場合は以下公式ドキュメントに沿ってインストールします。
ステップ4. SSM Agentをアップグレードする
EC2で実行されているSSM Agentを最新にアップグレードします。
AWSコンソール「SystemsManager」画面左の「Run Command」を選択します。
コマンドドキュメントで「AWS-UpdateSSMAgent」を選択。
ターゲットで対象のEC2インスタンスを選択します。
注意
ステップ2. EC2インスタンスにIAMロールをアタッチする
or
ステップ3. 対象のEC2にSSM Agentをインストールする
どちらかの設定がうまくいっていないとこの画面でEC2インスタンスが表示されません。
ステップ5. RunCommandを使用してシェルスクリプトを実行する
ステップ6. RunCommandが正常に動いているかを確認する
ステップ5. RunCommandを使用してシェルスクリプトを実行するで実行したコマンドが正しく動作しているかを確認していきます。
以下ファイルが作成されていることを確認できました!
/var/log/ps_aux.log
最後に
AWSはAWS内での普遍的な知識が結構あるので一つ覚えるとAWS内の他のサービスに応用できるのが良いところですねえ。
何でも出来すぎて怖いです。。
ではまたっ!
参考