为 Inventory 配置资源数据同步 - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

为 Inventory 配置资源数据同步

本主题介绍如何为 Amazon Systems Manager Inventory 设置和配置资源数据同步。有关 Systems Manager Explorer 的资源数据同步的信息,请参阅 设置 Systems Manager Explorer 以显示来自多个账户和区域的数据

关于资源数据同步

您可以使用 Systems Manager 资源数据同步,将从所有托管式节点收集到的清单数据发送到单个 Amazon Simple Storage Service(Amazon S3)存储桶。在收集新的清单数据时,资源数据同步自动更新集中式数据。在所有清单数据存储在目标 Amazon S3 存储桶中后,您可以使用 Amazon Athena 和 Amazon QuickSight 等服务查询和分析聚合数据。

例如,假设您将清单配置为收集有关操作系统 (OS) 和 150 个托管式节点机群上运行的应用程序的数据。其中某些节点位于混合数据中心内,而某些则在跨越多个 Amazon Web Services 区域 的 Amazon Elastic Compute Cloud (Amazon EC2) 中运行。如果您没有配置资源数据同步,则需要手动收集为每个托管式节点收集的清单数据,或者必须创建脚本以收集该信息。然后您需要将数据传输到应用程序中,以便运行查询和分析数据。

通过使用资源数据同步,您可以执行一次性操作以同步所有托管式节点中的所有清单数据。在成功创建同步后,Systems Manager 会创建所有清单数据的基准,并将其保存在目标 Amazon S3 存储桶中。在收集新的清单数据时,Systems Manager 将自动更新 Amazon S3 存储桶中的数据。然后您就可以快速且经济高效地将数据移植到 Amazon Athena 和 Amazon QuickSight。

图 1 显示了资源数据同步如何将来自 Amazon EC2 和混合环境中的托管式节点的清单数据聚合到 Amazon S3 目标存储桶。该图还显示了如何为多个 Amazon Web Services 账户和 Amazon Web Services 区域执行资源数据同步。

图 1:为多个 Amazon Web Services 账户和 Amazon Web Services 区域执行资源数据同步


                        Systems Manager 资源数据同步架构

如果删除一个托管式节点,则资源数据同步会保留已删除节点的清单文件。但是,对于正在运行的节点,在创建新文件并将它们写入 Amazon S3 存储桶时,资源数据同步会自动覆盖旧清单文件。如果要随着时间推移跟踪清单变化,您可以使用 Amazon Config 服务跟踪 SSM:ManagedInstanceInventory 资源类型。有关更多信息,请参见 Amazon Config 入门

可以按照本节中的过程,使用 Amazon S3 和 Amazon Systems Manager 控制台为 Inventory 创建资源数据同步。您也可以使用 Amazon CloudFormation 创建或删除资源数据同步。要使用 Amazon CloudFormation,请将 AWS::SSM::ResourceDataSync 资源添加到您的 Amazon CloudFormation 模板。有关信息,请参阅以下文档资源:

注意

可以使用 Amazon Key Management Service (Amazon KMS) 加密 Amazon S3 存储桶中的清单数据。有关如何使用 Amazon Command Line Interface (Amazon CLI) 创建加密同步以及如何使用 Amazon Athena 和 Amazon QuickSight 中的集中式数据的示例,请参阅 演练:使用资源数据同步聚合清单数据

开始前的准备工作

在创建资源数据同步之前,请使用以下过程创建中央 Amazon S3 存储桶,以存储聚合清单数据。该过程介绍如何分配存储桶策略,以便 Systems Manager 能将来自多个账户的清单数据写入存储桶。如果您已有一个要用于聚合清单数据以进行资源数据同步的 Amazon S3 存储桶,则必须在以下过程中将该存储桶配置为使用该策略。

注意

如果指定的 Amazon S3 存储桶被配置为使用对象锁定,则 Systems Manager Inventory 无法将数据添加到该存储桶。请验证并确保您为资源数据同步创建或选择的 Amazon S3 存储桶未被配置为使用 Amazon S3 对象锁定。有关更多信息,请参阅 Amazon Simple Storage Service 用户指南中的 Amazon S3 对象锁定的工作原理

