彙總庫存資料 - AWS Systems Manager

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

彙總庫存資料

針對 AWS Systems Manager 詳細目錄設定受管節點之後,您可以檢視詳細目錄資料的彙總計數。例如,假設您配置了數十或數百個受管節點來收集 AWS:Application 庫存類型。透過本節涵蓋的資訊,您能夠查看經過設定用於收集此資料的節點確切計數。

您也可以彙整資料類型,以查看特定庫存詳細資訊。例如:AWS:InstanceInformation 庫存類型會收集包含 Platform 資料類型的作業系統平台資訊。只要彙總 Platform 資料類型的相關資料,您就能快速查看執行 Windows、執行 Linux 和執行 macOS 的節點數量。

本節中的程序說明如何使用 AWS Command Line Interface (AWS CLI) 檢視庫存資料的彙總計數。您也可以在 [詳細目錄] 頁面的 AWS Systems Manager 主控台中檢視預先設定的彙總計數。這些預先設定的儀表板通稱為「庫存詳情」。只需按一下,即可修正庫存組態問題。

檢視庫存資料彙整計數時,請注意以下重要詳細資訊:

  • 如果您終止設定為收集庫存資料的受管節點,Systems Manager 會保留庫存資料 30 天,然後將其刪除。對於執行中的節點,系統會刪除超過 30 天的庫存資料。如果您需要存放超過 30 天的庫存資料,可以用 AWS Config 來記錄歷史記錄,或定期查詢資料並將其上傳到 Amazon Simple Storage Service (Amazon S3) 儲存貯體。

  • 如果您先前將節點設定成報告特定庫存資料類型 (如 AWS:Network),之後為了停止收集該類型而變更組態,則彙整計數仍會顯示 AWS:Network 資料,直到節點終止且 30 天過去。

如需如何快速設定及收集特定節點 AWS 帳戶 (以及可能在該帳戶中建立的任何 future 節點) 的詳細目錄資料,請參閱清查您 中的所有受管節點 AWS 帳戶

彙總庫存資料以查看收集特定資料類型的節點計數

您可以使用此 AWS Systems Manager GetInventoryAPI作業來檢視收集一或多個詳細目錄類型和資料類型之節點的彙總計數。例如,AWS:InstanceInformation詳細目錄類型可讓您使用具有AWS:InstanceInformation.PlatformType資料類型的作業,來檢視 GetInventory API作業系統的彙總。下方為 AWS CLI 命令和輸出的範例。

aws ssm get-inventory --aggregators "Expression=AWS:InstanceInformation.PlatformType"

系統會傳回相關資訊,如下所示。

{
   "Entities":[
      {
         "Data":{
            "AWS:InstanceInformation":{
               "Content":[
                  {
                     "Count":"7",
                     "PlatformType":"windows"
                  },
                  {
                     "Count":"5",
                     "PlatformType":"linux"
                  }
               ]
            }
         }
      }
   ]
}
開始使用

決定要檢視其計數的庫存類型和資料類型。如需檢視支援彙整功能的庫存類型和資料類型,請在 AWS CLI中執行以下命令。

aws ssm get-inventory-schema --aggregator

此命令會傳回支援彙總的詳細目錄類型和資料類型JSON清單。此TypeName欄位會顯示支援的庫存類型。Name (名稱) 欄位則會顯示每個資料類型。以以下清單為例,AWS:Application 庫存類型包含 NameVersion 的資料類型。

{
    "Schemas": [
        {
            "TypeName": "AWS:Application",
            "Version": "1.1",
            "DisplayName": "Application",
            "Attributes": [
                {
                    "DataType": "STRING",
                    "Name": "Name"
                },
                {
                    "DataType": "STRING",
                    "Name": "Version"
                }
            ]
        },
        {
            "TypeName": "AWS:InstanceInformation",
            "Version": "1.0",
            "DisplayName": "Platform",
            "Attributes": [
                {
                    "DataType": "STRING",
                    "Name": "PlatformName"
                },
                {
                    "DataType": "STRING",
                    "Name": "PlatformType"
                },
                {
                    "DataType": "STRING",
                    "Name": "PlatformVersion"
                }
            ]
        },
        {
            "TypeName": "AWS:ResourceGroup",
            "Version": "1.0",
            "DisplayName": "ResourceGroup",
            "Attributes": [
                {
                    "DataType": "STRING",
                    "Name": "Name"
                }
            ]
        },
        {
            "TypeName": "AWS:Service",
            "Version": "1.0",
            "DisplayName": "Service",
            "Attributes": [
                {
                    "DataType": "STRING",
                    "Name": "Name"
                },
                {
                    "DataType": "STRING",
                    "Name": "DisplayName"
                },
                {
                    "DataType": "STRING",
                    "Name": "ServiceType"
                },
                {
                    "DataType": "STRING",
                    "Name": "Status"
                },
                {
                    "DataType": "STRING",
                    "Name": "StartType"
                }
            ]
        },
        {
            "TypeName": "AWS:WindowsRole",
            "Version": "1.0",
            "DisplayName": "WindowsRole",
            "Attributes": [
                {
                    "DataType": "STRING",
                    "Name": "Name"
                },
                {
                    "DataType": "STRING",
                    "Name": "DisplayName"
                },
                {
                    "DataType": "STRING",
                    "Name": "FeatureType"
                },
                {
                    "DataType": "STRING",
                    "Name": "Installed"
                }
            ]
        }
    ]
}

