使用資源資料同步來彙總庫存資料 - AWS Systems Manager

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用資源資料同步來彙總庫存資料

下列逐步解說說明如何使用 AWS Command Line Interface (AWS CLI) 建立詳 AWS Systems Manager 細目錄的資源資料同步組態。資源資料同步會自動將所有受管節點的庫存資料移至中央 Amazon Simple Storage Service (Amazon S3) 儲存貯體。每當搜索到新的庫存資料時,同步就會自動更新中央 Amazon S3 儲存貯體內的資料。

本逐步解說也說明如何使用 Amazon Athena 和 Amazon QuickSight 來查詢和分析彙總的資料。如需使用中的「Systems Manager」建立資源資料同步的相關資訊 AWS Management Console,請參閱使用資源資料同步來彙總庫存資料。如需使用中的 Systems Manager 從多個帳戶 AWS 區域 和帳戶查詢庫存的相關資訊 AWS Management Console,請參閱查詢來自多個區域和帳戶的清查資料

注意

此逐步教學涵蓋的資訊能協助您使用 AWS Key Management Service (AWS KMS) 加密同步作業。庫存並不會收集任何使用者專用、私有或敏感資料,因此加密為選用功能。如需詳細資訊 AWS KMS,請參閱AWS Key Management Service 開發人員指南

開始之前

