

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

# 使用 EventBridge 自動化 AWS Glue
<a name="automating-awsglue-with-cloudwatch-events"></a>

您可以使用 Amazon EventBridge 自動化您的 AWS 服務，並自動回應系統事件，例如應用程式可用性問題或資源變更。來自 AWS 服務的事件會以近乎即時的方式交付至 EventBridge。您可編寫簡單的規則，來指示您在意的事件，以及當事件符合規則時所要自動執行的動作。可以自動觸發的動作如下：
+ 叫用 AWS Lambda 函數
+ 調用 Amazon EC2 執行命令
+ 將事件轉傳至 Amazon Kinesis Data Streams
+ 啟用 AWS Step Functions 狀態機器
+ 通知 Amazon SNS 主題或 Amazon SQS 佇列

下列是將 EventBridge 與 AWS Glue 搭配使用的部分範例：
+ 在 ETL 任務成功時啟動 Lambda 函數
+ 在 ETL 任務失敗時通知 Amazon SNS 主題

下列 EventBridge 由 AWS Glue 產生。
+ `"detail-type":"Glue Job State Change"` 的事件是針對`SUCCEEDED`、`FAILED`、`TIMEOUT` 和 `STOPPED` 產生。
+ `"detail-type":"Glue Job Run Status"` 的事件是針對 `RUNNING`、`STARTING` 和 `STOPPING` 任務執行產生 (在超過任務延遲通知閾值時)。您必須設定任務延遲通知閾值屬性才能接收這些事件。

  超過任務延遲通知閾值時，每個任務執行狀態只會產生一個事件。
+ `"detail-type":"Glue Crawler State Change"` 的事件是針對 `Started`、`Succeeded` 和 `Failed` 產生。
+ `“detail_type”:“Glue Scheduled Crawler Invocation Failure”` 的事件會在排程編目程式無法啟動時產生。在通知詳細資訊中：
  + `customerId` 包含客戶的帳戶 ID。
  + `crawlerName` 包含無法啟動的編目程式名稱。
  + `errorMessage` 包含調用失敗的例外狀況訊息。
+ 當自動受管資料欄統計資料任務執行無法啟動時，會產生 `“detail_type”:“Glue Auto Statistics Invocation Failure“` 的事件。在通知詳細資訊中：
  + `catalogId` 包含與目錄關聯的 ID。
  + `databaseName` 包含受影響資料庫的名稱。
  + `tableName` 包含受影響資料表的名稱。
  + `errorMessage` 包含調用失敗的例外狀況訊息。
+ 當 (cron) 排程資料欄統計資料任務執行無法啟動時，會產生 `“detail_type”:“Glue Scheduled Statistics Invocation Failure”` 的事件。在通知詳細資訊中：
  + `catalogId` 包含與目錄關聯的 ID。
  + `databaseName` 包含受影響資料庫的名稱。
  + `tableName` 包含受影響資料表的名稱。
  + `errorMessage` 包含調用失敗的例外狀況訊息。
+ 當資料欄統計資料任務執行啟動時，會產生 `“detail_type”:“Glue Statistics Task Started”` 的事件。
+ 當資料欄統計資料任務執行成功時，會產生 `“detail_type”:“Glue Statistics Task Succeeded”` 的事件。
+ 當資料欄統計資料任務執行失敗時，會產生 `“detail_type”:“Glue Statistics Task Failed”` 的事件。
+ `"detail-type":"Glue Data Catalog Database State Change"` 的事件是針對 `CreateDatabase`、`DeleteDatabase`、`CreateTable`、`DeleteTable` 和 `BatchDeleteTable` 產生。例如，某資料表建立或遭刪除時，便會將通知傳送至 EventBridge。請注意，您無法撰寫會根據通知事件的順序或存在的程式，因為這些事件可能會被移出序列或遺漏。盡可能發出事件。在通知詳細資訊中：
  + `typeOfChange` 會包含 API 操作的名稱。
  + `databaseName` 會包含受影響資料庫的名稱。
  + `changedTables` 包含每個通知高達 100 個​受影響資料表的名稱。資料表名稱太長時，可能會建立多個通知。
+ `"detail-type":"Glue Data Catalog Table State Change"` 的事件是針對 `UpdateTable`、`CreatePartition`、`BatchCreatePartition`、`UpdatePartition`、`DeletePartition`、`BatchUpdatePartition` 和 `BatchDeletePartition` 產生。例如，某資料表或分區更新時，便會將通知傳送至 EventBridge。請注意，您無法撰寫會根據通知事件的順序或存在的程式，因為這些事件可能會被移出序列或遺漏。盡可能發出事件。在通知詳細資訊中：
  + `typeOfChange` 會包含 API 操作的名稱。
  + `databaseName` 包含內含受影響資源之資料庫的名稱​。
  + `tableName` 會包含受影響資料表的名稱。
  + `changedPartitions` 會在一個通知中指定高達 100 個受影響的分割區。​ 分割區名稱太長時，可能會建立多個通知。

    例如，如果有兩個分割區金鑰 (`Year` 和 `Month`)，則 ​`"2018,01", "2018,02"` 會修改 `"Year=2018" and "Month=01"`​ 的分割區和 `"Year=2018" and "Month=02"` 的分割區。​

    ```
    {
        "version":"0",
        "id":"abcdef00-1234-5678-9abc-def012345678",
        "detail-type":"Glue Data Catalog Table State Change",
        "source":"aws.glue",
        "account":"123456789012",
        "time":"2017-09-07T18:57:21Z",
        "region":"us-west-2",
        "resources":["arn:aws:glue:us-west-2:123456789012:database/default/foo"],
        "detail":{
            "changedPartitions": [
                "2018,01",
                "2018,02"
            ],
            "databaseName": "default",
            "tableName": "foo",
            "typeOfChange": "BatchCreatePartition"
            }
    }
    ```

如需詳細資訊，請參閱 [Amazon CloudWatch Events 使用者指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/)。如需 AWS Glue 特有的事件，請參閱 [AWS Glue 事件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/EventTypes.html#glue-event-types)。