接下來從今天開始,會花個幾天的時間帶大家來實作一下關於對 AWS Service 服務的對接,而今天的主題會先專注在 s3 和 lambda。
在先前的文章介紹時,多少就有帶大家了解到 s3 相關的 Processor,這邊一樣在列一次給大家,目前所有有關 s3 的 Processor 有這些:
其實看起來都非常簡單操作,讓我們趕快來實地演練一下:
假設我們想要從 s3://bucket_name/sample/data
list 出所有的 Object,就需要做如下的設定:
千萬要記得設定 aws controller service,這樣才有辦法權限存取你要的 aws 服務。
而從這個 Processor 出來的 FlowFiles 就會帶有這些 attributes:
View Data Provenance
做確認。假如我們設定 FetchS3Object 為 ListS3 的下游,我們可以做如下的設定:${filename}
就是由 ListS3 所產生的 attributes,所以這邊直接做套用。如此一來就能取得特定的 Object。
PutS3Object 是指從 local 上傳到 s3,所以要注意的是這邊的 ${filename}
是指 local object 的絕對路徑,而不是前面所提到的 s3 object 路徑:
其餘的設定都是一樣的。
DeleteS3Object 是直接刪除 s3 上的 Object,所以 ${filename}
這邊要用的是 S3 Object 的路徑:
其餘的設定都是一樣的。
lambda 這邊有支援的 Processor 就只有 PutLambda
,所以又更加單純了,就是將 FlowFile 送到 Lambda 去做處理。
就如同我們會在 Lambda 前面整合 SNS, SQS等服務,只是這邊就是由 NiFi 送 FlowFile 進去。
從設定上,我們只要設定要目標的 lambda function name,其餘的像是 region, credential 跟 s3 的設定都一樣:
從上述的簡單設定當中,我們可以發現大部分的設定都是大同小異的,像是 region
, AWS Credentials
等,其他的就是對應到我們要存取的相關服務來做設定即可,整體上不會太難或太複雜,所以相信讀者們應該很容易就手。
接下來明天,會介紹另外兩個 AWS 服務的對接,分別是 Athena 和 Redshift,這邊的設定就比較不一樣了,比較像是之前我們在對接 RDB 的方式,但一樣操作不會太難的。