为资源数据同步创建和配置 Amazon S3 存储桶

  1. 通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 创建用来存储聚合清单数据的存储桶。有关更多信息,请参阅 Amazon Simple Storage Service 用户指南中的创建存储桶。请记下存储桶名称和创建此存储桶的 Amazon Web Services 区域。

  3. 选择 Permissions 选项卡,然后选择 Bucket Policy

  4. 将下面的存储桶策略复制并粘贴到策略编辑器中。将 DOC-EXAMPLE-BUCKETaccount-id 分别替换为您创建的 Amazon S3 存储桶的名称和有效的 Amazon Web Services 账户 ID。

    要让多个 Amazon Web Services 账户将清单数据发送到中央 Amazon S3 存储桶,请在策略中指定每个账户,如下面的 Resource 示例中所示:

    "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*/accountid=123456789012/*", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*/accountid=444455556666/*", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*/accountid=777788889999/*" ],
    注意

    有关查看 Amazon Web Services 账户 ID 的信息,请参阅 《IAM 用户指南》中的您的 Amazon Web Services 账户 ID 及其别名

    { "Version": "2012-10-17", "Statement": [ { "Sid": "SSMBucketPermissionsCheck", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::S3_bucket_name" }, { "Sid": " SSMBucketDelivery", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::S3_bucket_name/*/accountid=ID_number/*", "arn:aws:s3:::S3_bucket_name/*/accountid=ID_number/*", "arn:aws:s3:::S3_bucket_name/*/accountid=ID_number/*", "arn:aws:s3:::S3_bucket_name/*/accountid=ID_number/*" ], "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:ssm:*:123456789012:resource-data-sync/*" } } } ] }
    注意

    如果您为 2019 年 4 月 25 日或之后上线的 Amazon Web Services 区域 创建资源数据同步,则必须在 SSMBucketDelivery 部分中输入特定于区域的服务委托人条目。此要求包括以下区域:

    • 亚太地区(香港)区域 (ap-east-1)

    • 亚太地区(雅加达)区域 (ap-southeast-3)

    • 非洲(开普敦)区域 (af-south-1)

    • 欧洲(米兰)区域 (eu-south-1)

    • 欧盟(萨拉戈萨)区域 (eu-south-2)

    以下示例包括 ssm.ap-east-1.amazonaws.com 的特定于区域的服务委托人条目。

    { "Sid":" SSMBucketDelivery", "Effect":"Allow", "Principal":{ "Service":["ssm.amazonaws.com","ssm.ap-east-1.amazonaws.com"] },

为 Inventory 创建资源数据同步

按照以下过程,使用 Systems Manager 控制台为 Systems Manager Inventory 创建资源数据同步。有关如何使用 Amazon CLI 创建资源数据同步的信息,请参阅演练:使用 CLI 配置 Inventory 的托管式节点

创建资源数据同步

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

  2. 在导航窗格中,选择 Fleet Manager

    -或者-

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

  3. Account management (账户管理) 菜单中,选择 Resource data sync (资源数据同步)

  4. 选择 Create resource data sync (创建资源数据同步)

  5. Sync name (同步名称) 字段中,输入同步配置的名称。

  6. Bucket name (存储桶名称) 字段中,输入您使用为资源数据同步创建和配置 Amazon S3 存储桶过程创建的 Amazon S3 存储桶的名称。

  7. (可选)在 Bucket prefix (存储桶前缀) 字段中,输入 Amazon S3 存储桶前缀(子目录)的名称。

  8. Bucket region (存储桶区域) 字段中,如果您创建的 Amazon S3 存储桶位于当前的 Amazon Web Services 区域中,请选择 This region (此区域)。如果存储桶位于其他 Amazon Web Services 区域中,则请选择 Another region (其他区域),然后输入该区域的名称。

    注意

    如果同步和目标 Amazon S3 存储桶位于不同区域中,您可能需要支付数据传输费用。有关更多信息,请参阅 Amazon S3 定价

  9. (可选)在 KMS Key ARN (KMS 密钥 ARN) 字段中,键入或粘贴 KMS 密钥 ARN,以加密 Amazon S3 中的清单数据。

  10. 选择创建

要同步来自多个 Amazon Web Services 区域的清单数据,您必须在每个 区域中创建一个资源数据同步。在要收集清单数据并将其发送到中央 Amazon S3 存储桶的每个 Amazon Web Services 区域中重复此过程。当您在每个区域中创建同步时,请在 Bucket name (存储桶名称) 字段中指定中央 Amazon S3 存储桶。然后,使用 Bucket region (存储桶区域) 选项选择要在其中创建中央 Amazon S3 存储桶的区域,如下面的屏幕截图中所示。下次关联运行以收集清单数据时,Systems Manager 会将数据存储在中央 Amazon S3 存储桶中。


                        来自多个 Amazon Web Services 区域的 Systems Manager 资源数据同步

为 Amazon Organizations 中定义的多个账户创建清单资源数据同步

您可以将来自 Amazon Organizations 中定义的 Amazon Web Services 账户的清单数据同步到中央 Amazon S3 存储桶。完成以下过程后,清单数据将同步到中央存储桶中的各个 Amazon S3 密钥前缀。每个键前缀均代表一个不同的 Amazon Web Services 账户 ID。

开始前的准备工作

在开始之前,请验证并确保您已在 Amazon Organizations 中设置和配置了多个 Amazon Web Services 账户。有关更多信息,请参阅 Amazon Organizations 用户指南中的 https://docs.amazonaws.cn/organizations/latest/userguide/rgs_getting-started.html

另外,请注意,您必须为 Amazon Organizations 中定义的每个 Amazon Web Services 区域和 Amazon Web Services 账户创建基于组织的资源数据同步。

创建中央 Amazon S3 存储桶

可以使用以下过程创建中央 Amazon S3 存储桶,以存储聚合清单数据。该过程介绍如何分配存储桶策略,以便 Systems Manager 能将来自您的 Amazon Organizations 账户 ID 的清单数据写入存储桶。如果您已有一个要用于聚合清单数据以进行资源数据同步的 Amazon S3 存储桶,则必须在以下过程中将该存储桶配置为使用该策略。

为 Amazon Organizations 中定义的多个账户的资源数据同步创建和配置 Amazon S3 存储桶

  1. 通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 创建用来存储聚合清单数据的存储桶。有关更多信息,请参阅 Amazon Simple Storage Service 用户指南中的创建存储桶。请记下存储桶名称和创建此存储桶的 Amazon Web Services 区域。

  3. 选择 Permissions 选项卡,然后选择 Bucket Policy

  4. 将下面的存储桶策略复制并粘贴到策略编辑器中。将 DOC-EXAMPLE-BUCKETorganization-id 分别替换为您创建的 Amazon S3 存储桶的名称和有效的 Amazon Organizations 账户 ID。

    或者,将 bucket-prefix 替换为 Amazon S3 前缀(子目录)的名称。如果您未创建前缀,则从以下策略的 ARN 中删除 bucket-prefix/

    { "Version": "2012-10-17", "Statement": [ { "Sid": "SSMBucketPermissionsCheck", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::S3_bucket_name" }, { "Sid": " SSMBucketDelivery", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/bucket-prefix/*/accountid=*/*" ], "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "s3:RequestObjectTag/OrgId": "organization-id", "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:ssm:*:123456789012:resource-data-sync/*" } } }, { "Sid": " SSMBucketDeliveryTagging", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "s3:PutObjectTagging", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/bucket-prefix/*/accountid=*/*" ] } ] }
    注意

    如果您为 2019 年 4 月 25 日或之后上线的 Amazon Web Services 区域 创建资源数据同步,则必须在 SSMBucketDeliverySSMBucketDeliveryTagging 部分中输入特定于区域的服务委托人条目。此要求包括以下区域:

    • 亚太地区(香港)区域 (ap-east-1)

    • 亚太地区(雅加达)区域 (ap-southeast-3)

    • 非洲(开普敦)区域 (af-south-1)

    • 欧洲(米兰)区域 (eu-south-1)

    • 欧盟(萨拉戈萨)区域 (eu-south-2)

    以下示例包括 ssm.ap-east-1.amazonaws.com 的特定于区域的服务委托人条目。

    { "Sid": " SSMBucketDelivery", "Effect": "Allow", "Principal": { "Service": [ "ssm.amazonaws.com", "ssm.ap-east-1.amazonaws.com" ] }, ... "Sid": " SSMBucketDeliveryTagging", "Effect": "Allow", "Principal": { "Service": [ "ssm.amazonaws.com", "ssm.ap-east-1.amazonaws.com" ] },

为 Amazon Organizations 中定义的账户创建清单资源数据同步

以下过程介绍如何使用 Amazon CLI 为 Amazon Organizations 中定义的账户创建资源数据同步。您必须使用 Amazon CLI 执行此任务。您还必须为 Amazon Organizations 中定义的每个 Amazon Web Services 区域和 Amazon Web Services 账户执行此过程。

为 Amazon Organizations 中定义的账户创建资源数据同步 (Amazon CLI)

  1. 安装并配置 Amazon Command Line Interface (Amazon CLI)(如果尚未执行该操作)。

    想要了解有关信息,请参阅安装或升级Amazon命令行工具.

  2. 运行以下命令,验证并确保您没有任何其他资源数据同步。您只能有一个基于组织的资源数据同步。

    aws ssm list-resource-data-sync

    如果该命令返回了另一个资源数据同步,则您必须将其删除,或选择不创建新资源数据同步。

  3. 运行以下命令,为 Amazon Organizations 中定义的账户创建资源数据同步。对于 DOC-EXAMPLE-BUCKET,请指定您在本主题的前面创建的 Amazon S3 存储桶的名称。如果您为存储桶创建了前缀(子目录),则为 prefix-name 指定此信息。

    aws ssm create-resource-data-sync --sync-name name --s3-destination "BucketName=DOC-EXAMPLE-BUCKET,Prefix=prefix-name,SyncFormat=JsonSerDe,Region=Amazon Web Services 区域, for example us-east-2,DestinationDataSharing={DestinationDataSharingType=Organization}"
  4. 为您希望在其中将数据同步到中央 Amazon S3 存储桶的每个 Amazon Web Services 区域和 Amazon Web Services 账户重复步骤 2 和步骤 3。