在開始本節中的演練之前,請先檢閱或完成以下任務:

  • 收集受管節點的庫存資料。針對本逐步解說中的 Amazon Athena 和 Amazon QuickSight 各節的目的,我們建議您收集應用程式資料。如需如何收集庫存資料的詳細資訊,請參閱 設定清查收集使用設 AWS CLI 定詳細目錄資料收集

  • (選擇性) 如果庫存資料存放在使用 () 加密的 Amazon 簡單儲存服務 AWS Key Management Service (Amazon S3 AWS KMS) 儲存貯體中,您還必須設定IAM帳戶和 AWS KMS 加密的Amazon-GlueServiceRoleForSSM服務角色。如果您未設定IAM帳戶和這個角色,Cannot load Glue tables當您選擇主控台中的 [詳細檢視] 索引標籤時,Systems Manager 就會顯示出來。如需詳細資訊,請參閱(選擇性) 設定檢視 AWS KMS 加密資料的權限

  • (選擇性) 如果您想要使用來加密資源資料同步 AWS KMS,則必須建立包含下列策略的新金鑰,或者您必須更新現有金鑰並將此原則新增至該金鑰。

    { "Version": "2012-10-17", "Id": "ssm-access-policy", "Statement": [ { "Sid": "ssm-access-policy-statement", "Action": [ "kms:GenerateDataKey" ], "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Resource": "arn:aws:kms:us-east-2:123456789012:key/KMS_key_id", "Condition": { "StringLike": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:ssm:*:123456789012:resource-data-sync/*" } } } ] }
建立庫存的資源資料同步
  1. 在開啟 Amazon S3 主控台https://console.aws.amazon.com/s3/

  2. 建立儲存貯體以存放您彙整的清查資料。如需詳細資訊,請參閱 Amazon Simple Storage Service 主控台使用者指南中的建立儲存貯體。記下值區名稱及 AWS 區域 其建立位置。

  3. 建立儲存貯體後,請選擇 Permissions (許可) 索引標籤,接著選擇 Bucket Policy (儲存貯體政策)

  4. 複製下列儲存貯體政策並貼至政策編輯器。更換 AMZN-S3-演示桶和 account-id 使用您建立的 Amazon S3 儲存貯體的名稱和有效的 AWS 帳戶 ID。新增多個帳戶時,ARN請為每個帳戶新增其他條件字串。新增帳戶時,請移除範例中額外的預留位置。(可選)替換 bucket-prefix 使用 Amazon S3 前綴(子目錄)的名稱。如果您沒有創建前綴,請刪除 bucket-prefix/ 從政策ARN中。

    { "Version": "2012-10-17", "Statement": [ { "Sid": " SSMBucketDelivery", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/bucket-prefix/*/accountid=account-id/*" ], "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": [ "account-id1", "account-id2", "account-id3", "account-id4" ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:ssm:*:account-id1:resource-data-sync/*", "arn:aws:ssm:*:account-id2:resource-data-sync/*", "arn:aws:ssm:*:account-id3:resource-data-sync/*", "arn:aws:ssm:*:account-id4:resource-data-sync/*" ] } } } ] }
  5. (選用) 如果您想要加密同步作業,您必須將以下條件新增至前一步驟中所列的政策。將這些新增至 StringEquals 章節中。

    "s3:x-amz-server-side-encryption":"aws:kms", "s3:x-amz-server-side-encryption-aws-kms-key-id":"arn:aws:kms:region:account_ID:key/KMS_key_ID"

    請見此處範例:

    "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": "account-id", "s3:x-amz-server-side-encryption":"aws:kms", "s3:x-amz-server-side-encryption-aws-kms-key-id":"arn:aws:kms:region:account_ID:key/KMS_key_ID" }
  6. 安裝和配置 AWS Command Line Interface (AWS CLI),如果你還沒有。

    如需相關資訊,請參閱安裝或更新最新版本的 AWS CLI

  7. (選擇性) 如果您想要加密同步,請執行下列命令以確認值區政策是否強制執行 AWS KMS 金鑰需求。替換每個 example resource placeholder 使用您自己的信息。

    Linux & macOS
    aws s3 cp ./A_file_in_the_bucket s3://amzn-s3-demo-bucket/prefix/ \ --sse aws:kms \ --sse-kms-key-id "arn:aws:kms:region:account_ID:key/KMS_key_id" \ --region region, for example, us-east-2
    Windows
    aws s3 cp ./A_file_in_the_bucket s3://amzn-s3-demo-bucket/prefix/ ^ --sse aws:kms ^ --sse-kms-key-id "arn:aws:kms:region:account_ID:key/KMS_key_id" ^ --region region, for example, us-east-2
  8. 請執行下列命令,以您在此程序開頭建立的 Amazon S3 儲存貯體,建立資源資料同步組態。此命令會從您登入的 AWS 區域 位置建立同步。

    注意

    如果同步與目標 Amazon S3 儲存貯體位於不同區域,您可能需要支付資料傳輸費用。如需詳細資訊,請參閱 Amazon S3 定價

    Linux & macOS
    aws ssm create-resource-data-sync \ --sync-name a_name \ --s3-destination "BucketName=amzn-s3-demo-bucket,Prefix=prefix_name, if_specified,SyncFormat=JsonSerDe,Region=bucket_region"
    Windows
    aws ssm create-resource-data-sync ^ --sync-name a_name ^ --s3-destination "BucketName=amzn-s3-demo-bucket,Prefix=prefix_name, if_specified,SyncFormat=JsonSerDe,Region=bucket_region"

    您可以透過 region 參數,指定應建立同步組態的位置。在以下範例中,系統會將來自 us-west-1 區域的庫存資料同步至 us-west-2 區域內的 Amazon S3 儲存貯體。

    Linux & macOS
    aws ssm create-resource-data-sync \ --sync-name InventoryDataWest \ --s3-destination "BucketName=amzn-s3-demo-bucket,Prefix=HybridEnv,SyncFormat=JsonSerDe,Region=us-west-2" --region us-west-1
    Windows
    aws ssm create-resource-data-sync ^ --sync-name InventoryDataWest ^ --s3-destination "BucketName=amzn-s3-demo-bucket,Prefix=HybridEnv,SyncFormat=JsonSerDe,Region=us-west-2" ^ --region us-west-1

    (選擇性) 如果您要使用加密同步 AWS KMS,請執行下列命令以建立同步。如果您加密同步,則 AWS KMS 金鑰和 Amazon S3 儲存貯體必須位於同一個區域。

    Linux & macOS
    aws ssm create-resource-data-sync \ --sync-name sync_name \ --s3-destination "BucketName=amzn-s3-demo-bucket,Prefix=prefix_name, if_specified,SyncFormat=JsonSerDe,AWSKMSKeyARN=arn:aws:kms:region:account_ID:key/KMS_key_ID,Region=bucket_region" \ --region region
    Windows
    aws ssm create-resource-data-sync ^ --sync-name sync_name ^ --s3-destination "BucketName=amzn-s3-demo-bucket,Prefix=prefix_name, if_specified,SyncFormat=JsonSerDe,AWSKMSKeyARN=arn:aws:kms:region:account_ID:key/KMS_key_ID,Region=bucket_region" ^ --region region
  9. 執行下列命令,藉此檢視同步組態狀態。

    aws ssm list-resource-data-sync

    若您在不同區域中建立同步組態,請務必指定 region 參數,如下方範例所示。

    aws ssm list-resource-data-sync --region us-west-1
  10. 成功建立同步組態後,請檢查 Amazon S3 中的目標儲存貯體。庫存資料應該會在幾分鐘內顯示。

使用 Amazon Athena 的資料

下節會介紹在 Amazon Athena 中檢視及查詢資料的方法。開始操作前,建議您了解 Athena。如需詳細資訊,請參閱《Amazon Athena 使用者指南》中的什麼是 Amazon Athena?使用資料

檢視和查詢 Amazon Athena 中的資料
  1. https://console.aws.amazon.com/athena/ 中開啟 Athena 主控台。

  2. 複製下列陳述式並貼至查詢編輯器,然後選擇 Run Query (執行查詢)

    CREATE DATABASE ssminventory

    系統會建立名為 ssminventory 的資料庫。

  3. 複製下列陳述式並貼至查詢編輯器,然後選擇 Run Query (執行查詢)。更換 AMZN-S3-演示桶和 bucket_prefix 使用 Amazon S3 目標的名稱和前綴。

    CREATE EXTERNAL TABLE IF NOT EXISTS ssminventory.AWS_Application ( Name string, ResourceId string, ApplicationType string, Publisher string, Version string, InstalledTime string, Architecture string, URL string, Summary string, PackageId string ) PARTITIONED BY (AccountId string, Region string, ResourceType string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1' ) LOCATION 's3://amzn-s3-demo-bucket/bucket_prefix/AWS:Application/'
  4. 複製下列陳述式並貼至查詢編輯器,然後選擇 Run Query (執行查詢)

    MSCK REPAIR TABLE ssminventory.AWS_Application

    系統將分割資料表。

    注意

    如果您從其他 AWS 區域 或建立資源資料同步 AWS 帳戶,則必須再次執行此命令來更新分割區。另外,您可能也需要更新 Amazon S3 儲存貯體政策。

  5. 選擇 AWS_Application 資料表旁的檢視圖示,即可預覽資料。

    Amazon Athena 的預覽資料圖示。
  6. 複製下列陳述式並貼至查詢編輯器,然後選擇 Run Query (執行查詢)

    SELECT a.name, a.version, count( a.version) frequency from aws_application a where a.name = 'aws-cfn-bootstrap' group by a.name, a.version order by frequency desc

    查詢會傳回不同版本的計數aws-cfn-bootstrap,這是目前在 Amazon 彈性運算雲端 (AmazonEC2) 執行個體 (適 AWS 用於 Linux macOS、和) 執行個體上的應用程式Windows Server。

  7. 單獨複製以下語句並粘貼到查詢編輯器中,替換 amzn-s3-演示桶和 bucket-prefix 提供 Amazon S3 的相關資訊,然後選擇執行查詢。這些陳述式能夠設定 Athena 中的其他庫存資料表。

    CREATE EXTERNAL TABLE IF NOT EXISTS ssminventory.AWS_AWSComponent ( `ResourceId` string, `Name` string, `ApplicationType` string, `Publisher` string, `Version` string, `InstalledTime` string, `Architecture` string, `URL` string ) PARTITIONED BY (AccountId string, Region string, ResourceType string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1' ) LOCATION 's3://amzn-s3-demo-bucket/bucket-prefix/AWS:AWSComponent/'
    MSCK REPAIR TABLE ssminventory.AWS_AWSComponent
    CREATE EXTERNAL TABLE IF NOT EXISTS ssminventory.AWS_WindowsUpdate ( `ResourceId` string, `HotFixId` string, `Description` string, `InstalledTime` string, `InstalledBy` string ) PARTITIONED BY (AccountId string, Region string, ResourceType string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1' ) LOCATION 's3://amzn-s3-demo-bucket/bucket-prefix/AWS:WindowsUpdate/'
    MSCK REPAIR TABLE ssminventory.AWS_WindowsUpdate
    CREATE EXTERNAL TABLE IF NOT EXISTS ssminventory.AWS_InstanceInformation ( `AgentType` string, `AgentVersion` string, `ComputerName` string, `IamRole` string, `InstanceId` string, `IpAddress` string, `PlatformName` string, `PlatformType` string, `PlatformVersion` string ) PARTITIONED BY (AccountId string, Region string, ResourceType string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1' ) LOCATION 's3://amzn-s3-demo-bucket/bucket-prefix/AWS:InstanceInformation/'
    MSCK REPAIR TABLE ssminventory.AWS_InstanceInformation
    CREATE EXTERNAL TABLE IF NOT EXISTS ssminventory.AWS_Network ( `ResourceId` string, `Name` string, `SubnetMask` string, `Gateway` string, `DHCPServer` string, `DNSServer` string, `MacAddress` string, `IPV4` string, `IPV6` string ) PARTITIONED BY (AccountId string, Region string, ResourceType string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1' ) LOCATION 's3://amzn-s3-demo-bucket/bucket-prefix/AWS:Network/'
    MSCK REPAIR TABLE ssminventory.AWS_Network
    CREATE EXTERNAL TABLE IF NOT EXISTS ssminventory.AWS_PatchSummary ( `ResourceId` string, `PatchGroup` string, `BaselineId` string, `SnapshotId` string, `OwnerInformation` string, `InstalledCount` int, `InstalledOtherCount` int, `NotApplicableCount` int, `MissingCount` int, `FailedCount` int, `OperationType` string, `OperationStartTime` string, `OperationEndTime` string ) PARTITIONED BY (AccountId string, Region string, ResourceType string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1' ) LOCATION 's3://amzn-s3-demo-bucket/bucket-prefix/AWS:PatchSummary/'
    MSCK REPAIR TABLE ssminventory.AWS_PatchSummary

使用 Amazon 中的數據 QuickSight

以下部分提供了在 Amazon 中構建可視化的鏈接的概述 QuickSight。

要建立在 Amazon 的可視化 QuickSight
  1. 註冊 Amazon, QuickSight然後登錄到 QuickSight 控制台。

  2. 建立來自您所建立之 AWS_Application 資料表和任何其他資料表的資料集。如需詳細資訊,請參閱使用 Amazon Athena 資料建立資料集

  3. 聯結資料表。舉例而言,您可以聯結 AWS_InstanceInformation 中的 instanceid 欄位,因為該欄位與其他庫存資料表中的 resourceid 欄位相符。如需聯結資料表的詳細資訊,請參閱聯結資料表

  4. 建置視覺效果。如需詳細資訊,請參閱使用 Amazon QuickSight 視覺效果