Resource Groups 生命週期事件的結構與語法 - AWS Resource Groups

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

Resource Groups 生命週期事件的結構與語法

的生命週期事件AWS Resource Groups採用下列一般格式的 JSON 物件字串形式。

{ "version": "0", "id": "08f00e24-2e30-ec44-b824-8acddf1ac868", "detail-type": "ResourceGroups Group ... Change", "source": "aws.resource-groups", "account": "123456789012", "time": "2020-09-29T09:59:01Z", "region": "us-east-1", "resources": [ "arn:aws:resource-groups:us-east-1:123456789012:group/MyGroupName" ], "detail": { ... } }

如需有關所有 Amazon EventBridge 事件通用欄位的詳細資訊,請參閱 Amazon EventBridge 使用者指南中的 Amazon EventBridge 事件。下表說明 Resource Groups 特有的詳細資訊。

欄位名稱 Type 描述
detail-type 字串

對於「Resource Groups」,detail-type欄位永遠是下列其中一個值:

source 字串 對於 Resource Groups,此值一"aws.resource-groups"
resources Amazon 資源名稱(ARN)的數組

此欄位永遠包含群組的 Amazon 資源名稱 (ARN),以及觸發此事件的變更。

如果適用,此欄位也可以包括新增至群組或從群組中移除之任何資源的 ARN。

detail

物件字串 這是事件的裝載。detail欄位的內容會根據的值而有所不同detail-type如需詳細資訊,請參閱下一節。

detail領域的結構

detail欄位包含有關特定變更的所有「Resource Groups」服務特定詳細資料。根據上一節所述detail欄位的值,此欄位可採用兩種形式的其中一種,即群組狀態變更或成員資格變更。detail-type

重要

這些事件中的資源群組是由群組的 ARN 和包含 UU ID 的"unique-id"欄位組合來識別。透過將 UUID 納入資源群組識別的一部分,您可以區分刪除的群組和稍後使用相同名稱建立的不同群組。我們建議您將 ARN 和唯一 ID 的串連視為程式中與這些事件互動之群組的索引鍵。

群組狀態變更

"detail-type": "ResourceGroups Group State Change"

detail-type值表示群組本身的狀態 (包括其中繼資料) 已變更。建立、更新或刪除群組時,會發生此變更,如中的"change"欄位所指示detail

指定此資訊時,details區段中包含detail-type的資訊包括下表所述的欄位。

欄位名稱 Type 描述
event-sequence Double 單調遞增的數字,指定特定群組的事件順序。當您刪除群組並建立另一個具有相同名稱的群組時,編號會重設。
group Group物件 按照 ARN、名稱和唯一 ID 與事件相關聯的群組物件。
state-change 字串 發生的狀態變更類型。可以是下列任一值:
old-state GroupState物件 變更前的群組狀態。物件僅包含變更的性質值。

new-state

GroupState物件 變更之後的群組狀態。物件僅包含變更的性質值。

groupJSON 物件包含下表所述的元素。

欄位名稱 Type 描述
arn 字串 群組的 ARN。
name 字串 群組的易記名稱。
unique-id GUID 唯一的 GUID 值,可區分刪除的群組與稍後使用相同名稱和 ARN 建立的不同群組。在程式碼中使用這些事件時,請使用 ARN 和此值作為群組的唯一索引鍵。

GroupStateJSON 物件包含下表所述的元素。

欄位名稱 Type 描述
description 字串 客戶提供的資源群組說明。
resource-query ResourceQuery物件 定義群組成員之查詢的 JSON 表示法。此欄位僅適用於以查詢為基礎的群組。此欄位的語法由 ResourceQuery API 資料類型定義。此範例包含在「建立更新」事件範例中。
group-configuration Configuration物件 與服務連結群組相關聯之組態參數的 JSON 表示法。如需詳細資訊,請參閱 AWS Resource GroupsAPI 參考的資源群組的服務組態

下列每個程式碼範例都會說明每個state-change類型的detail欄位內容。

建立

"state-change": "create"

此事件表示已建立新群組。此事件包含群組建立期間設定的所有群組中繼資料屬性。除非群組為空,否則此事件通常會接著其中一個以上的群組成員資格事件。具有 null 值的屬性不會顯示在事件主體中。

