使用自訂清查 - AWS Systems Manager

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

使用自訂清查

只要建立自訂庫存,您就能將任意中繼資料指派給執行個體。舉例來說,假設您負責管理資料中心內的大量伺服器,而這些伺服器皆已設定為 Systems Manager 受管執行個體。目前,您都是將伺服器機架位置的相關資訊存放在試算表中。透過自訂庫存,即可在執行個體上將每個執行個體的機架位置指定為中繼資料。當您使用 Systems Manager 收集庫存時,系統將一併收集中繼資料和其他庫存中繼資料。然後,您可以使用 Amazon S3Resource Data Sync (資源資料同步) 將所有清查中繼資料移植到中央 儲存貯體,並查詢資料。

注意

Systems Manager 支援每個 AWS 帳戶有最多 20 個自訂庫存類型。

若要將自訂庫存指派給執行個體,您可以使用 Systems Manager PutInventory API 動作,如演練:指派自訂清查中繼資料給執行個體中所述。或者,您也能選擇建立自訂庫存 JSON 檔案,並將其上傳至執行個體。本節將說明如何建立 JSON 檔案。

以下範例 JSON 檔案與自訂庫存會指定與現場部署伺服器相關的機架資訊。此範例會指定一種的自訂庫存資料 ("TypeName": "Custom:RackInformation"),並在 Content 下提供多個描述資料的項目。

{ "SchemaVersion": "1.0", "TypeName": "Custom:RackInformation", "Content": { "Location": "US-EAST-02.CMH.RACK1", "InstalledTime": "2016-01-01T01:01:01Z", "vendor": "DELL", "Zone" : "BJS12", "TimeZone": "UTC-8" } }

您也可以在 Content 區段中指定不同項目,如下範例所示。

{ "SchemaVersion": "1.0", "TypeName": "Custom:PuppetModuleInfo", "Content": [{ "Name": "puppetlabs/aws", "Version": "1.0" }, { "Name": "puppetlabs/dsc", "Version": "2.0" } ] }

自訂庫存的 JSON 結構描述需要 SchemaVersion、TypeName 和 Content 區段,但您可以在這些區段中定義資訊。

{ "SchemaVersion": "user_defined", "TypeName": "Custom:user_defined", "Content": { "user_defined_attribute1": "user_defined_value1", "user_defined_attribute2": "user_defined_value2", "user_defined_attribute3": "user_defined_value3", "user_defined_attribute4": "user_defined_value4" } }

TypeName 不得超過 100 個字元。此外,TypeName 區段的開頭必須為 Custom。例如:Custom:PuppetModuleInfo。Custom 和 Data 您指定的 必須以大寫英文字母開頭。下列範例將會導致例外:「CUSTOM:RackInformation」、「custom:rackinformation」。

Content 區段包括屬性和 data. 這些項目不區分大小寫。然而,若您有定義屬性 (如 "Vendor": "DELL"),自訂庫存檔案便必須持續參考此屬性。如果您指定「廠商」:"DELL" (在廠商中使用大寫 "V") 在一個檔案中,然後您可以指定 "vendor":"DELL" (在廠商中使用小寫 “v”) 在另一個檔案中,系統會傳回錯誤。

注意

您必須以 .json 副檔名儲存檔案,且您定義的清查必須只包含字串值。

建立檔案之後,請務必將其儲存在執行個體上。下表顯示自訂庫存 JSON 檔案在執行個體上的存放位置:

作業系統 Path

Linux

/var/lib/amazon/ssm/instance-id/庫存/自訂

macOS

/opt/aws/ssm/data/instance-id/庫存/自訂

Windows

%SystemDrive%\\ProgramData\\Amazon\\SSM\\InstanceData\\instance-id\\inventory\\custom

如需使用自訂庫存的範例,請參閱部落格文章 Get Disk Utilization of Your Fleet Using EC2 Systems Manager Custom Inventory Types

刪除自訂清查

