逐步解說:使用資源資料同步彙整庫存資料 - AWS Systems Manager

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

逐步解說:使用資源資料同步彙整庫存資料

下列逐步解說說明如何使用 AWS Command Line Interface () 為 AWS Systems Manager 庫存建立資源資料同步組態AWS CLI。資源資料同步會自動將所有受管節點的庫存資料移至中央 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 定詳細目錄資料收集

  • (選用) 如果庫存資料存放在使用 AWS Key Management Service () 加密的 Amazon Simple Storage Service (Amazon S3 AWS KMS) 儲存貯體中,您也必須設定 IAM 帳戶和服務Amazon-GlueServiceRoleForSSM角色以進行 AWS KMS 加密。如果您未設定 IAM 帳戶和此角色,當您在主控台中選擇詳細檢視索引標籤Cannot load Glue tables時,系統管理員會顯示 。如需詳細資訊,請參閱(選用) 設定檢視 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. 在 Word 開啟 Amazon S3 主控台。 https://console.aws.amazon.com/s3/

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

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

  4. 複製下列儲存貯體政策並貼至政策編輯器。更換 amzn-s3-demo-bucket 和 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-demo-bucket 和 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,這是 Linux Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上存在 AWS 的應用程式,macOS 和 Windows Server.

  7. 個別將下列陳述式複製並貼到查詢編輯器中,取代 amzn-s3-demo-bucket 和 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 Visuals