下列範例事件指出新建立的名為的資源群組my-service-group。在此範例中,該群組使用的標籤式查詢僅與具有標籤"project"="my-service"的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體相符。

{ "version": "0", "id": "08f00e24-2e30-ec44-b824-8acddf1ac868", "detail-type": "ResourceGroups Group State Change", "source": "aws.resource-groups", "account": "123456789012", "time": "2020-09-29T09:59:01Z", "region": "us-east-1", "resources": [ "arn:aws:resource-groups:us-east-1:123456789012:group/my-service-group" ], "detail": { "event-sequence": 1.0, "state-change": "create", "group": { "arn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-service-group", "name": "my-service-group", "unique-id": "3dd07ab7-3228-4410-8cdc-6c4a10fcceea" }, "new-state": { "resource-query": { "type": "TAG_FILTERS_1_0", "query": "{ \"ResourceTypeFilters\": [\"AWS::EC2::Instance\"], \"TagFilters\": [{\"Key\":\"project\", \"Values\":[\"my-service\"}] }" } } } }

更新

"state-change": "update"

該事件表示現有組以某種方式進行了修改。此事件僅包含從先前狀態變更的屬性。未變更的屬性不會顯示在事件主體中。

下列範例事件指出上一個範例資源群組中的標籤式查詢已修改為同時在群組中包含 Amazon EC2 磁碟區資源。

{ "version": "0", "id": "08f00e24-2e30-ec44-b824-8acddf1ac868", "detail-type": "ResourceGroups Group State Change", "source": "aws.resource-groups", "account": "123456789012", "time": "2020-09-29T09:59:01Z", "region": "us-east-1", "resources": [ "arn:aws:resource-groups:us-east-1:123456789012:group/my-service-group" ], "detail": { "event-sequence": 3.0, "state-change": "update", "group": { "arn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-service-group", "name": "my-service", "unique-id": "3dd07ab7-3228-4410-8cdc-6c4a10fcceea" }, "new-state": { "resource-query": { "type": "TAG_FILTERS_1_0", "query": "{ \"ResourceTypeFilters\": [\"AWS::EC2::Instance\", \"AWS::EC2::Volume\"], \"TagFilters\": [{\"Key\":\"project\", \"Values\":[\"my-service\"}] }" } }, "old-state": { "resource-query": { "type": "TAG_FILTERS_1_0", "query": "{ \"ResourceTypeFilters\": [\"AWS::EC2::Instance\"], \"TagFilters\": [{\"Key\":\"Project\", \"Values\":[\"my-service\"}] }" } } } }

Delete

"state-change": "delete"

此事件表示已刪除現有群組。除了識別之外,詳細資料欄位不包含任何關於群組的中繼資料。該event-sequence字段在此事件之後重置,因為它是根據定義,此arn和的最後一個事件unique-id

{ "version": "0", "id": "08f00e24-2e30-ec44-b824-8acddf1ac868", "detail-type": "ResourceGroups Group State Change", "source": "aws.resource-groups", "account": "123456789012", "time": "2020-09-29T09:59:01Z", "region": "us-east-1", "resources": [ "arn:aws:resource-groups:us-east-1:123456789012:group/my-service" ], "detail": { "event-sequence": 4.0, "state-change": "delete", "group": { "arn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-service", "name": "my-service", "unique-id": "3dd07ab7-3228-4410-8cdc-6c4a10fcceea" } } }

團體成員變更

"detail-type": "ResourceGroups Group Membership Change"

detail-type值表示群組的成員資格已由新增至群組或從群組中移除的資源而變更。指定detail-type此選項時,頂層resources欄位會包含已變更其成員資格之群組的 ARN,以及新增至群組或從群組中移除之任何資源的 ARN。

指定此資訊時,details區段中包含detail-type的資訊包括下表所述的欄位。

欄位名稱 Type 描述
event-sequence Double 單調遞增的數字,表示特定群組的事件順序。編號會在刪除群組且其唯一 ID 變更時重設。
group Group物件 以 ARN、名稱和唯一 ID 來識別與事件相關聯的群組物件。

resources

ResourceChangeJSON 物件陣列

群組成員資格已變更的資源陣列。

ResourceChange物件包含每個資源的下列欄位:

  • membership-change— 值為"add""remove"

  • arn— 新增或移除資源的 ARN。

  • resource-type— 新增或移除的資源類型。

