選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

使用 Amazon EventBridge 事件啟動 AWS Glue 工作流程

焦點模式
使用 Amazon EventBridge 事件啟動 AWS Glue 工作流程 - AWS Glue

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

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

Amazon EventBridge 也稱為 CloudWatch Events,可讓您自動化 AWS 服務,並自動回應系統事件,例如應用程式可用性問題或資源變更。來自 AWS 服務的事件會以近乎即時的方式交付至 EventBridge。您可編寫簡單的規則,來指示您在意的事件,以及當事件符合規則時所要自動執行的動作。

透過 EventBridge 支援,AWS Glue 可以在事件驅動的架構中作為事件生產者和消費者。對於工作流程,AWS Glue 支援任何類型的 EventBridge 事件作為消費者。最常見的使用案例是 Amazon S3 儲存貯體中的新物件。如果您的資料以不規則或未定義的間隔送達,您可以儘可能接近其到達處理此資料。

注意

AWS Glue 不提供 EventBridge 訊息的保證傳遞。如果 EventBridge 傳送重複的訊息,AWS Glue 不會執行重複資料刪除。您必須根據使用案例來管理冪等性。

請務必正確設定 EventBridge 規則,以避免傳送不想要的事件。

開始之前

如果您想要使用 Amazon S3 資料事件啟動工作流程,您必須確保將 S3 關注儲存貯體的事件記錄到 AWS CloudTrail 和 EventBridge。若要這麼做,您必須建立 CloudTrail 線索。如需詳細資訊,請參閱為 AWS 您的帳戶建立追蹤

使用 EventBridge 事件啟動工作流程
注意

