検索
連載

「Amazon EC2」インスタンスの設定ミスを防ぐ「AWS Systems Manager」によるリモートコマンド実行AWSチートシート

AWS活用における便利な小技を簡潔に紹介する連載「AWSチートシート」。今回は、「AWS Systems Manager」の「Run Command」を利用して、「Amazon EC2」インスタンス上のパッケージをアップデートするコマンドをリモートで実行する方法を紹介する。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

 「Amazon Web Services」(AWS)活用における便利な小技を簡潔に紹介する連載「AWSチートシート」。今回は、「AWS Systems Manager」の「Run Command」を利用して、「Amazon EC2」インスタンス上のパッケージをアップデートするコマンドをリモートで実行する方法を紹介します(図1)。


図1 「AWS Systems Manager」の「Run Command」を利用して、「Amazon EC2」インスタンスへのコマンドをリモートで実行

 Run Commandを利用するとEC2インスタンスに接続する必要がなくなるので、OSのパスワードが不要になったり、RDP(Remote Desktop Protocol)やSSH(Secure Shell)のインバウンドポートを開放しなくてもよくなったりするなどのメリットがあります。さらに、複数あるEC2インスタンスに1台ずつ接続しなくても一括でコマンドを実行することができ、「Windows Server」の管理者パスワードを紛失してしまった場合などにも活用できるので、ぜひこの方法を覚えておきましょう。

「AWS Systems Manager」とは

 AWS Systems Managerは、AWSで利用しているサーバの運用状況を把握して、リソース全体の管理や運用タスクを安全かつ大規模に実行できるサービスです。

 Systems Managerには、今回紹介するRun Commandの他にも、サービス停止時間の定義や運用タスクの自動化、設定値やパスワードの集中管理などさまざまな機能があります。

手順

 今回の手順は以下の通りです。

  1. Systems Managerへのアクセスを許可する「AWS Identity and Access Management」(IAM)ロールの作成
  2. EC2インスタンスの作成
  3. SSMエージェントの更新
  4. Run Commandでコマンドを実行

※今回はパブリックサブネットのEC2へアクセスするので不要ですが、プライベートサブネットのEC2へコマンドを実行するには別途「Amazon VPC」(Virtual Private Cloud)エンドポイントの設定が必要になります。

1. Systems Managerへのアクセスを許可するIAMロールの作成

 IAMコンソールを開き、画面左のナビゲーションペインから「ロール」→「ロールの作成」を選択します。ロールの作成画面では、ユースケースとして「EC2」を選択して「次のステップ:アクセス権限」をクリックします(図2)。


図2 「EC2」を選択して「次のステップ:アクセス権限」をクリック

 続いてポリシーの検索バーに「AmazonEC2RoleforSSM」と入力して、マネージドポリシーとして用意されている「AmazonEC2RoleforSSM」を選択して「次のステップ:タグ」をクリックします(図3)。


図3 「AmazonEC2RoleforSSM」と入力し、「AmazonEC2RoleforSSM」を選択して「次のステップ:タグ」をクリック

 「タグ」は必要に応じて任意のタグを設定し、確認画面で「EC2InstanceRoleForSSMRunCommand」などとロール名を入力して「ロールの作成」をクリックします(図4)。


図4 ロール名を入力して「ロールの作成」をクリック

2. EC2インスタンスの作成

 次に、手順1で作成したIAMロールを使用してコマンドを実行する対象となるEC2インスタンスを作成します。

 任意のリージョンを選択してからEC2コンソールを開いて「インスタンスを起動」を選択し、今回はSSMエージェントがデフォルトでプリインストールされている「Amazon Linux 2 AMI」を選択してEC2インスタンスを構築します(図5)。


図5 「Amazon Linux 2 AMI」を「選択」

※Amazon Linuxの他に一部の「Ubuntu」やWindows ServerでもSSMエージェントはプリインストールされています。プリインストールされていない場合でも別途手動でインストールすることで対応可能です。詳しくは下記公式ドキュメントをご参照ください。

 今回はインスタンスタイプで「t2.micro」を選択し、インスタンスの詳細設定画面のIAMロールに手順1で作成したIAMロールを選択してEC2インスタンスを作成します。今回は利用しないので、キーペアは作成不要です(図6)。