下列程式碼範例會說明典型成員資格變更類型的事件內容。此範例顯示新增至群組的一個資源,以及一個從群組中移除的資源。

{ "version": "0", "id": "08f00e24-2e30-ec44-b824-8acddf1ac868", "detail-type": "ResourceGroups Group Membership Change", "source": "aws.resource-groups", "account": "123456789012", "time": "2020-09-29T09:59:01Z", "region": "us-east-1", "resources": [ "arn:aws:resource-groups:us-east-1:123456789012:group/my-service", "arn:aws:ec2:us-east-1:123456789012:instance/i-abcd1111", "arn:aws:ec2:us-east-1:123456789012:instance/i-efef2222" ], "detail": { "event-sequence": 2.0, "group": { "arn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-service", "name": "my-service", "unique-id": "3dd07ab7-3228-4410-8cdc-6c4a10fcceea" }, "resources": [ { "membership-change": "add", "arn": "arn:aws:ec2:us-east-1:123456789012:instance/i-abcd1111", "resource-type": "AWS::EC2::Instance" }, { "membership-change": "remove", "arn": "arn:aws:ec2:us-east-1:123456789012:instance/i-efef2222", "resource-type": "AWS::EC2::Instance" } ] } }

針對不同使用案例的範例 EventBridge 自訂事件模式

下列範例 EventBridge 自訂事件模式會將 Resource Groups 所產生的事件篩選為僅針對特定事件規則和目標感興趣的事件。

在下列程式碼範例中,如果需要特定的群組或資源,請以您自己的資訊取代每個使用者輸入預留位置

所有 Resource Groups 事件
{ "source": [ "aws.resource-groups" ] }
群組狀態或成員資格變更事件

下列程式碼範例適用於所有群組狀態變更。

{ "source": [ "aws.resource-groups" ], "detail-type": [ "ResourceGroups Group State Change " ] }

下列程式碼範例適用於所有群組成員資格變更。

{ "source": [ "aws.resource-groups" ], "detail-type": [ "ResourceGroups Group Membership Change" ] }
特定群組的活動
{ "source": [ "aws.resource-groups" ], "detail": { "group": { "arn": [ "my-group-arn" ] } } }

上一個範例會擷取指定群組的變更。下列範例會執行相同動作,並在群組是另一個群組的成員資源時擷取變更。

{ "source": [ "aws.resource-groups" ], "resources": [ "my-group-arn" ] }
特定資源的事件

您只能篩選特定成員資源的群組成員資格變更事件。

{ "source": [ "aws.resource-groups" ], "detail-type": [ "ResourceGroups Group Membership Change " ], "resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-b188560f" ] }
特定資源類型的事件

您可以使用前綴匹配 ARN 來匹配特定資源類型的事件。

{ "source": [ "aws.resource-groups" ], "resources": [ { "prefix": "arn:aws:ec2:us-east-1:123456789012:instance" } ] }

或者,您可以通過使用resource-type標識符來使用精確匹配,這可能會簡潔地匹配多個類型。與前面的範例不同,下列範例只比對群組成員資格變更事件,因為群組狀態變更事件不包含resources欄位在其detail欄位中。

{ "source": [ "aws.resource-groups" ], "detail": { "resources": { "resource-type": [ "AWS::EC2::Instance", "AWS::EC2::Volume" ] } } }
所有資源移除事件
{ "source": [ "aws.resource-groups" ], "detail-type": [ "ResourceGroups Group Membership Change" ], "detail": { "resources": { "membership-change": [ "remove" ] } } }
特定資源的所有資源移除事件
{ "source": [ "aws.resource-groups" ], "detail-type": [ "ResourceGroups Group Membership Change" ], "detail": { "resources": { "membership-change": [ "remove" ], "arn": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-b188560f" ] } } }

您無法將本節第一個範例中使用的頂層resources陣列用於此類型的事件篩選。這是因為頂層resources元素中的資源可能是新增至群組的資源,而且事件仍然會相符。換句話說,下列程式碼範例可能會傳回未預期的事件。請改用上一個範例中顯示的語法。

{ "source": [ "aws.resource-groups" ], "detail-type": [ "ResourceGroups Group Membership Change" ], "resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-b188560f" ], "detail": { "resources": { "membership-change": [ "remove" ] } } }