在下列命令中:

  • <workflow-name> 取代為要指派給工作流程的名稱。

  • <trigger-name> 取代為要指派給觸發的名稱。

  • <bucket-name> 取代為 Amazon S3 儲存貯體的名稱。

  • <account-id> 具有有效的 AWS 帳戶 ID。

  • <region> 取代為區域的名稱 (如 us-east-1)。

  • <rule-name> 取代為要指派給 EventBridge 規則的名稱。

  1. 請確定您具有建立和檢視 EventBridge 規則和目標的 AWS Identity and Access Management (IAM) 許可。下列是您可以連接的範例政策。您可能希望將其範圍限制為對操作和資源進行限制。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "events:PutRule", "events:DisableRule", "events:DeleteRule", "events:PutTargets", "events:RemoveTargets", "events:EnableRule", "events:List*", "events:Describe*" ], "Resource": "*" } ] }
  2. 建立 EventBridge 服務在將事件傳遞至 AWS Glue 時可擔任的 IAM 角色。

    1. 在 IAM 主控台的 Create role (建立角色)頁面上,選擇AWS Service (AWS 服務)。然後選擇服務 CloudWatch Events

    2. 完成 Create role (建立角色) 精靈。精靈會自動連接 CloudWatchEventsBuiltInTargetExecutionAccessCloudWatchEventsInvocationAccess 政策。

    3. 將下列內嵌策略連接到角色。此政策允許 EventBridge 服務將事件導向至 AWS Glue。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:notifyEvent" ], "Resource": [ "arn:aws:glue:<region>:<account-id>:workflow/<workflow-name>" ] } ] }
  3. 輸入下列命令以建立工作流程。

    如需其他選用命令列參數的相關資訊,請參閱 AWS CLI 命令參考中的 create-workflow

    aws glue create-workflow --name <workflow-name>
  4. 輸入下列命令為工作流程建立 EventBridge 事件觸發。這將是工作流程的啟動觸發。將 <actions> 替換成要執行的動作 (要啟動的任務和爬蟲程式)。

    請參閱 AWS CLI 命令參考中的 create-trigger 以取得如何編寫 actions 引數程式碼的詳細資訊。

    aws glue create-trigger --workflow-name <workflow-name> --type EVENT --name <trigger-name> --actions <actions>

    如果您希望工作流程由一批事件而非單一 EventBridge 事件觸發,請改為輸入下列命令。

    aws glue create-trigger --workflow-name <workflow-name> --type EVENT --name <trigger-name> --event-batching-condition BatchSize=<number-of-events>,BatchWindow=<seconds> --actions <actions>

    對於 event-batching-condition 引數,BatchSize 是必要的,而 BatchWindow 是選用的。如果忽略 BatchWindow,時段會預設為 900 秒,也就是時段大小上限。

    下列範例會建立觸發,以在三個 EventBridge 事件到達後或第一個 EventBridge 事件到達後五分鐘 (以先到達者為準) 啟動 eventtest 工作流程。

    aws glue create-trigger --workflow-name eventtest --type EVENT --name objectArrival --event-batching-condition BatchSize=3,BatchWindow=300 --actions JobName=test1
  5. 在 Amazon EventBridge 中建立規則。

    1. 在您偏好的文字編輯器中建立規則詳細資訊的 JSON 物件。

      下列範例將 Amazon S3 指定為事件來源、PutObject 作為事件名稱,並將儲存貯體名稱作為請求參數。當新物件到達儲存貯體時,此規則會啟動工作流程。

      { "source": [ "aws.s3" ], "detail-type": [ "AWS API Call via CloudTrail" ], "detail": { "eventSource": [ "s3.amazonaws.com" ], "eventName": [ "PutObject" ], "requestParameters": { "bucketName": [ "<bucket-name>" ] } } }

      若要在新物件到達儲存貯體內的資料夾時啟動工作流程,您可以將下列程式碼替換為 requestParameters

      "requestParameters": { "bucketName": [ "<bucket-name>" ] "key" : [{ "prefix" : "<folder1>/<folder2>/*"}}] }
    2. 使用您偏好的工具將規則 JSON 物件轉換為逸出的字串。

      {\n \"source\": [\n \"aws.s3\"\n ],\n \"detail-type\": [\n \"AWS API Call via CloudTrail\"\n ],\n \"detail\": {\n \"eventSource\": [\n \"s3.amazonaws.com\"\n ],\n \"eventName\": [\n \"PutObject\"\n ],\n \"requestParameters\": {\n \"bucketName\": [\n \"<bucket-name>\"\n ]\n }\n }\n}
    3. 執行下列命令以建立 JSON 參數範本,您可以編輯該範本,以指定後續 put-rule 命令。將輸出儲存在檔案中。在此範例中,檔案稱為 ruleCommand

      aws events put-rule --name <rule-name> --generate-cli-skeleton >ruleCommand

      如需關於 --generate-cli-skeleton 參數的詳細資訊,請參閱《AWS 命令行介面使用者指南》中的從 JSON 或 YAML 輸入檔案產生 AWS CLI Skeleton 及輸入參數

      輸出檔案現在應該與下列類似。

      { "Name": "", "ScheduleExpression": "", "EventPattern": "", "State": "ENABLED", "Description": "", "RoleArn": "", "Tags": [ { "Key": "", "Value": "" } ], "EventBusName": "" }
    4. 編輯檔案以選擇性地移除參數,並指定至少 NameEventPattern 以及 State 參數。對於 EventPattern 參數,提供您在上一個步驟中建立的規則詳細資訊提供逸出字串。

      { "Name": "<rule-name>", "EventPattern": "{\n \"source\": [\n \"aws.s3\"\n ],\n \"detail-type\": [\n \"AWS API Call via CloudTrail\"\n ],\n \"detail\": {\n \"eventSource\": [\n \"s3.amazonaws.com\"\n ],\n \"eventName\": [\n \"PutObject\"\n ],\n \"requestParameters\": {\n \"bucketName\": [\n \"<bucket-name>\"\n ]\n }\n }\n}", "State": "DISABLED", "Description": "Start an AWS Glue workflow upon new file arrival in an Amazon S3 bucket" }
      注意

      最好在您完成建立工作流程之前,將規則保持停用狀態。

    5. 輸入下列 put-rule 命令,該命令會從檔案 ruleCommand 中讀取輸入參數。

      aws events put-rule --name <rule-name> --cli-input-json file://ruleCommand

      以下輸出表示成功。

      {
          "RuleArn": "<rule-arn>"
      }
      
  6. 輸入下列命令將規則連接至目標。目標是 AWS Glue 中的工作流程。將 <role-name> 取代為您在此程序開始時建立的角色。

    aws events put-targets --rule <rule-name> --targets "Id"="1","Arn"="arn:aws:glue:<region>:<account-id>:workflow/<workflow-name>","RoleArn"="arn:aws:iam::<account-id>:role/<role-name>" --region <region>

    以下輸出表示成功。

    {
        "FailedEntryCount": 0,
        "FailedEntries": []
    }
  7. 輸入下列命令,確認規則與目標的連線成功。

    aws events list-rule-names-by-target --target-arn arn:aws:glue:<region>:<account-id>:workflow/<workflow-name>

    以下輸出表示成功,其中 <rule-name> 是您建立的規則名稱。

    {
        "RuleNames": [
            "<rule-name>"
        ]
    }
    
  8. 登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/glue/ 開啟 AWS Glue 主控台。

  9. 選取工作流程,並確認啟動觸發及其動作 (其啟動的任務或爬蟲程式) 顯示在工作流程圖形上。然後繼續 步驟 3:新增更多觸發 中的程序。或者使用 AWS Glue API 或 AWS Command Line Interface新增其他元件至工作流程。

  10. 完全指定工作流程後,請啟用規則。

    aws events enable-rule --name <rule-name>

    工作流程現已就緒,可由 EventBridge 事件或事件批次啟動。

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。