スクロール

EC2 インスタンスでコマンドをリモートで実行する

AWS Systems Manager を使用

このハンズオンのチュートリアルでは、AWS Systems Manager を使用して、Amazon EC2 インスタンスでリモートからコマンドを実行する方法について学びます。Systems Manager は、AWS リソースの運用実体を把握して、安全かつ大規模に AWS リソースのアクションを実行できる管理ツールです。Systems Manager の自動化機能の 1 つである run コマンドを使用すると、要塞ホスト、SSH、リモート PowerShell を使用する必要がなくなるため、管理タスクを簡素化できます。

この例として取り上げるシナリオでは、システム管理者として、EC2 インスタンス上のパッケージを更新する必要があります。この通常シンプルな管理タスクが複雑になるため、セキュリティチームは、SSH を介した本番サーバーへの直接アクセスや要塞ホストの使用を許可しません。幸い、Systems Manager を使用して、アップデートパッケージなどのコマンドを EC2 インスタンスでリモートから実行できます。

この困難なシナリオを解決するには、Identity and Access Management (IAM) ロールを作成し、Systems Manager と通信するインスタンスでエージェントを有効にします。次にベストプラクティスに従い、AWS-UpdateSSMAgent ドキュメントを実行して Systems Manager Agent をアップグレードします。そして最後に Systems Manager を使用して、インスタンスでコマンドを実行します。

AWS Systems Manager は常に無料利用枠でご利用いただける製品です。このチュートリアルで作成する EC2 インスタンスは無料利用枠の対象です。

AWS マネジメントコンソールを開きます。このステップバイステップガイドは開いたままにしておいてください。画面が読み込まれたら、ユーザー名とパスワードを入力して作業を開始します。 

このチュートリアルには AWS アカウントが必要です

AWS Systems Manager は常に無料利用枠でご利用いただける製品です。

AWS 無料利用枠の詳細 »


ステップ 1.Identity and Access Management (IAM) ロールの作成

このステップでは、IAM ロールを作成します。これは、インスタンスでアクションを実行するための権限を Systems Manager に付与するために使用します。


a.  IAM コンソールを https://console.aws.amazon.com/iam/ で開きます。

remotely-run-commands-ec2-instance-systems-manager-1a

(クリックして拡大)


