本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
逐步解說:使用資源資料同步彙整庫存資料
下列逐步解說說明如何使用 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/*" } } } ] }
建立庫存的資源資料同步
在 Word 開啟 Amazon S3 主控台。 https://console.aws.amazon.com/s3/
-
建立儲存貯體以存放您彙整的清查資料。如需詳細資訊,請參閱 Amazon Simple Storage Service 主控台使用者指南中的建立儲存貯體。記下儲存貯體名稱和您建立儲存貯 AWS 區域 體的位置。
-
建立儲存貯體後,請選擇 Permissions (許可) 索引標籤,接著選擇 Bucket Policy (儲存貯體政策)。
-
複製下列儲存貯體政策並貼至政策編輯器。更換 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/*" ] } } } ] } -
(選用) 如果您想要加密同步作業,您必須將以下條件新增至前一步驟中所列的政策。將這些新增至
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
" } 如果您尚未安裝並設定 AWS Command Line Interface (AWS CLI),請執行 ()。
如需相關資訊,請參閱安裝或更新最新版本的 AWS CLI。
-
(選用) 如果您想要加密同步,請執行下列命令,以確認儲存貯體政策是否強制執行 AWS KMS 金鑰需求。取代每個
example resource placeholder
使用您自己的資訊。 -
請執行下列命令,以您在此程序開頭建立的 Amazon S3 儲存貯體,建立資源資料同步組態。此命令會從 AWS 區域 您登入的 建立同步。
注意
如果同步與目標 Amazon S3 儲存貯體位於不同區域,您可能需要支付資料傳輸費用。如需詳細資訊,請參閱 Amazon S3 定價
。 您可以透過
region
參數,指定應建立同步組態的位置。在以下範例中,系統會將來自 us-west-1 區域的庫存資料同步至 us-west-2 區域內的 Amazon S3 儲存貯體。(選用) 如果您想要使用 加密同步 AWS KMS,請執行下列命令來建立同步。如果您加密同步,則 AWS KMS 金鑰和 Amazon S3 儲存貯體必須位於相同的 區域。
-
執行下列命令,藉此檢視同步組態狀態。
aws ssm list-resource-data-sync
若您在不同區域中建立同步組態,請務必指定
region
參數,如下方範例所示。aws ssm list-resource-data-sync --region us-west-1
-
成功建立同步組態後,請檢查 Amazon S3 中的目標儲存貯體。庫存資料應該會在幾分鐘內顯示。
使用 Amazon Athena 的資料
下節會介紹在 Amazon Athena 中檢視及查詢資料的方法。開始操作前,建議您了解 Athena。如需詳細資訊,請參閱《Amazon Athena 使用者指南》中的什麼是 Amazon Athena?和使用資料。
檢視和查詢 Amazon Athena 中的資料
在 https://console.aws.amazon.com/athena/
中開啟 Athena 主控台。 -
複製下列陳述式並貼至查詢編輯器,然後選擇 Run Query (執行查詢)。
CREATE DATABASE ssminventory
系統會建立名為 ssminventory 的資料庫。
-
複製下列陳述式並貼至查詢編輯器,然後選擇 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/' -
複製下列陳述式並貼至查詢編輯器,然後選擇 Run Query (執行查詢)。
MSCK REPAIR TABLE ssminventory.AWS_Application
系統將分割資料表。
注意
如果您從其他 AWS 區域 或 建立資源資料同步 AWS 帳戶,則必須再次執行此命令以更新分割區。另外,您可能也需要更新 Amazon S3 儲存貯體政策。
-
選擇
AWS_Application
資料表旁的檢視圖示,即可預覽資料。 -
複製下列陳述式並貼至查詢編輯器,然後選擇 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. -
個別將下列陳述式複製並貼到查詢編輯器中,取代 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 中建置視覺化
-
註冊 Amazon QuickSight
,然後登入 QuickSight 主控台。 -
建立來自您所建立之
AWS_Application
資料表和任何其他資料表的資料集。如需詳細資訊,請參閱使用 Amazon Athena 資料建立資料集。 -
聯結資料表。舉例而言,您可以聯結
AWS_InstanceInformation
中的instanceid
欄位,因為該欄位與其他庫存資料表中的resourceid
欄位相符。如需聯結資料表的詳細資訊,請參閱聯結資料表。 -
建置視覺效果。如需詳細資訊,請參閱使用 Amazon QuickSight Visuals。