チュートリアル: Run Command で AWS CLI を使用する
以下のサンプルチュートリアルは、AWS Command Line Interface (AWS CLI) を使用してコマンドとコマンドパラメータに関する情報を表示する方法、コマンドを実行する方法、これらのコマンドのステータスを確認する方法を示しています。
重要
信頼されている管理者のみが、このトピックで示される AWS Systems Manager で事前設定されたドキュメントの使用を許可されます。Systems Manager ドキュメントで指定されるコマンドまたはスクリプトは、マネージドノードの管理 許可で実行されます。ユーザーに、事前定義済みの Systems Manager ドキュメント (AWS-
から始まるドキュメント) を実行許可がある場合、そのユーザーには、ノードへの管理者アクセス権もあります。他のすべてのユーザーについては、制限付きドキュメントを作成し、そのドキュメントを特定のユーザーと共有する必要があります。
トピック
ステップ 1: 開始方法
ユーザーは、設定するマネージドノードの管理者アクセス許可を持っているか、AWS Identity and Access Management (IAM) で適切なアクセス許可を付与されている必要があります。また、この例では、米国東部 (オハイオ) リージョン (us-east-2) を使用している点に留意してください。Run Command は、「Amazon Web Services 全般のリファレンス」の「Systems Manager サービスエンドポイント」に記載されている AWS リージョン で利用できます。詳細については、「AWS Systems Manager のマネージドノードのセットアップ」を参照してください。
AWS CLI を使用してコマンドを実行します。
まだ AWS Command Line Interface (AWS CLI) をインストールして設定していない場合は、インストールして設定します。
詳細については、「AWS CLI の最新バージョンをインストールまたは更新します。」を参照してください。
-
利用可能なすべてのドキュメントを表示します。
このコマンドでは、IAM アクセス許可に基づいて、アカウントで利用可能なすべてのドキュメントが表示されます。
aws ssm list-documents
-
マネージドノードでコマンドを受信する準備ができていることを確認します。
マネージドノードがオンラインの場合は、次のコマンドの出力が表示されます。
-
特定のマネージドノードについての詳細を表示するには、次のコマンドを実行します。
注記
このチュートリアルのコマンドを実行するには、インスタンス ID およびコマンド ID を置き換えます。マネージド AWS IoT Greengrass コアデバイスの場合、インスタンス ID には mi-
ID_Number
を使用します。コマンド ID は send-command に対する応答として返されます。インスタンス ID は AWS Systems Manager の一機能である Fleet Manager から利用可能です。
ステップ 2: シェルスクリプトを実行してリソースの詳細を表示する
Run Command と AWS-RunShellScript
ドキュメントを使用すると、マネージドノード上で、あたかもローカルにログオンしているかのように、任意のコマンドやスクリプトを実行することができます。
説明と使用可能なパラメータを表示する
Systems Manager JSON ドキュメントの説明を表示するには、次のコマンドを実行します。
これらのパラメータに使用できるパラメータと詳細を表示するには、次のコマンドを実行します。
ステップ 3: AWS-RunShellScript
ドキュメントを使用して簡単なコマンドを送信する
Linux マネージドノードの IP 情報を取得するには、次のコマンドを実行します。
Windows Server のマネージドノードを対象としている場合、document-name
を AWS-RunPowerShellScript
に、command
を ifconfig
から ipconfig
に変更します。
応答データを使用したコマンド情報の取得
次のコマンドは、コマンド ID を使用します。これは、前述のコマンド実行の詳細および応答データを取得するコマンドで返されるものです。コマンドが完了すると、システムは応答データを返します。コマンド実行によって "Pending"
または "InProgress"
と表示される場合は、もう一度このコマンドを実行して応答データを確認します。
ユーザーを識別
次のコマンドは、コマンドを実行するデフォルトのユーザーを表示します。
コマンドステータスの取得
次のコマンドでは、コマンド ID を使用して、マネージドノードでのコマンド実行に関するステータスを取得しています。この例では、前のコマンドで返されたコマンド ID を使用しています。
コマンドの詳細の取得
次のコマンドでは、前のコマンドのコマンド ID を使用して、マネージドノードごとのコマンド実行に関するステータスを取得しています。
特定のマネージドノードのコマンド情報と応答データを取得
次のコマンドでは、特定のマネージドノードについて、元の aws ssm
send-command
リクエストに対する出力が返されます。
Python バージョンの表示
次のコマンドは、ノード上で実行している Python のバージョンを返します。
ステップ4: Run Command を使用して簡単な Python スクリプトを実行する
次のコマンドでは、Run Command を使用して、Python の簡単な "Hello World" スクリプトが実行されます。
ステップ5: Run Command を使用して Bash スクリプトを実行する
このセクションの例は、Run Command を使用して次の bash スクリプトを実行する方法を示しています。
Run Command を使用して遠隔地に格納されたスクリプトを実行する例については、Amazon S3 からのスクリプトの実行 および GitHub からのスクリプトの実行 を参照してください。
#!/bin/bash yum -y update yum install -y ruby cd /home/ec2-user curl -O https://aws-codedeploy-us-east-2.s3.amazonaws.com/latest/install chmod +x ./install ./install auto
このスクリプトにより、AWS CodeDeploy ユーザーガイド の「CodeDeploy 用の Amazon EC2 インスタンスを作成する」で説明されているように、Amazon Linux および Red Hat Enterprise Linux (RHEL) インスタンスに AWS CodeDeploy エージェントがインストールされます。
このスクリプトは、米国東部 (オハイオ) リージョン (us-east-2)、aws-codedeploy-us-east-2
の AWS 管理の Amazon S3 バケットから CodeDeploy エージェントをインストールします。
AWS CLI コマンドで bash スクリプトを実行する
次のサンプルは、--parameters
オプションを使用して CLI コマンドに bash スクリプトを含める方法を示しています。
JSON ファイルで bash スクリプトを実行する
次の例では、bash スクリプトの内容が JSON ファイルに格納され、--cli-input-json
オプションを使用してファイルがコマンドに含まれます。
次の例に、参照する installCodeDeployAgent.json
ファイルの内容を示します。
{ "Parameters": { "commands": [ "#!/bin/bash", "yum -y update", "yum install -y ruby", "cd /home/ec2-user", "curl -O https://aws-codedeploy-us-east-2.s3.amazonaws.com/latest/install", "chmod +x ./install", "./install auto" ] } }