メニュー
Amazon EC2 Systems Manager
ユーザーガイド

インベントリマネージャー Systems Manager のチュートリアル

以下のチュートリアルでは、テスト環境でインベントリを収集および管理します。

AWS CLI を使用してインベントリを収集する

以下の手順では、Amazon EC2 インスタンスから Inventory を使用してメタデータを収集するプロセスについて説明します。

注記

インベントリ収集の設定を開始するには、Systems Manager ステートマネージャーの関連付けを作成します。関連付けが実行されると、Systems Manager はインベントリデータを収集します。最初に関連付けを作成せずに、aws:softwareInventory プラグインを呼び出そうとすると (例: Run Command を使用)、システムは次のエラーを返します。

aws:softwareInventory プラグインは、ssm-associate を使用して呼び出してください。

また、インスタンスには、一度に 1 つのインベントリのみ関連付けることができます。誤って、2 つ以上のインベントリを関連付けた場合、その関連付けは実行されず、インベントリデータは収集されません。

インスタンスからインベントリを収集するには

  1. 以下のコマンドを実行して、インスタンスで Inventory を実行する ステートマネージャー の関連付けを作成します。このコマンドは、サービスを 6 時間ごとに実行し、前に作成したテストインスタンスでネットワーク設定、Windows 更新プログラム、アプリケーションメタデータを収集するように設定します。

    Copy
    aws ssm create-association --name "AWS-GatherSoftwareInventory" --targets "Key=instanceids,Values=an instance ID" --schedule-expression "cron(0 0/30 * 1/1 * ? *)" --output-location "{ \"S3Location\": { \"OutputS3Region\": \"us-east-1\", \"OutputS3BucketName\": \"Test bucket\", \"OutputS3KeyPrefix\": \"Test\" } }" --parameters "networkConfig=Enabled,windowsUpdates=Enabled,applications=Enabled"

    システムから以下のような情報が返されます。

    Copy
    { "AssociationDescription": { "ScheduleExpression": "cron(0 0/30 * 1/1 * ? *)", "OutputLocation": { "S3Location": { "OutputS3KeyPrefix": "Test", "OutputS3BucketName": "Test bucket", "OutputS3Region": "us-east-1" } }, "Name": "The name you specified", "Parameters": { "applications": [ "Enabled" ], "networkConfig": [ "Enabled" ], "windowsUpdates": [ "Enabled" ] }, "Overview": { "Status": "Pending", "DetailedStatus": "Creating" }, "AssociationId": "1a2b3c4d5e6f7g-1a2b3c-1a2b3c-1a2b3c-1a2b3c4d5e6f7g", "DocumentVersion": "$DEFAULT", "LastUpdateAssociationDate": 1480544990.06, "Date": 1480544990.06, "Targets": [ { "Values": [ "i-1a2b3c4d5e6f7g" ], "Key": "InstanceIds" } ] } }

    EC2 タグで Targets パラメータを使用することで、インスタンスの大規模なグループを対象にすることができます。

    Copy
    aws ssm create-association --name "AWS-GatherSoftwareInventory" --targets "Key=tag:Environment,Values=Production" --schedule-expression "cron(0 0/30 * 1/1 * ? *)" --output-location "{ \"S3Location\": { \"OutputS3Region\": \"us-east-1\", \"OutputS3BucketName\": \"Test bucket\", \"OutputS3KeyPrefix\": \"Test\" } }" --parameters "networkConfig=Enabled,windowsUpdates=Enabled,applications=Enabled"
  2. 以下のコマンドを実行して、関連付けステータスを表示します。

    Copy
    aws ssm describe-instance-associations-status --instance-id an instance ID

    システムから以下のような情報が返されます。

    Copy
    { "InstanceAssociationStatusInfos": [ { "Status": "Pending", "DetailedStatus": "Associated", "Name": "reInvent2016PolicyDocumentTest", "InstanceId": "i-1a2b3c4d5e6f7g", "AssociationId": "1a2b3c4d5e6f7g-1a2b3c-1a2b3c-1a2b3c-1a2b3c4d5e6f7g", "DocumentVersion": "1" } ] }

以下の手順では、PutInventory API を使用して、前に作成したテストインスタンスにメタデータを割り当てるプロセスについて説明します。この例では、ラックの場所情報をマネージドインスタンスに割り当てます。

Inventory のインスタンスにカスタムメタデータを割り当てるには

  1. 以下のコマンドを実行して、前に作成したテストインスタンスにラックの場所情報を割り当てます。

    Copy
    aws ssm put-inventory --instance-id "ID" --items '[{"CaptureTime": "2016-08-22T10:01:01Z", "TypeName": "Custom:RackInfo", "Content":[{"RackLocation": "Bay B/Row C/Rack D/Shelf E"}], "SchemaVersion": "1.0"}]'
  2. 以下のコマンドを実行して、このインスタンスのカスタムインベントリエントリを表示します。

    Copy
    aws ssm list-inventory-entries --instance-id ID --type-name "Custom:RackInfo"

    システムから以下のような情報が返されます。

    Copy
    { "InstanceId": "ID", "TypeName": "Custom:RackInfo", "Entries": [ { "RackLocation": "Bay B/Row C/Rack D/Shelf E" } ], "SchemaVersion": "1.0", "CaptureTime": "2016-08-22T10:01:01Z" }
  3. 以下のコマンドを実行して、カスタムメタデータを表示します。

    Copy
    aws ssm get-inventory

    システムから以下のような情報が返されます。

    Copy
    { "Entities": [ { "Data": { "AWS:InstanceInformation": { "Content": [ { "ComputerName": "WIN-9JHCEPEGORG.WORKGROUP", "InstanceId": "ID", "ResourceType": "EC2Instance", "AgentVersion": "3.19.1153", "PlatformVersion": "6.3.9600", "PlatformName": "Windows Server 2012 R2 Standard", "PlatformType": "Windows" } ], "TypeName": "AWS:InstanceInformation", "SchemaVersion": "1.0" } }, "Id": "ID" } ] }

このページの内容: