メニュー
Amazon Elastic Compute Cloud
Linux インスタンス用ユーザーガイド

AWS CLI を使用した Amazon EC2 Run Command のチュートリアル

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

重要

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

ステップ 1: 使用開始

ユーザーは、設定するインスタンスの管理者権限を持っているか、IAM で適切なアクセス権を付与されている必要があります。また、この例では us-east-1 リージョンを使用することに注意してください。現在、Run Command は、次の Systems Manager リージョンでのみ利用できます。詳細については、「Systems Manager の前提条件」を参照してください。

AWS CLI を使用してコマンドを実行するには

  1. 次のコマンドを実行して認証情報とリージョンを指定します。

    Copy
    aws configure
  2. 以下を指定するよう求められます。

    Copy
    AWS Access Key ID [None]: key_name AWS Secret Access Key [None]: key_name Default region name [None]: us-east-1 Default output format [None]: ENTER
  3. 利用可能なすべてのドキュメントを表示する

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

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

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

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

    注記

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

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

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

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

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

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

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

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

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

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

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

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

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

Copy
aws ssm list-command-invocations --command-id "command ID" --details

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

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

Copy
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 を使用しています。

Copy
aws ssm list-commands --command-id $sh_command_id

コマンドの詳細の取得

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

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

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

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

Copy
aws ssm list-command-invocations --instance-id instance ID --command-id $sh_command_id –-details

ステップ 5: その他の例

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

Copy
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' --version --output text --query "Command.CommandId")

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

Copy
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"