使用以下語法建立命令,即可彙整任何列出的庫存類型資料。

aws ssm get-inventory --aggregators "Expression=InventoryType.DataType"

請見下方範例。

範例 1

此範例彙總了節點使用的 Windows 角色計數。

aws ssm get-inventory --aggregators "Expression=AWS:WindowsRole.Name"

範例 2

此範例彙總了節點上安裝的應用程式計數。

aws ssm get-inventory --aggregators "Expression=AWS:Application.Name"
結合多個彙總工具

您還能在一個命令中結合多個庫存類型與資料類型,有助於更全面了解相關資料。請見下方範例。

範例 1

此範例彙總了節點使用的作業系統類型計數。此命令亦可傳回特定的作業系統名稱。

aws ssm get-inventory --aggregators '[{"Expression": "AWS:InstanceInformation.PlatformType", "Aggregators":[{"Expression": "AWS:InstanceInformation.PlatformName"}]}]'

範例 2

此範例彙總了節點上執行的應用程式計數,以及每個應用程式的特定版本。

aws ssm get-inventory --aggregators '[{"Expression": "AWS:Application.Name", "Aggregators":[{"Expression": "AWS:Application.Version"}]}]'

如果您願意,您可以在JSON檔案中建立含有一或多個詳細目錄類型和資料類型的彙總運算式,並從 AWS CLI. 檔案JSON中的必須使用下列語法。

[ { "Expression": "string", "Aggregators": [ { "Expression": "string" } ] } ]

請務必使用 .json 副檔名儲存檔案。

以下是運用多個庫存類型和資料類型的範例。

[ { "Expression": "AWS:Application.Name", "Aggregators": [ { "Expression": "AWS:Application.Version", "Aggregators": [ { "Expression": "AWS:InstanceInformation.PlatformType" } ] } ] } ]

使用下列命令,即可從 AWS CLI呼叫檔案。

aws ssm get-inventory --aggregators file://file_name.json

該命令會傳回相關資訊,如以下所示。

{"Entities": 
 [
   {"Data": 
     {"AWS:Application": 
       {"Content": 
         [
           {"Count": "3", 
            "PlatformType": "linux", 
            "Version": "2.6.5", 
            "Name": "audit-libs"}, 
           {"Count": "2", 
            "PlatformType": "windows", 
            "Version": "2.6.5", 
            "Name": "audit-libs"}, 
           {"Count": "4", 
            "PlatformType": "windows", 
            "Version": "6.2.8", 
            "Name": "microsoft office"}, 
           {"Count": "2", 
            "PlatformType": "windows", 
            "Version": "2.6.5", 
            "Name": "chrome"}, 
           {"Count": "1", 
            "PlatformType": "linux", 
            "Version": "2.6.5", 
            "Name": "chrome"}, 
           {"Count": "2", 
            "PlatformType": "linux", 
            "Version": "6.3", 
            "Name": "authconfig"}
         ]
       }
     }, 
    "ResourceType": "ManagedInstance"}
 ]
}

使用群組彙總庫存資料,以查看哪些節點已設定和未設定成收集某個庫存類型

Systems Manager 庫存中的群組可供您快速查看設定成收集一個或多個庫存類型的受管節點計數,以及未進行設定的執行個體數。透過群組功能,您可以指定一個或多個庫存類型,並使用 exists 運算子做為篩選條件。

例如,假設您分別設定四個受管節點,以收集下列庫存類型:

  • 節點 1:AWS:Application

  • 節點 2:AWS:File

  • 節點 3:AWS:ApplicationAWS:File

  • 節點 4:AWS:Network

您可以從中執行下列命令, AWS CLI 以查看已設定多少節點來收集AWS:ApplicationAWS:File inventory類型。同時,回應還會傳回未設定成收集這兩種庫存類型的節點數。

aws ssm get-inventory --aggregators 'Groups=[{Name=ApplicationAndFile,Filters=[{Key=TypeName,Values=[AWS:Application],Type=Exists},{Key=TypeName,Values=[AWS:File],Type=Exists}]}]'