您可以使用 DeleteInventory API 動作來移除自訂庫存類型,以及與該類型相關聯的資料。您可以使用 AWS CLI 來呼叫 delete-inventory 命令,進而刪除庫存類型的所有資料。此外,您也能利用 SchemaDeleteOption 來呼叫 delete-inventory 命令,藉此刪除自訂庫存類型。

注意

庫存類型也稱為庫存結構描述。

SchemaDeleteOption 參數包含下列選項:

  • DeleteSchema:此選項會删除指定的自訂類型及其相關聯的所有資料。您稍後可以視需求重新建立該結構描述。

  • DisableSchema:如果您選擇此選項,系統會停用目前版本,移除所有資料,並在版本小於或等於已停用的版本時忽略所有新的資料。您可以再次讓此庫存類型以呼叫大於停用版本的 PutInventory 動作。

使用 AWS CLI 刪除或停用自訂庫存

  1. 如果您尚未安裝並設定 AWS CLI,請進行相應的作業。

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

  2. 執行下列命令,即可利用 dry-run 選項來查看系統要刪除的資料。此命令不會刪除任何資料。

    aws ssm delete-inventory --type-name "Custom:custom_type_name" --dry-run

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

    {
       "DeletionSummary":{
          "RemainingCount":3,
          "SummaryItems":[
             {
                "Count":2,
                "RemainingCount":2,
                "Version":"1.0"
             },
             {
                "Count":1,
                "RemainingCount":1,
                "Version":"2.0"
             }
          ],
          "TotalCount":3
       },
       "TypeName":"Custom:custom_type_name"
    }

    如需了解如何刪除庫存摘要的相關資訊,請參閱了解刪除清查摘要

  3. 執行下列命令,藉此刪除自訂庫存類型的所有資料。

    aws ssm delete-inventory --type-name "Custom:custom_type_name"
    注意

    此命令輸出並不會顯示刪除進度。因此,TotalCount 和 Remaining Count 一律相同,因為系統尚未移除任何項目。您能使用 describe-inventory-deletions 命令來顯示刪除進度,本主題稍後會予以說明。

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

    {
       "DeletionId":"system_generated_deletion_ID",
       "DeletionSummary":{
          "RemainingCount":3,
          "SummaryItems":[
             {
                "Count":2,
                "RemainingCount":2,
                "Version":"1.0"
             },
             {
                "Count":1,
                "RemainingCount":1,
                "Version":"2.0"
             }
          ],
          "TotalCount":3
       },
       "TypeName":"custom_type_name"
    }

    系統將從 Systems Manager 庫存服務刪除指定自訂庫存類型的所有資料。

  4. 執行下列命令。該命令會針對目前的庫存類型版本執行以下動作:停用目前版本,然後刪除所有相關資料。當版本低於或等於遭停用版本時,系統會忽略所有新資料。

    aws ssm delete-inventory --type-name "Custom:custom_type_name" --schema-delete-option "DisableSchema"

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

    {
       "DeletionId":"system_generated_deletion_ID",
       "DeletionSummary":{
          "RemainingCount":3,
          "SummaryItems":[
             {
                "Count":2,
                "RemainingCount":2,
                "Version":"1.0"
             },
             {
                "Count":1,
                "RemainingCount":1,
                "Version":"2.0"
             }
          ],
          "TotalCount":3
       },
       "TypeName":"Custom:custom_type_name"
    }

    若要檢視遭停用的庫存類型,則可使用下列命令。

    aws ssm get-inventory-schema --type-name Custom:custom_type_name
  5. 執行下列命令,以便刪除庫存類型。

    aws ssm delete-inventory --type-name "Custom:custom_type_name" --schema-delete-option "DeleteSchema"

    系統會刪除指定自訂類型的結構描述及所有庫存資料。

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

    {
       "DeletionId":"system_generated_deletion_ID",
       "DeletionSummary":{
          "RemainingCount":3,
          "SummaryItems":[
             {
                "Count":2,
                "RemainingCount":2,
                "Version":"1.0"
             },
             {
                "Count":1,
                "RemainingCount":1,
                "Version":"2.0"
             }
          ],
          "TotalCount":3
       },
       "TypeName":"Custom:custom_type_name"
    }