b.  左側のナビゲーションペインから、[Roles を選択してから、[Create role] をクリックします。

remotely-run-commands-ec2-instance-systems-manager-1b

(クリックして拡大)


c.  Select type of trusted entity ページの AWS Service で、[EC2] を選択してから、[Next: Permissions] をクリックします。

remotely-run-commands-ec2-instance-systems-manager-1c

(クリックして拡大)


d.  Attached permissions policy ページの検索バーのタイプ AmazonEC2RoleforSSM で、ポリシーリストから [AmazonEC2RoleforSSM] を選択して、[Next: Review] をクリックします。

remotely-run-commands-ec2-instance-systems-manager-1d

(クリックして拡大)


e.  Review ページの Role name ボックスに、EnablesEC2ToAccessSystemsManagerRole と入力します。Role description ボックスタイプで Enables an EC2 instance to access Systems Manager と入力します。[Create role] を選択します。

remotely-run-commands-ec2-instance-systems-manager-1e

(クリックして拡大)


ステップ 2.EC2 インスタンスの作成

このステップでは、EnablesEC2ToAccessSystemsManagerRole ロールを使用して EC2 インスタンスを作成します。これにより、EC2 インスタンスを Systems Manager で管理できます。


a.  Amazon EC2 コンソールを開きます。EC2 コンソールから、希望する [region] を選択します。Systems Manager はすべての AWS リージョンでサポートされています。[Launch Instance] をクリックします。 

remotely-run-commands-ec2-instance-systems-manager-2a

(クリックして拡大)


b.  [Amazon Linux AMI] を選択します。Amazon Linux ベース AMI は、デフォルトで Systems Manager エージェントが含まれる 2017 年 9 月以降の日付のものを選択してください。Systems Manger Agent を独自の Windows または Linux システムにインストールすることもできます。

remotely-run-commands-ec2-instance-systems-manager-2b

(クリックして拡大)


c.  Step 2: Choose an Instance Type ページで、t2.micro インスタンスタイプを選択して、[Next: Configure Instance Details] をクリックします。

remotely-run-commands-ec2-instance-systems-manager-2c

(クリックして拡大)


d.  Step 3: Configure Instance Details ページの IAM ロールドロップダウンで、上記で作成した EnablesEC2ToAccessSystemsManagerRole ロールを選択します。その他はすべてデフォルトのままにしておきます。[Review and Launch] を選択します。

remotely-run-commands-ec2-instance-systems-manager-2d

(クリックして拡大)


e.  Step 7: Review Instance Launch ページで、[Launch] を選択してインスタンスを起動します。

remotely-run-commands-ec2-instance-systems-manager-2e

(クリックして拡大)


f.  次に、Select an existing keypair or create a new key pair ダイアログが表示されます。Systems Manager を使用してリモートでコマンドを実行するためにキーペアは必要ありません。Choose an existing pair ドロップダウンから [Proceed without a key pair] を選択し、[I acknowledge that…] チェックボックスをオンにします。

次に、[Launch Instance] を選択します。

remotely-run-commands-ec2-instance-systems-manager-2f

(クリックして拡大)


ステップ 3.Systems Manager エージェントの更新

Systems Manager エージェントを実行する EC2 インスタンスができたので、管理タスクを自動化し、インスタンスを管理できます。この手順では、ドキュメントと呼ばれる事前にパッケージ化されたコマンドを実行して、エージェントをアップグレードします。新しいインスタンスを作成するときに、System Manager エージェントを更新することをお勧めします。


a.  上部のメニューで [Services] をクリックします。次に、[Management Tools] で [Systems Manager] を選択して、Systems Manager コンソールを開きます。

remotely-run-commands-ec2-instance-systems-manager-3a

(クリックして拡大)


b.  左側のナビゲーションバーの Shared Resources セクションで、[Managed Instances] を選択します。

remotely-run-commands-ec2-instance-systems-manager-3b

(クリックして拡大)


c.  Managed instances ページの Actions ドロップダウンで、[Run Command] を選択します。

remotely-run-commands-ec2-instance-systems-manager-3c

(クリックして拡大)


d.  Run a command ページで、検索バーをクリックして [Document name prefix] を選択し、[Equal] をクリックしてから AWS- UpdateSSMAgent とタイプします。

AWS-UpdateSSMAgent の左側にあるラジオボタンをクリックします。このドキュメントでは、インスタンス上の Systems Management エージェントをアップグレードします。

Targets パネルまでスクロールダウンし、マネージド型 EC2 インスタンスの横にあるチェックボックスをオンにします。

最後に、下にスクロールして [Run] を選択します。

remotely-run-commands-ec2-instance-systems-manager-3d

(クリックして拡大)


e.  次に、実行中のコマンドを記したページが表示され、全体的な成功が緑色で表示されます。おめでとうございます。これで、Systems Manager を使用して最初のリモートコマンドを実行しました。

remotely-run-commands-ec2-instance-systems-manager-3e

(クリックして拡大)


ステップ 4.リモートシェルスクリプトの実行

EC2 インスタンスに最新の Systems Manager Agent があるため、EC2 インスタンスのパッケージをアップグレードできます。この手順では、Run Command を介してシェルスクリプトを実行します。


a.  Systems Management コンソールから、左ナビゲーションの Shared Resources で、[Managed instances] を選択します。次に、Actions メニューで、[Run Command] メニュー項目を選択します。 

remotely-run-commands-ec2-instance-systems-manager-4a

(クリックして拡大)


b.  Run a command ページで、検索バーをクリックして [Document name prefix] を選択し、[Equal] をクリックしてから AWS- RunShellScript とタイプします。

AWS-RunShellScript の左側にあるラジオボタンをクリックします。このドキュメントでは、インスタンス上の Systems Management エージェントをアップグレードします。

Targets パネルまでスクロールダウンし、マネージド型 EC2 インスタンスの横にあるチェックボックスをオンにします。

remotely-run-commands-ec2-instance-systems-manager-4b

(クリックして拡大)


c.  Command Parameters パネルまでスクロールし、Commands テキストボックスに次のコマンドを挿入します。

sudo yum update -y

最後に、下にスクロールして [Run] を選択します。

remotely-run-commands-ec2-instance-systems-manager-4c

(クリックして拡大)


d.  スクリプトがマネージド型 EC2 インスタンスでリモートから実行されている間、Overall statusIn Progress になります。すぐに Overall status が Success に変わります。Success と表示されたら、Targets and outputs パネルまでスクロールダウンし、インスタンスの [Instance ID] をクリックします。Instance ID は、描かれているものとは異なります。

remotely-run-commands-ec2-instance-systems-manager-4d

(クリックして拡大)


e.  Output on:i-XX ページで、Step 1 - Output パネルのヘッダーをクリックして、インスタンスからの更新コマンドの出力を表示します。

remotely-run-commands-ec2-instance-systems-manager-4e

(クリックして拡大)


ステップ 5.リソースの終了

このステップでは、Systems Manager および EC2 関連のリソースを終了します。重要:活用されていないリソースを終了することで費用を削減でき、お勧めです。リソースを終了しないと、料金が発生することがあります。


a.  Amazon EC2 コンソール を開き、左ナビゲーションの Instances の見出しの下で、[Instances] を選択します。

remotely-run-commands-ec2-instance-systems-manager-5a

(クリックして拡大)


b.  インスタンスのチェックボックスをオンにして、[Action]、次に [Instance State、そして [Terminate] をクリックします。これにより、インスタンスが完全に終了します。

remotely-run-commands-ec2-instance-systems-manager-5b

(クリックして拡大)


おめでとうございます。

おめでとうございます。マネージドインスタンスを正常に作成し、AWS Systems Manager を使用してコマンドをリモートで実行できました。最初に、IAM を介して正しいアクセス許可を設定しました。次に、Systems Manager エージェントとともにプレインストールされた Amazon Linux インスタンスを起動しました。最後に、Run Command を使用してエージェントを更新し、リモートで yum 更新を実行しました。

Systems Manager は、リソースグループの運用データの表示、運用アクションの自動化、リソースの現在の状態の理解と制御、ハイブリッド環境の管理、セキュリティとコンプライアンスの維持が必要な場合に適しています。