該命令回應顯示僅有一個受管節點經過設定,會同時收集 AWS:ApplicationAWS:File 庫存類型。

{
   "Entities":[
      {
         "Data":{
            "ApplicationAndFile":{
               "Content":[
                  {
                     "notMatchingCount":"3"
                  },
                  {
                     "matchingCount":"1"
                  }
               ]
            }
         }
      }
   ]
}
注意

群組不會傳回資料類型計數。此外,您無法向下鑽研結果,以查看已設定或未設定為收集庫存類型IDs的節點。

如果您願意,您可以在JSON檔案中建立含有一或多個詳細目錄類型的彙總運算式,然後從 AWS CLI. 檔案JSON中的必須使用下列語法:

{ "Aggregators":[ { "Groups":[ { "Name":"Name", "Filters":[ { "Key":"TypeName", "Values":[ "Inventory_type" ], "Type":"Exists" }, { "Key":"TypeName", "Values":[ "Inventory_type" ], "Type":"Exists" } ] } ] } ] }

請務必使用 .json 副檔名儲存檔案。

使用下列命令,即可從 AWS CLI呼叫檔案。

aws ssm get-inventory --cli-input-json file://file_name.json
其他範例

下列範例會示範彙整庫存資料的方式,使您能查看設定成收集特定庫存類型的受管節點,以及未設定的受管節點。這些範例皆是採用 AWS CLI。每個範例均包含具備篩選功能的完整命令。如此一來,當您想在檔案中輸入資訊時,便能從命令列和範例 input.json 檔案中執行該命令。

範例 1

此範例會彙整設定成收集 AWS:ApplicationAWS:File 庫存類型的節點計數,以及未經過設定的執行個體數。

從 AWS CLI執行下列命令。

aws ssm get-inventory --aggregators 'Groups=[{Name=ApplicationORFile,Filters=[{Key=TypeName,Values=[AWS:Application, AWS:File],Type=Exists}]}]'

若您偏好使用檔案,則可複製下方範例並貼至檔案,接著將其儲存為 input.json。

{ "Aggregators":[ { "Groups":[ { "Name":"ApplicationORFile", "Filters":[ { "Key":"TypeName", "Values":[ "AWS:Application", "AWS:File" ], "Type":"Exists" } ] } ] } ] }

從 AWS CLI執行下列命令。

aws ssm get-inventory --cli-input-json file://input.json

該命令會傳回相關資訊,如以下所示。

{
   "Entities":[
      {
         "Data":{
            "ApplicationORFile":{
               "Content":[
                  {
                     "notMatchingCount":"1"
                  },
                  {
                     "matchingCount":"3"
                  }
               ]
            }
         }
      }
   ]
}

範例 2

此範例會彙總設定成收集 AWS:ApplicationAWS:FileAWS:Network 庫存類型的節點計數,以及未經過設定的節點數。

從 AWS CLI執行下列命令。

aws ssm get-inventory --aggregators 'Groups=[{Name=Application,Filters=[{Key=TypeName,Values=[AWS:Application],Type=Exists}]}, {Name=File,Filters=[{Key=TypeName,Values=[AWS:File],Type=Exists}]}, {Name=Network,Filters=[{Key=TypeName,Values=[AWS:Network],Type=Exists}]}]'

若您偏好使用檔案,則可複製下方範例並貼至檔案,接著將其儲存為 input.json。

{ "Aggregators":[ { "Groups":[ { "Name":"Application", "Filters":[ { "Key":"TypeName", "Values":[ "AWS:Application" ], "Type":"Exists" } ] }, { "Name":"File", "Filters":[ { "Key":"TypeName", "Values":[ "AWS:File" ], "Type":"Exists" } ] }, { "Name":"Network", "Filters":[ { "Key":"TypeName", "Values":[ "AWS:Network" ], "Type":"Exists" } ] } ] } ] }

從 AWS CLI執行下列命令。

aws ssm get-inventory --cli-input-json file://input.json

該命令會傳回相關資訊,如以下所示。

{
   "Entities":[
      {
         "Data":{
            "Application":{
               "Content":[
                  {
                     "notMatchingCount":"2"
                  },
                  {
                     "matchingCount":"2"
                  }
               ]
            },
            "File":{
               "Content":[
                  {
                     "notMatchingCount":"2"
                  },
                  {
                     "matchingCount":"2"
                  }
               ]
            },
            "Network":{
               "Content":[
                  {
                     "notMatchingCount":"3"
                  },
                  {
                     "matchingCount":"1"
                  }
               ]
            }
         }
      }
   ]
}