iT邦幫忙

2021 iThome 鐵人賽

DAY 17
0
AI & Data

Apache NiFi - 讓你輕鬆設計 Data Pipeline系列 第 17

Day17 NiFi - 與 AWS S3 & AWS lambda 對接設定

  • 分享至 

  • xImage
  •  

接下來從今天開始,會花個幾天的時間帶大家來實作一下關於對 AWS Service 服務的對接,而今天的主題會先專注在 s3 和 lambda。

Connect to S3

在先前的文章介紹時,多少就有帶大家了解到 s3 相關的 Processor,這邊一樣在列一次給大家,目前所有有關 s3 的 Processor 有這些:

  • listS3
    列出 S3 Folder 下所有 Object 的名稱與相關資訊。
  • FetchS3Object
    讀取特定 S3 Object 的內容。
  • TagS3Object
    設定 S3 Bucket Tag。
  • PutS3Object
    上傳 Object 到 S3。
  • DeleteS3Object
    刪除 S3 的 Object。

其實看起來都非常簡單操作,讓我們趕快來實地演練一下:

ListS3

假設我們想要從 s3://bucket_name/sample/data list 出所有的 Object,就需要做如下的設定:


千萬要記得設定 aws controller service,這樣才有辦法權限存取你要的 aws 服務。

而從這個 Processor 出來的 FlowFiles 就會帶有這些 attributes:

  • filename
    Object name + s3 folder name,不包含 Bucket name
  • s3.bucket
    S3 bucket name
  • s3.lastModifed
    這個 Object 最後修改的時間
    當然還有很多相關的 s3 attributes,讀者們可以在透過 View Data Provenance 做確認。

FetchS3Object

假如我們設定 FetchS3Object 為 ListS3 的下游,我們可以做如下的設定:

${filename} 就是由 ListS3 所產生的 attributes,所以這邊直接做套用。如此一來就能取得特定的 Object。

PutS3Object

PutS3Object 是指從 local 上傳到 s3,所以要注意的是這邊的 ${filename} 是指 local object 的絕對路徑,而不是前面所提到的 s3 object 路徑:

其餘的設定都是一樣的。

DeleteS3Object

DeleteS3Object 是直接刪除 s3 上的 Object,所以 ${filename} 這邊要用的是 S3 Object 的路徑:

其餘的設定都是一樣的。

Connect to Lambda

lambda 這邊有支援的 Processor 就只有 PutLambda,所以又更加單純了,就是將 FlowFile 送到 Lambda 去做處理。

就如同我們會在 Lambda 前面整合 SNS, SQS等服務,只是這邊就是由 NiFi 送 FlowFile 進去。

從設定上,我們只要設定要目標的 lambda function name,其餘的像是 region, credential 跟 s3 的設定都一樣:

小總結

從上述的簡單設定當中,我們可以發現大部分的設定都是大同小異的,像是 region, AWS Credentials 等,其他的就是對應到我們要存取的相關服務來做設定即可,整體上不會太難或太複雜,所以相信讀者們應該很容易就手。

接下來明天,會介紹另外兩個 AWS 服務的對接,分別是 Athena 和 Redshift,這邊的設定就比較不一樣了,比較像是之前我們在對接 RDB 的方式,但一樣操作不會太難的。

Reference


上一篇
Day16 NiFi - 與 MongoDB 對接設定
下一篇
Day18 NiFi - 與 AWS Athena & AWS Redshift 對接設定
系列文
Apache NiFi - 讓你輕鬆設計 Data Pipeline30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言