亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

別再用Lambda來響應S3事件觸發AWS Glue作業了!

如何使用EventBridge触发Glue任务

如果你是一名数据工程师,负责基于 S3 对象创建事件来编排 Glue 数据管道,你肯定遇到许多触发 Glue 作业的选择。你可以使用基于 S3 事件的 Lambda 进行编排,也可以使用 Airflow 进行编排,还可以使用 Glue 触发器,甚至是使用 Step Functions 工作流。你会选择哪一个呢?

不过,没有绝对的对错方法,但推荐的做法是使用Amazon EventBridge进行基于事件的Glue作业的编排。

EventTypeAmazon EventBridge 是什么?为什么你应该使用它呢?

按照 AWS 文档:

EventBridge 是一项无服务器服务,它使用 事件 将应用程序组件 连接在一起,使您更容易构建可扩展的事件驱动应用程序。

使用 EventBridge 将 来自各种来源的事件,例如自建应用程序、AWS 服务和第三方软件 路由到组织内的应用程序。EventBridge 提供了简单且一致的方法来获取、过滤、转换和传递事件,帮助您快速构建应用程序。

你看,Eventbridge 提供了一个可扩展的事件总线,用于管理事件驱动的应用程序,它与各种 AWS 服务紧密集成。与使用 Lambda 方法相比,你不必担心将 S3 事件通过 SQS 排队,处理 Lambda 并发,甚至不需要编写 Lambda 代码来与目标集成。Eventbridge 会帮你搞定这一切!

建筑设计

整个编排过程的架构如下。

基于 EventBridge 的 Glue 工作流的编排

如图所示,最佳实践是使用名为 /manifest 的前缀名称,并将其作为您的 Glue 作业的事件触发器使用。有两点推荐理由。

  1. 清单文件充当您上游和应用之间的确认,表明所有数据文件已成功发送,并且您可以使用清单文件来验证文件的接收。通常,清单文件会包括前缀 /data 下的文件的详细信息,包括文件大小、文件的任何附加元数据,如校验和、数据分布的一些统计信息等。
  2. 这将确保您只发送与清单相关的事件,而不是单独的数据文件创建事件,从而显著减少您需要监视以触发 Glue 工作流的事件数量。
启用架构的方法

步骤 1: 首先,你需要配置你的桶设置,让它开始发送 S3 事件到 Eventbridge。这包括两步:

为你的 S3 存储桶创建一个 CloudTrail,以记录所有针对 /manifest 前缀的 S3 写操作。

b. 更改桶属性,以便将事件发送到 Amazon EventBridge。

这是你在AWS控制台中看到的桶的属性设置如下所示

在我的 CloudTrail 控制台中,s3-event-bridge 的追踪记录看起来像这样。

注意:大多数情况下我使用了默认设置,但在实际项目中,你可能需要使用更安全的设置,例如对你的CloudTrail日志使用基于KMS的加密方式。

步骤2: 接下来,我们需要创建一个由Eventbridge触发器触发的Glue工作流程。Glue工作流程内部运行Glue作业。

首先,我们需要在AWS Glue的控制台中创建一个Glue工作流程。

保存工作流的名字,接下来你需要用到它。

接下来,我们将使用 AWS CLI 来为我们的工作流程创建一个触发器。这个命令会为我们的工作流程设置一个 Eventbridge 触发器。

aws glue create-trigger --workflow-name s3_event_bridge_workflow --type EVENT --name s3_glue_trigger --actions JobName=sample_glue_job

创建Glue触发器,用于启动工作流中的Glue作业。

注意: 请更新上面步骤中的流程名称,并将其命名为你喜欢的名字。另外,需要注意的是,我已使用现有的Glue作业,并将作业名称传递给JobName参数。

创建触发器后,我的工作流是这样的。

第三步: 最后,我们需要配置 Eventbridge 来接收并把 S3 事件路由到 Glue。

要做到这一点,我们需要在 AWS Eventbridge 控制面板中创建一个新规则。更多关于如何创建 Eventbridge 规则的信息,请参阅这里: https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html

在下一个页面中,向下滚动到“创建方法”部分,选择“自定义模式”。以下是一个适用于我的桶的示例模式。请根据您的桶名称进行相应的修改。

{
  "detail-type": ["通过 CloudTrail 的 AWS API 调用"],
  "source": ["aws.s3"],
  "detail": {
    "eventSource": ["s3.amazonaws.com"],
    "requestParameters": {
      "bucketName": ["event-bridge-test-pke"],
      "key": [{
        "prefix": "manifest/"
      }]
    },
    "eventName": ["上传对象"]
  }
}

在接下来的页面中,选择 Glue 工作流 作为目标,然后从下拉菜单中选择我们在上一步中创建的 Glue 工作流名称。对于执行角色选项,选择 为该特定资源创建新角色 选项。这将创建一个新的 IAM 角色,Eventbridge 将使用该角色来路由 S3 事件到 Glue。

跳过这些标签,然后转到下一页创建规则。

就这样!现在,触发我们的Glue工作流的设置已经完成了。让我们通过上传一个样本文件到清单前缀来测试一下设置。我将使用AWS CLI上传文件到我的存储桶。

aws s3 cp test.csv s3://event-bridge-test-pke:/manifest/ # 将test.csv文件复制到S3存储桶的manifest目录

一上传文件,你应该就能看到那个Glue工作流在运行。

恭喜!你成功设置了Glue任务的可扩展事件驱动编排。

总结

简而言之,我们已经了解了如何利用S3事件驱动Glue工作流,以及为什么使用Eventbridge来驱动Glue工作流比使用Lambda方法更合适。

感谢阅读 :)。如果你喜欢我的文章,请给我点赞。如果你想和我预约一对一交流,聊聊最新的数据和机器学习工程动态,可以点击这里: https://topmate.io/pavan_k_emani

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消