配置清单收集 - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

配置清单收集

本节介绍了如何使用 Systems Manager 控制台在一个或多个托管式节点上配置 Amazon Systems Manager Inventory 收集。有关如何使用 Amazon Command Line Interface (Amazon CLI) 配置清单收集的示例,请参阅 Systems Manager Inventory 演练

在配置清单收集时,应该首先创建 Amazon Systems Manager State Manager 关联。Systems Manager 将在关联运行时收集清单数据。如果您不首先创建关联,并尝试使用 Amazon Systems Manager Run Command(举例来说)调用 aws:softwareInventory 插件,则系统将返回以下错误:The aws:softwareInventory plugin can only be invoked via ssm-associate.

注意

如果您为一个托管式节点创建多个清单关联,请注意以下行为:

  • 可为每个节点分配一个以所有节点为目标的清单关联 (--targets "Key=InstanceIds,Values=*")。

  • 还可以为每个节点分配一个特定关联,该关联使用标签键/值对或 Amazon 资源组。

  • 如果为某个节点分配了多个清单关联,则对于尚未运行的关联,状态将显示为 Skipped(已跳过)。最近运行的关联将显示清单关联的实际状态。

  • 如果为某个节点分配了多个清单关联,并且每个关联都使用标签键/值对,则这些清单关联将因标签冲突而无法在该节点上运行。关联仍会在没有标签键/值冲突的节点上运行。

开始前的准备工作

配置清单收集前,请完成以下任务。

  • 更新要清点的节点上的 Amazon Systems Manager SSM Agent。通过运行最新版本的 SSM Agent,可确保您能够收集所有支持的清单类型的元数据。有关如何使用 State Manager 更新 SSM Agent 的信息,请参阅 演练:自动更新 SSM Agent (CLI)

  • 确认您的节点满足 Systems Manager 的先决条件。有关更多信息,请参阅Systems Manager 的先决条件

  • 对于 Microsoft Windows 节点,确认已使用 Windows PowerShell 3.0(或更高版本)配置了您的节点。SSM Agent 使用 PowerShell 中的 ConvertTo-Json cmdlet 将 Windows 更新清单数据转换为所需格式。

  • (可选)创建资源数据同步,以将清单数据集中存储在 Amazon S3 存储桶中。然后,在收集新的清单数据时,资源数据同步将自动更新集中式数据。有关更多信息,请参阅为 Inventory 配置资源数据同步

  • (可选) 创建用于收集自定义清单的 JSON 文件。有关更多信息,请参阅使用自定义清单

清点 Amazon Web Services 账户 中的所有托管式节点

您可以通过创建全局清单关联,清点 Amazon Web Services 账户 中的所有托管式节点。全局清单关联执行以下操作:

  • 自动将全局清单配置(关联)应用到 Amazon Web Services 账户 中的所有现有托管式节点。应用和运行全局清单关联时,将跳过已具有清单关联的托管式节点。跳过某个节点时,详细状态消息将说明 Overridden By Explicit Inventory Association。全局关联跳过了这些节点,但在它们运行所分配的清单关联时,仍会报告清单。

  • 将在您的 Amazon Web Services 账户 中创建的新节点自动添加到全局清单关联。

注意
  • 如果为全局清单关联配置了一个托管式节点,并且您将特定关联分配给该节点,则 Systems Manager Inventory 会降低全局关联的优先级,并应用该特定关联。

  • 全局清单关联在 SSM Agent版本 2.0.790.0 或更高版本中可用。有关如何在节点上更新 SSM Agent 的信息,请参阅 使用 Run Command 更新 SSM Agent

一键式配置清单收集(控制台)

可以使用以下过程为您的 Amazon Web Services 账户 和单个 Amazon Web Services 区域 中的所有托管式节点配置 Systems Manager Inventory。

配置 Systems Manager Inventory 的当前区域中的所有托管式节点

  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 Amazon Systems Manager 控制台。

  2. 在导航窗格中,选择 Inventory (清单)

    –或者–

    如果首先打开 Amazon Systems Manager 主页,选择菜单图标 ( ) 打开导航窗格,然后选择导航窗格中的 Inventory (清单)

  3. Managed instances with inventory enabled (启用了清单的托管实例) 卡上,选择 Click here to enable inventory on all instances (单击此处在所有实例上启用清单)

    
                                在当前 Amazon Web Services 账户 和 Amazon Web Services 区域 中的所有托管式节点上打开 Systems Manager Inventory。

    如果成功,控制台会显示以下消息。

    
                                在当前 Amazon Web Services 账户 和 Amazon Web Services 区域 中的所有托管式节点上打开 Systems Manager Inventory。

    根据您账户中的托管式节点的数量,可能需要几分钟才能应用全局库存关联。等待几分钟,然后刷新页面。验证图形更改是否反映在所有托管式节点上均配置了清单。

使用控制台配置收集