図6 IAMロールを選択し、「確認と作成」をクリック

 これで、EC2インスタンスをSystems Managerから管理できるようになりました。

 既に起動中のEC2インスタンスが存在する場合は、インスタンスを選択してインスタンスがパブリックサブネット内にあることを確認した上で、「アクション」→「セキュリティ」→「IAMロールを変更」から手順1で作成したIAMロールをアタッチすることでSystems Managerを利用できます(図7)。


図7 「アクション」→「セキュリティ」→「IAMロールを変更」

3. SSMエージェントの更新

 SSMエージェントを実行するEC2インスタンスができたので、今度はエージェントを最新の状態に保つように設定しておきます。Systems Managerコンソールを開いて左側のナビゲーションで「マネージドインスタンス」を選択します(図8)。


図8 左側のナビゲーションで「マネージドインスタンス」を選択

 マネージドインスタンスの一覧で対象のインスタンスIDを選択して「Account management」→「Auto-update SSM management」の順にクリックします(図9)。


図9 「Account management」→「Auto-update SSM management」の順にクリック

 すると、確認ウィンドウが現れるので「SSMエージェントの自動更新」をクリックすれば設定完了です(図10)。


図10 「SSMエージェントの自動更新」をクリック

4. Run Commandでコマンドを実行

 Systems ManagerのRun Commandを利用してEC2インスタンスにコマンドを実行していきましょう。再び「Systems Manager」コンソールに遷移し、画面左のナビゲーションから「Run Command」をクリックします(図11)。


図11 左側のナビゲーションで「Run Command」をクリック

 初回実行時には次のような画面が表示されるので、続けて「コマンドを実行する」をクリックします(図12)。


図12 「コマンドを実行する」をクリック

 遷移先のコマンドの実行ページでは、検索バーをクリックし「ドキュメント名のプレフィックス」→「Equals」の順に選択した後、「AWS-RunShellScript」と入力します。

 検索結果として「AWS-RunShellScript」が表示されるので、ラジオボタンをクリックします(図13)。

※Windowsインスタンスの場合「AWS-RunPowerShellScript」を検索、選択してください。


図13 「AWS-RunShellScript」を検索、選択

 ラジオボタンをクリックしたら、そのまま画面を下へスクロールして「コマンドのパラメータ」欄に任意のコマンドを入力します。今回は「sudo yum update -y」と記載しています(図14)。


図14 「コマンドのパラメータ」欄に「sudo yum update -y」と記載

 コマンドの入力後はさらに画面を下へスクロールし「ターゲット」の項目で「インスタンスを手動で選択する」をクリックし、コマンドの実行対象となるインスタンスを選択します(図15)。


図15 「インスタンスを手動で選択する」をクリックし、インスタンスを選択

 これらの他にも「Amazon S3」へのコマンド実行結果のログ保存やコマンドステータスのSNS通知などを設定できますが、今回はいずれも設定せずにコマンドを「実行」します。

 Run Commandの実行後は、確認画面でコマンドの実行ステータスを確認できます(図16)。


図16 確認画面でコマンドの実行ステータスを確認

終わりに

 今回はSystems Managerを利用してEC2インスタンスにリモートでコマンドを実行する方法を紹介しました。こちらは厳格な運用が求められる本番サーバを設定する場合などにとても役立つ方法です。

 また、Systems Managerには他にもサーバの運用を簡易化できる機能がたくさん存在するのでぜひ一度利用してみてください。

筆者紹介

天野盛介(あまのせいすけ)

株式会社システムシェアード

マルチクラウドへの閉域接続サービスのサービスマネジメント業務に従事した後、AWS案件での基盤構築支援などを担当。社内では、検証・学習用にAWSを完全定額で利用できるサービス「安心サンドボックス」の立ち上げや東京ITスクールのAWS研修におけるコンテンツ開発、Java・AWS研修の講師などを歴任。


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る