如何使用 Lambda 函數在編目程式執行完成時自動啟動 AWS Glue 任務?

2 分的閱讀內容
0

我想使用 AWS Lambda 函數在編目程式執行完成時自動啟動 AWS Glue 任務。

簡短描述

若要在編目程式執行完成後啟動任務,請建立 AWS Lambda 函數和 Amazon EventBridge 規則。您也可以修改此方法以自動化其他 AWS Glue 函數。

注意:您也可以使用 AWS Glue 工作流程,以在編目程式執行完成時自動啟動任務。此方法需要您從 AWS Glue 主控台的工作流程頁面啟動編目程式。如需詳細資訊,請參閱如何在編目程式執行完成時使用 AWS Glue 工作流程自動啟動任務?

解決方法

在完成下列步驟之前,請確保您具有:

  • AWS Glue 擷取、轉換和載入 (ETL) 任務。
  • AWS Glue 編目程式。
  • 具有執行 AWS Glue 任務許可的 Lambda 的 AWS Identity and Access Management (IAM) 角色。例如,為連接了 AWSGlueServiceRole 政策的 Lambda 設定服務連結角色

建立 Lambda 函數

1.    開啟 Lambda 主控台

2.    選擇建立函數
注意:如果您沒有 Lambda 函數,則會出現入門頁面。選擇建立函數,然後繼續下一步。

3.    確保已選取從頭開始撰寫,然後設定下列選項:
對於名稱,輸入函數的名稱。
對於執行時期,選擇其中一個 Python 選項。
對於架構,使用預設選項 x86\ _64
對於角色,選取變更預設執行角色下拉式清單,然後選取使用現有角色
對於現有角色,選取具有執行 AWS Glue 任務許可的 IAM 角色。

4.    選擇建立函數

5.    在函數程式碼區段中,貼上類似下列的程式碼。確保使用 AWS Glue ETL 任務的名稱取代 MyTestJob

# Set up logging
import json
import os
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)

# Import Boto 3 for AWS Glue
import boto3
client = boto3.client('glue')

# Variables for the job:
glueJobName = "MyTestJob"

# Define Lambda function
def lambda_handler(event, context):
    logger.info('## INITIATED BY EVENT: ')
    logger.info(event['detail'])
    response = client.start_job_run(JobName = glueJobName)
    logger.info('## STARTED GLUE JOB: ' + glueJobName)
    logger.info('## GLUE JOB RUN ID: ' + response['JobRunId'])
    return response

6.    在程式碼編輯 UI 頂端選擇部署,然後選擇測試

7.    開啟 AWS Glue 主控台並確認任務已開始。

建立 EventBridge 規則

1.    開啟 Amazon EventBridge 主控台

2.    在導覽窗格中,選擇規則,然後選擇建立規則

3.    輸入規則的名稱和描述,然後選取下一步

4.    對事件來源和**「範例事件」使用預設值。事件模式區段中,選取自訂模式** (JSON 編輯器)。

5.    將下列程式碼複製並貼到事件模式方塊中。確保使用 AWS Glue 編目程式的名稱取代 MyTestCrawl

{
    "detail-type": [
        "Glue Crawler State Change"
    ],
    "source": [
        "aws.glue"
    ],
    "detail": {
        "crawlerName": [
            "MyTestCrawl"
        ],
        "state": [
            "Succeeded"
        ]
    }
}

6.    在選取目標區段中,執行下列動作:

對於目標,選取 Lambda 函數

對於函數,選取 Lambda 函數的名稱。

7.    選擇建立

若要測試 Lambda 函數和 EventBridge 規則,請執行 AWS Glue 編目程式。然後,檢查 AWS Glue ETL 任務的「歷史記錄」標籤執行狀態應顯示啟動中執行中


相關資訊

建立對事件做出反應的 Amazon EventBridge 規則

AWS 官方
AWS 官方已更新 2 年前