AWS Systems Manager
ユーザーガイド

チュートリアル: Run Command で AWS CLI を使用する

以下のサンプルチュートリアルは、AWS CLI を使用してコマンドとコマンドパラメータに関する情報を表示する方法、コマンドを実行する方法、これらのコマンドのステータスを確認する方法を示しています。

重要

信頼されている管理者のみが、このトピックで示される Systems Manager で事前設定されたドキュメントの使用を許可されます。Systems Manager ドキュメントで指定されるコマンドまたはスクリプトは、管理権限でインスタンスで実行されます。ユーザーに、事前定義済みの Systems Manager ドキュメント (AWS から始まるドキュメント) を実行する権限がある場合、そのユーザーには、インスタンスへの管理者アクセス権もあります。他のすべてのユーザーについては、制限付きドキュメントを作成し、そのドキュメントを特定のユーザーと共有する必要があります。Run Command へのアクセス制限の詳細については、「Systems Manager の管理者以外の IAM ユーザーおよびグループ」を参照してください。

ステップ 1: 使用開始

ユーザーは、設定するインスタンスの管理者権限を持っているか、IAM で適切なアクセス権を付与されている必要があります。また、この例では US East (Ohio) Region (us-east-2) を使用しています。Run Command は現在、Amazon Web Services General ReferenceAWS Systems Manager に記載されている AWS リージョンで利用できます。詳細については、「Systems Manager の前提条件」を参照してください。

AWS CLI を使用してコマンドを実行します。

  1. まだ AWS CLI をインストールして設定していない場合は、インストールして設定します。

    詳細については、「AWS CLI をインストールまたはアップグレードするには:」を参照してください。

  2. 利用可能なすべてのドキュメントを表示します。

    このコマンドでは、IAM アクセス許可に基づいて、アカウントで利用可能なすべてのドキュメントが表示されます。コマンドは Linux と Windows のドキュメントのリストを返します。

    aws ssm list-documents
  3. インスタンスでコマンドを受信する準備ができていることを確認します。

    インスタンスがオンラインの場合は、次のコマンドの出力が表示されます。

    aws ssm describe-instance-information --output text --query "InstanceInformationList[*]"
  4. 特定のインスタンスについての詳細を表示するには、次のコマンドを使用します。

    注記

    このチュートリアルのコマンドを実行するには、インスタンス ID およびコマンド ID を置き換える必要があります。コマンド ID は send-command の応答として返されます。インスタンス ID は、Amazon EC2 コンソールで取得できます。

    aws ssm describe-instance-information --instance-information-filter-list key=InstanceIds,valueSet=instance ID

ステップ 2: シェルスクリプトの実行

Run Command と AWS-RunShellScript ドキュメントを使用すると、ローカルにログオンしているかのように EC2 インスタンスでコマンドまたはスクリプトを実行できます。

説明と使用可能なパラメータを表示するには

  • Systems Manager JSON ドキュメントの説明を表示するには、次のコマンドを使用します。

    aws ssm describe-document --name "AWS-RunShellScript" --query "[Document.Name,Document.Description]"
  • これらのパラメータに使用できるパラメータと詳細を表示するには、次のコマンドを使用します。

    aws ssm describe-document --name "AWS-RunShellScript" --query "Document.Parameters[*]"

ステップ 3: AWS-RunShellScript ドキュメントを使用してコマンドを送信する - 例 1

インスタンスの IP 情報を取得するには、次のコマンドを使用します。

aws ssm send-command --instance-ids "instance ID" --document-name "AWS-RunShellScript" --comment "IP config" --parameters commands=ifconfig --output text

応答データを使用したコマンド情報の取得

次のコマンドは、コマンド ID を使用します。これは、前述のコマンド実行の詳細および応答データを取得するコマンドで返されるものです。コマンドが完了すると、システムは応答データを返します。コマンド実行が "Pending" または "InProgress" と表示される場合、もう一度このコマンドを実行して応答データを確認する必要があります。

aws ssm list-command-invocations --command-id $sh_command_id --details

ステップ 4: AWS-RunShellScript ドキュメントを使用してコマンドを送信する - 例 2

次のコマンドは、コマンドを実行するデフォルトのユーザーアカウントを表示します。

sh_command_id=$(aws ssm send-command --instance-ids "instance ID" --document-name "AWS-RunShellScript" --comment "Demo run shell script on Linux Instance" --parameters commands=whoami --output text --query "Command.CommandId")

コマンドステータスの取得

次のコマンドでは、コマンド ID を使用して、インスタンスでのコマンド実行に関するステータスを取得しています。この例では、前のコマンドで返されたコマンド ID を使用しています。

aws ssm list-commands --command-id "command_ID"

コマンドの詳細の取得

次のコマンドでは、前のコマンドのコマンド ID を使用して、インスタンスごとのコマンド実行に関するステータスを取得しています。

aws ssm list-command-invocations --command-id "command_ID" --details

特定インスタンスのコマンド情報と応答データを取得する

次のコマンドは、特定インスタンスについて、元の aws ssm send-command の出力を返します。

aws ssm list-command-invocations --instance-id instance ID --command-id "command_ID" --details

その他の例

次のコマンドは、インスタンスで実行している Python のバージョンを返します。

sh_command_id=$(aws ssm send-command --instance-ids "instance ID" --document-name "AWS-RunShellScript" --comment "Demo run shell script on Linux Instances" --parameters commands='python -V' --output text --query "Command.CommandId") sh -c 'aws ssm list-command-invocations --command-id "$sh_command_id" --details --query "CommandInvocations[].CommandPlugins[].{Status:Status,Output:Output}"'

次のコマンドは、Run Command を使用して Python スクリプトを実行します。

sh_command_id=$(aws ssm send-command --instance-ids "instance ID" --document-name "AWS-RunShellScript" --comment "Demo run shell script on Linux Instances" --parameters '{"commands":["#!/usr/bin/python","print \"Hello world from python\""]}' --output text --query "Command.CommandId") sh -c 'aws ssm list-command-invocations --command-id "$sh_command_id" --details --query "CommandInvocations[].CommandPlugins[].{Status:Status,Output:Output}"'