演練: 使用資源資料同步來彙總清查資料 - AWS Systems Manager

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

演練: 使用資源資料同步來彙總清查資料

以下逐步教學會說明如何使用 AWS CLI 來建立資源資料同步組態。資源資料同步會自動將所有受管執行個體的清查資料移至中央 S3 儲存貯體。每當搜索到新的清查資料時,同步就會自動更新中央 S3 儲存貯體內的資料。同時,此逐步教學也會介紹如何使用 Amazon Athena 和 Amazon QuickSight 來查詢彙總資料,並予以分析。如需使用 Amazon EC2 主控台建立資源資料同步的相關資訊,請參閱設定庫存的資源資料同步

注意

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

開始之前

請先收集來自受管執行個體的清查中繼資料,再開始進行此演練。為了完成此逐步教學中的 Amazon Athena 和 Amazon QuickSight 小節,建議您收集應用程式中繼資料。如需如何收集清查中繼資料的詳細資訊,請參閱 演練: 使用 CLI 設定受管執行個體以進行清查

(選用) 若您想使用 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:region:AWS-account-ID:key/KMS-key-id" } ] }

建立庫存的資源資料同步

  1. https://console.aws.amazon.com/s3/ 開啟 Amazon S3 主控台。

  2. 建立儲存貯體以存放您的彙整清查資料。如需詳細資訊,請參閱 Amazon Simple Storage Service 入門指南中的建立儲存貯體。請記下儲存貯體名稱以及您建立的所在 AWS 區域。

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

  4. 複製下列儲存貯體政策並貼至政策編輯器。取代 DOC-EXAMPLE-BUCKETaccount-id 使用您建立的 S3 儲存貯體名稱和有效的 AWS 帳號 ID。或者,取代 bucket-prefix 取代為 Amazon S3 字首的名稱 (子系)。如果您未建立字首,請移除 bucket-prefix/ 來自政策中的 ARN。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "SSMBucketPermissionsCheck", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET" }, { "Sid": " SSMBucketDelivery", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "s3:PutObject", "Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET/bucket-prefix/*/accountid=account-id/*"], "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }
  5. (選用) 您必須將以下政策新增至儲存貯體,才能加密同步作業。請重複先前步驟,即可新增以下政策至儲存貯體。

    { "Version":"2012-10-17", "Statement":[ { "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-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 CLI,請進行相應的作業。

    如需資訊,請參閱 安裝或升級 AWS 命令列工具

  7. (選用) 若您要加密同步作業,請執行下列命令,藉此驗證儲存貯體政策是否強制執行 KMS 金鑰需求。

    Linux
    aws s3 cp ./A_file_in_the_bucket s3://DOC-EXAMPLE-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://DOC-EXAMPLE-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. 請執行下列命令,以您在此程序開頭建立的 S3 儲存貯體,建立資源資料同步組態。此命令會從您目前登入的 AWS 區域建立同步。

    注意

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

    Linux
    aws ssm create-resource-data-sync \ --sync-name a_name \ --s3-destination "BucketName=DOC-EXAMPLE-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=DOC-EXAMPLE-BUCKET,Prefix=prefix_name, if_specified,SyncFormat=JsonSerDe,Region=bucket_region"

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

    Linux
    aws ssm create-resource-data-sync \ --sync-name InventoryDataWest \ --s3-destination "BucketName=DOC-EXAMPLE-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=DOC-EXAMPLE-BUCKET,Prefix=HybridEnv,SyncFormat=JsonSerDe,Region=us-west-2" ^ --region us-west-1

    (選用) 您能夠執行下列命令以建立同步,即可使用 AWS KMS 加密同步作業。如果您選擇加密同步作業,則 AWS KMS 金鑰與 S3 儲存貯體必須位於相同區域。

    Linux
    aws ssm create-resource-data-sync \ --sync-name sync_name \ --s3-destination "BucketName=DOC-EXAMPLE-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=DOC-EXAMPLE-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 (執行查詢)。取代 DOC-EXAMPLE-BUCKETbucket_prefix 取代為 Amazon S3 目標的名稱和字首。

    CREATE EXTERNAL TABLE IF NOT EXISTS ssminventory.AWS_Application ( Name 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://DOC-EXAMPLE-BUCKET/bucket_prefix/AWS:Application/'
  4. 複製下列陳述式並貼至查詢編輯器,然後選擇 Run Query (執行查詢)

    MSCK REPAIR TABLE ssminventory.AWS_Application

    系統將分割資料表。

    注意

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

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

    
                            alt-text
  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 的計數,這是在 Linux 和 Windows Server 的 EC2 執行個體上出現的 AWS 應用程式。

  7. 單獨複製以下陳述式並貼到查詢編輯器中,取代 DOC-EXAMPLE-BUCKETbucket-prefix 連同 Amazon S3 的資訊,然後選擇 Run Query (執行查詢)。這些陳述式能夠設定 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://DOC-EXAMPLE-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://DOC-EXAMPLE-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://DOC-EXAMPLE-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://DOC-EXAMPLE-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://DOC-EXAMPLE-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 視覺效果