本节包含有关如何使用 Systems Manager 控制台将 Systems Manager Inventory 配置为收集托管式节点中的元数据的信息。您可以快速收集特定 Amazon Web Services 账户 内所有节点(以及未来可能在该账户中创建的任何节点)中的元数据,也可以选择通过使用标签或节点 ID 收集清单数据。

配置清单收集

  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 Amazon Systems Manager 控制台。

  2. 在导航窗格中,选择 Inventory (清单)

    –或者–

    如果首先打开 Amazon Systems Manager 主页,选择菜单图标 ( ) 打开导航窗格,然后选择导航窗格中的 Inventory (清单)

  3. 选择设置清单

  4. Targets(目标)部分中,通过选择以下选项之一来标识您要运行此操作的节点。

    • Selecting all managed instances in this account(选择此账户中的所有托管式实例)– 使用此选项可选择没有现有清单关联的所有托管式节点。如果您选择此选项,则在清单收集期间将跳过已有清单关联的节点,并会在清单结果中显示 Skipped(已跳过)状态。有关更多信息,请参阅清点 Amazon Web Services 账户 中的所有托管式节点

    • Specifying a tag(指定标签)– 使用此选项可以指定单个标签,用于标识要从中收集清单的账户中的节点。如果使用标签,则将来使用相同标签创建的所有节点也将报告清单。如果现有清单关联到所有节点,则使用标签选择特定节点作为其他清单的目标,会覆盖 All managed instances(所有托管式实例)目标组中的成员资格。未来从 All managed instances(所有托管式实例)进行清单收集时,将跳过具有指定标签的托管式节点。

    • Manually selecting instances(手动选择实例)– 使用此选项可以选择账户中的特定托管式节点。使用此选项明确选择特定节点,将覆盖 All managed instances(所有托管式实例)目标上的清单关联。未来从 All managed instances(所有托管式实例)进行清单收集时,将跳过该节点。

      注意

      如果未列出您希望看到的托管式节点,请参阅 排除托管式节点可用性的问题 以获取故障排除技巧。

  5. Schedule(计划)部分中,选择您希望系统从节点收集清单元数据的频率。

  6. Parameters (参数) 部分中,使用列表打开或关闭不同类型的清单收集。如果要针对文件Windows 注册表创建清单搜索,请参阅以下示例。

    文件

    • 在 Linux 和 macOS 上,将收集 /home/ec2-user 目录(不包括所有子目录)中的 .sh 文件的元数据。

      [{"Path":"/home/ec2-user","Pattern":["*.sh", "*.sh"],"Recursive":false}]
    • 在 Windows 上,会以递归方式收集程序文件夹 (包括子目录) 中的所有“.exe”文件的元数据。

      [{"Path":"C:\Program Files","Pattern":["*.exe"],"Recursive":true}]
    • 在 Windows 上,会收集指定日志模式的元数据。

      [{"Path":"C:\ProgramData\Amazon","Pattern":["*amazon*.log"],"Recursive":true}]
    • 在执行递归集合时会限制目录计数。

      [{"Path":"C:\Users","Pattern":["*.ps1"],"Recursive":true, "DirScanLimit": 1000}]

    Windows 注册表

    • 以递归方式针对特定路径收集所有键和值。

      [{"Path":"HKEY_LOCAL_MACHINE\SOFTWARE\Amazon","Recursive": true}]
    • 针对特定路径收集所有键和值(已关闭递归搜索)。

      [{"Path":"HKEY_LOCAL_MACHINE\SOFTWARE\Intel\PSIS\PSIS_DECODER", "Recursive": false}]
    • 使用 ValueNames 选项收集特定键。

      {"Path":"HKEY_LOCAL_MACHINE\SOFTWARE\Amazon\MachineImage","ValueNames":["AMIName"]}

    有关收集文件和 Windows 注册表清单的更多信息,请参阅使用文件和 Windows 注册表清单

  7. 如果希望将关联执行状态存储在 Amazon S3 存储桶中,请在 Advanced (高级) 部分中选择 Sync inventory execution logs to an Amazon S3 bucket (将清单执行日志同步到 Amazon S3 存储桶)

  8. 选择设置清单。Systems Manager 会创建一个 State Manager 关联,并立即在节点上运行 Inventory。

  9. 在导航窗格中,选择 State Manager。验证并确保已创建了使用 AWS-GatherSoftwareInventory 文档的新关联。关联计划使用 Rate 表达式。此外,确认 Status 字段显示 Success。如果您选择了 Sync inventory execution logs to an Amazon S3 bucket (将清单执行日志同步到 Amazon S3 存储桶) 选项,则您可在几分钟后在 Amazon S3 中查看日志数据。要查看特定节点的清单数据,请在导航窗格中选择 Managed Instances(托管式实例)。

  10. 选择一个节点,然后选择 View details(查看详细信息)。

  11. 在节点详细信息页面上,选择 Inventory(清单)。使用 Inventory type 列表筛选清单。