AWS Systems Manager
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

演练:使用 CLI 配置 Inventory 的托管实例

以下过程为您演示了配置 Inventory 来从托管实例收集元数据的过程。配置清单收集时,首先创建 Systems Manager 状态管理器 关联。Systems Manager 会在关联运行时收集清单数据。如果您不先创建关联,并试图使用 Run Command 等调用 aws:softwareInventory 插件,则系统会返回以下错误:

The aws:softwareInventory plugin can only be invoked via ssm-associate

注意

一个实例一次只能配置一个清单关联。如果您为实例配置了两个或更多清单关联,则关联不会运行,而且系统不会收集清单数据。

快速配置 Inventory 的所有托管实例 (CLI)

您可以在您的 AWS 账户和当前的区域中快速配置所有托管实例来收集清单数据。这称为创建全局清单关联。要使用 AWS CLI 创建全局清单关联,请为 instanceIds 值使用通配符选项,如以下过程所示。

在您的 AWS 账户和当前区域中为所有托管实例配置清单 (CLI)

  1. Install and configure the AWS CLI, if you have not already.

    For information, see Install or Upgrade and then Configure the AWS CLI.

  2. 运行以下命令。

    aws ssm create-association --name AWS-GatherSoftwareInventory --targets Key=InstanceIds,Values=* --schedule-expression "rate(1 day)" --parameters applications=Enabled,awsComponents=Enabled,customInventory=Enabled,instanceDetailedInformation=Enabled,networkConfig=Enabled,services=Enabled,windowsRoles=Enabled,windowsUpdates=Enabled

注意

此命令不启用文件或 Windows 注册表元数据的清单。要为这些数据类型启用清单,请使用下一个过程。

在托管实例上手动配置 Inventory (CLI)

使用以下过程,使用实例 ID 或标签在您的托管实例上手动配置 Inventory。

手动配置 Inventory 的托管实例 (CLI)

  1. Install and configure the AWS CLI, if you have not already.

    For information, see Install or Upgrade and then Configure the AWS CLI.

  2. 运行以下命令,创建一个在实例上运行 Inventory 的 状态管理器 关联。此命令将服务配置为每六小时运行一次,并收集实例上的网络配置、Windows 更新和应用程序元数据。

    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\": \"region-id\", \"OutputS3BucketName\": \"Test bucket\", \"OutputS3KeyPrefix\": \"Test\" } }" --parameters "networkConfig=Enabled,windowsUpdates=Enabled,applications=Enabled"

    region-id 表示实例所在的 AWS 区域,例如,US East (Ohio) Region的 us-west-2。

    系统会使用类似以下形式的信息进行响应。

    {
        "AssociationDescription": {
            "ScheduleExpression": "cron(0 0/30 * 1/1 * ? *)",
            "OutputLocation": {
                "S3Location": {
                    "OutputS3KeyPrefix": "Test",
                    "OutputS3BucketName": "Test bucket",
                    "OutputS3Region": "us-west-2"
                }
            },
            "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"
                }
            ]
        }
    }

    您可以使用 Targets 参数来确定带有 EC2 标签的大型目标实例组。例如:

    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-west-2\", \"OutputS3BucketName\": \"Test bucket\", \"OutputS3KeyPrefix\": \"Test\" } }" --parameters "networkConfig=Enabled,windowsUpdates=Enabled,applications=Enabled"

    您还可以使用带有表达式的 fileswindowsRegistry 清单类型来清点 Windows 实例上的文件和 Windows 注册表项。有关这些清单类型的更多信息,请参阅使用文件和 Windows 注册表清单

    aws ssm create-association --name "AWS-GatherSoftwareInventory" --targets "Key=instanceids,Values=i-0704358e3a3da9eb1" --schedule-expression "cron(0 0/30 * 1/1 * ? *)" --parameters '{"files":["[{\"Path\": \"C:\\Program Files\", \"Pattern\": [\"*.exe\"], \"Recursive\": true}]"], "windowsRegistry": ["[{\"Path\":\"HKEY_LOCAL_MACHINE\\Software\\Amazon\", \"Recursive\":true}]"]}' --profile dev-pdx
  3. 运行以下命令查看关联状态。

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

    系统会使用类似以下形式的信息进行响应。

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