檢視刪除狀態

您能夠運用 describe-inventory-deletions AWS CLI 命令來檢查刪除操作的狀態。若要檢視特定刪除操作的狀態,請指定刪除 ID。或者,您能夠省略刪除 ID,以檢視過去 30 天內執行的所有刪除操作清單。

  1. 執行下列命令,藉此檢視刪除操作狀態。系統將在 delete-inventory 摘要中傳回刪除 ID。

    aws ssm describe-inventory-deletions --deletion-id system_generated_deletion_ID

    系統會傳回最新狀態。刪除操作可能尚未完成。系統會傳回相關資訊,如下所示。

    {"InventoryDeletions": 
      [
        {"DeletionId": "system_generated_deletion_ID", 
         "DeletionStartTime": 1521744844, 
         "DeletionSummary": 
          {"RemainingCount": 1, 
           "SummaryItems": 
            [
              {"Count": 1, 
               "RemainingCount": 1, 
               "Version": "1.0"}
            ], 
           "TotalCount": 1}, 
         "LastStatus": "InProgress", 
         "LastStatusMessage": "The Delete is in progress", 
         "LastStatusUpdateTime": 1521744844, 
         "TypeName": "Custom:custom_type_name"}
      ]
    }

    如果 delete 操作成功,則 LastStatusMessage 會指出:Deletion 成功。

    {"InventoryDeletions": 
      [
        {"DeletionId": "system_generated_deletion_ID", 
         "DeletionStartTime": 1521744844, 
         "DeletionSummary": 
          {"RemainingCount": 0, 
           "SummaryItems": 
            [
              {"Count": 1, 
               "RemainingCount": 0, 
               "Version": "1.0"}
            ], 
           "TotalCount": 1}, 
         "LastStatus": "Complete", 
         "LastStatusMessage": "Deletion is successful", 
         "LastStatusUpdateTime": 1521745253, 
         "TypeName": "Custom:custom_type_name"}
      ]
    }
  2. 執行下列命令,即可檢視過去 30 天內執行的所有刪除操作清單。

    aws ssm describe-inventory-deletions --max-results a number
    {"InventoryDeletions": 
      [
        {"DeletionId": "system_generated_deletion_ID", 
         "DeletionStartTime": 1521682552, 
         "DeletionSummary": 
          {"RemainingCount": 0, 
           "SummaryItems": 
            [
              {"Count": 1, 
               "RemainingCount": 0, 
               "Version": "1.0"}
            ], 
           "TotalCount": 1}, 
         "LastStatus": "Complete", 
         "LastStatusMessage": "Deletion is successful", 
         "LastStatusUpdateTime": 1521682852, 
         "TypeName": "Custom:custom_type_name"}, 
        {"DeletionId": "system_generated_deletion_ID", 
         "DeletionStartTime": 1521744844, 
         "DeletionSummary": 
          {"RemainingCount": 0, 
           "SummaryItems": 
            [
              {"Count": 1, 
               "RemainingCount": 0, 
               "Version": "1.0"}
            ], 
           "TotalCount": 1}, 
         "LastStatus": "Complete", 
         "LastStatusMessage": "Deletion is successful", 
         "LastStatusUpdateTime": 1521745253, 
         "TypeName": "Custom:custom_type_name"}, 
        {"DeletionId": "system_generated_deletion_ID", 
         "DeletionStartTime": 1521680145, 
         "DeletionSummary": 
          {"RemainingCount": 0, 
           "SummaryItems": 
            [
              {"Count": 1, 
               "RemainingCount": 0, 
               "Version": "1.0"}
            ], 
           "TotalCount": 1}, 
         "LastStatus": "Complete", 
         "LastStatusMessage": "Deletion is successful", 
         "LastStatusUpdateTime": 1521680471, 
         "TypeName": "Custom:custom_type_name"}
      ], 
     "NextToken": "next-token"

了解刪除清查摘要

為了協助您更充分了解庫存摘要刪除操作的內容,請參考以下範例。使用者將 Custom:RackSpace 庫存指派給三個執行個體。庫存項目 1 和 2 皆使用自訂類型 1.0 版 ("SchemaVersion":"1.0")。另一方面,庫存項目 3 則是使用自訂類型 2.0 版 ("SchemaVersion":"2.0")。

RackSpace 自訂庫存 1

{ "CaptureTime":"2018-02-19T10:48:55Z", "TypeName":"CustomType:RackSpace", "InstanceId":"i-1234567890", "SchemaVersion":"1.0" "Content":[ { content of custom type omitted } ] }

RackSpace 自訂庫存 2

{ "CaptureTime":"2018-02-19T10:48:55Z", "TypeName":"CustomType:RackSpace", "InstanceId":"i-1234567891", "SchemaVersion":"1.0" "Content":[ { content of custom type omitted } ] }

RackSpace 自訂庫存 3

{ "CaptureTime":"2018-02-19T10:48:55Z", "TypeName":"CustomType:RackSpace", "InstanceId":"i-1234567892", "SchemaVersion":"2.0" "Content":[ { content of custom type omitted } ] }

使用者可執行下列命令,以預覽即將刪除的資料。

aws ssm delete-inventory --type-name "Custom:RackSpace" --dry-run

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

{
   "DeletionId":"1111-2222-333-444-66666",
   "DeletionSummary":{
      "RemainingCount":3,           
      "TotalCount":3,             
                TotalCount and RemainingCount are the number of items that would be deleted if this was not a dry run. These numbers are the same because the system didn't delete anything.
      "SummaryItems":[
         {
            "Count":2,             The system found two items that use SchemaVersion 1.0. Neither item was deleted.           
            "RemainingCount":2,
            "Version":"1.0"
         },
         {
            "Count":1,             The system found one item that uses SchemaVersion 1.0. This item was not deleted.
            "RemainingCount":1,
            "Version":"2.0"
         }
      ],

   },
   "TypeName":"Custom:RackSpace"
}

使用者可執行下列命令,以刪除 Custom:RackSpace 庫存。

注意

此命令輸出並不會顯示刪除進度。因此,TotalCount 和 Remaining Count 一律相同,因為系統尚未移除任何項目。您能使用 describe-inventory-deletions 命令來顯示刪除進度。

aws ssm delete-inventory --type-name "Custom:RackSpace"

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

{
   "DeletionId":"1111-2222-333-444-7777777",
   "DeletionSummary":{
      "RemainingCount":3,           There are three items to delete
      "SummaryItems":[
         {
            "Count":2,              The system found two items that use SchemaVersion 1.0.
            "RemainingCount":2,     
            "Version":"1.0"
         },
         {
            "Count":1,              The system found one item that uses SchemaVersion 2.0.
            "RemainingCount":1,     
            "Version":"2.0"
         }
      ],
      "TotalCount":3                
   },
   "TypeName":"RackSpace"
}

在 EventBridge 中檢視清查刪除操作

您可以設定 Amazon EventBridge,在每次使用者刪除自訂庫存時建立事件。EventBridge 提供了三種事件類型,皆適用於自訂庫存刪除操作:

  • 執行個體的 Delete 動作:如果特定受管執行個體的自訂庫存已成功移除或失敗。

  • Delete 動作摘要:Delete 動作的摘要。

  • 停用自訂庫存類型的警告如果使用者針對先前停用的自訂庫存類型版本呼叫 PutInventory API 動作,就會出現警告事件。

下方是每個事件的範例:

執行個體的刪除動作

{
   "version":"0",
   "id":"998c9cde-56c0-b38b-707f-0411b3ff9d11",
   "detail-type":"Inventory Resource State Change",
   "source":"aws.ssm",
   "account":"478678815555",
   "time":"2018-05-24T22:24:34Z",
   "region":"us-east-1",
   "resources":[
      "arn:aws:ssm:us-east-1:478678815555:managed-instance/i-0a5feb270fc3f0b97"
   ],
   "detail":{
      "action-status":"succeeded",
      "action":"delete",
      "resource-type":"managed-instance",
      "resource-id":"i-0a5feb270fc3f0b97",
      "action-reason":"",
      "type-name":"Custom:MyInfo"
   }
}

刪除動作摘要

{
   "version":"0",
   "id":"83898300-f576-5181-7a67-fb3e45e4fad4",
   "detail-type":"Inventory Resource State Change",
   "source":"aws.ssm",
   "account":"478678815555",
   "time":"2018-05-24T22:28:25Z",
   "region":"us-east-1",
   "resources":[

   ],
   "detail":{
      "action-status":"succeeded",
      "action":"delete-summary",
      "resource-type":"managed-instance",
      "resource-id":"",
      "action-reason":"The delete for type name Custom:MyInfo was completed. The deletion summary is: {\"totalCount\":2,\"remainingCount\":0,\"summaryItems\":[{\"version\":\"1.0\",\"count\":2,\"remainingCount\":0}]}",
      "type-name":"Custom:MyInfo"
   }
}

停用自訂庫存類型的警告

{
   "version":"0",
   "id":"49c1855c-9c57-b5d7-8518-b64aeeef5e4a",
   "detail-type":"Inventory Resource State Change",
   "source":"aws.ssm",
   "account":"478678815555",
   "time":"2018-05-24T22:46:58Z",
   "region":"us-east-1",
   "resources":[
      "arn:aws:ssm:us-east-1:478678815555:managed-instance/i-0ee2d86a2cfc371f6"
   ],
   "detail":{
      "action-status":"failed",
      "action":"put",
      "resource-type":"managed-instance",
      "resource-id":"i-0ee2d86a2cfc371f6",
      "action-reason":"The inventory item with type name Custom:MyInfo was sent with a disabled schema version 1.0. You must send a version greater than 1.0",
      "type-name":"Custom:MyInfo"
   }
}

請使用下列程序來建立自訂庫存 Delete 操作的 EventBridge 規則。這項程序會說明如何建立規則,使其可傳送自訂庫存刪除操作通知至 Amazon SNS 主題。開始操作前,請確認您擁有 Amazon SNS 主題,或是建立一個新的主題。如需詳細資訊,請參閱《中的Amazon Simple Notification Service 開發人員指南入門

設定適用庫存刪除操作的 EventBridge

  1. https://console.aws.amazon.com/events/ 處開啟 Amazon EventBridge 主控台。

  2. 在導覽窗格中,選擇 Rules (規則),然後選擇 Create rule (建立規則)

    -或-

    如果 Amazon EventBridge 首頁會先打開,請選擇 Create rule (建立規則)

  3. 輸入規則的名稱和描述。

    在同一個區域和同一個事件匯流排上,規則不能與另一個規則同名。

  4. 針對 Define pattern (定義模式),選擇 Event pattern(事件模式)

  5. 選擇Pre-defined pattern by service (依服務預先定義模式)

  6. Service provider (服務提供者),選擇 AWS

  7. 針對 Service name (服務名稱),選擇 Systems Manager。

  8. 針對 Event type (事件類型),選擇 Inventory (庫存)

  9. 確認已選取 Any detail type (任何詳細資訊類型)

  10. 針對 Select event bus (選取事件匯流排),選擇要與此規則建立關聯的事件匯流排。如果您想要此規則由來自您自己 AWS 帳戶的相符事件觸發,請選取 AWS default event bus (AWS 預設事件匯流排)。當您帳戶中的 AWS 服務發出事件時,一律會前往您帳戶的預設事件匯流排。

  11. 針對 Target (目標),選擇 SNS topic (SNS 主題),然後從 Topic (主題) 清單中選擇主題。

  12. 展開 Configure input (設定輸入),並確認已選取 Matched event (相符的事件)

  13. (選用) 為規則輸入一或多個標籤。如需詳細資訊,請前往 中的Amazon EventBridge標記您的 資源。Amazon EventBridge 使用者指南

  14. 選擇 Create (建立)