使用自訂清查 - AWS Systems Manager

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

使用自訂清查

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

注意

每個 Systems Manager 最多支援 20 個自訂清查類型 AWS 帳戶 。

若要將自訂庫存指派至執行個體,您可以使用 Systems ManagerPutInventoryAPI 作業,如逐步解說:指派自訂清查中繼資料給執行個體。或者,您也能選擇建立自訂庫存 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 與您指定的資料皆需以大寫字母開頭。下列範例會造成例外狀況:「自訂:機架資訊」、「自訂:機架資訊」。

Content 區段包含屬性和資料。這些項目不需區分大小寫。然而,若您有定義屬性 (如 "Vendor": "DELL"),自訂庫存檔案便必須持續參考此屬性。如果您指定「供應商」:DELL」(使用大寫「V」) 在某個檔案中),然後再指定「vendor」),再指定「供應商」):另一個檔案中的「DELL」(vendor 使用小寫「v」),系統就會傳回錯誤。

注意

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

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

作業系統 路徑

Linux

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

macOS

/opt/aws/ssm/data/instance-id/inventory/custom

Windows

%SystemDrive%\ ProgramData\ Amazon\ SSM\ InstanceData\ InstanceData\instance-id\ 庫存\ 自訂

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

刪除自訂清查

您可以使用DeleteInventoryAPI 操作來刪除自訂庫存類型,以及與該類型相關聯的資料。您可以利用來呼叫委派庫存命令AWS Command Line Interface(AWS CLI),藉此刪除庫存類型的所有資料。此外,您也能利用 SchemaDeleteOption 來呼叫 delete-inventory 命令,藉此刪除自訂庫存類型。

注意

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

SchemaDeleteOption 參數包含下列選項:

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

  • DisableSchema:如果您選擇此選項,系統即會關閉目前版本,然後刪除所有相關資料。當版本低於或等於遭關閉版本時,系統會忽略所有新資料。您可以再次允許此詳細目錄類型,方法是呼叫PutInventory動作的版本大於已關閉的版本。

刪除或關閉自訂庫存,藉由使用AWS CLI

  1. 安裝及設定AWS Command Line Interface(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 與 Remain 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"}
      ]
    }

    如果刪除操作成功,LastStatusMessage狀態:刪除成功。

    {"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 與 Remain 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 提供了三種事件類型,皆適用於自訂庫存刪除操作:

  • 執行個體的刪除動作:特定受管執行個體的自訂庫存是否已成功刪除。

  • 刪除動作摘要:刪除動作的摘要。

  • 關閉自訂庫存類型的警告:警告事件,如果使用者呼叫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"
   }
}

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

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

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

  2. 在導覽窗格中,選擇規則,接著選擇建立規則

    -或-

    如果 Amazon EventBridge 首頁會先開啟,請選擇建立規則

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

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

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

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

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

  7. 適用於Service name (服務名稱)中,選擇Systems Manager

  8. 適用於Event type中,選擇清查

  9. 驗證任何詳細資訊類型已選取。

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

  11. 適用於目標中,選擇SNS 主題,然後從主題清單。

  12. Expand設定輸入,並驗證符合的事件已選取。

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

  14. 選擇 Create (建立)。