Day17 NiFi - 与 AWS S3 & AWS lambda 对接设定

接下来从今天开始,会花个几天的时间带大家来实作一下关於对 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


<<:  Ruby、演算法学习心得(一) 二元搜寻法 Binary Search。

>>:  [DAY 27] 用google sheet 做简易UI介面(2/3)

Day 06-Visual Studio 2019下载教学+初步建立chatbot专案

之前介绍了几天关於架设Bot的服务器,那接下来我们用程序写Bot并放上云端服务器呢? 目前我选择了先...

Day 21 (Js)

1.外挂: Auto Rename Tag Bracket Pair Colorizer Chine...

A 2 Z List

Internet shopping has its disadvantages as well, w...

[Day 12] Forensics 小挑战

今天心情蛮好的,期待叻2周终於等到这天了,生平第一次染发:) 这篇文有一半是我边染发变打出来的~ 染...

C# 入门之开篇

为什么选择 C# 正如简介里面介绍的一样,作为一名运维人员,你应该懂一门开发语言,那么那么多语言中,...