暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

AWS Lambda专题二:AWS S3触发Lambda function

BPShare 2020-05-17
1467


本篇目标:实现如何利用AWS S3的Event属性来触发Lambda function执行。


在上一篇专题中,我们介绍了如何创建一个基于Python运行时的AWS Lambda function,并执行了它。那么本篇专题,我们就来用AWS S3服务来触发AWS Lambda function,让我们在上一篇专题中创建的AWS Lambda function自动执行。


那如何让AWS S3这个服务去触发AWS Lambda服务呢?想必你已经想到了,上一个专题我们提到过一个关键词:事件。这个是最重要的一个概念,很多互联网技术都会有event这个概念。当我们在AWS S3上开启了event功能,就可以和AWS Lambda做关联,去触发lambda function了。大概的流程是这么个样子:


那我们现在就开始动手开搞。


登录AWS,在Service里直接输入s3,然后选择"S3 scalable storage in the Cloud"


页面将会直接跳转到S3服务页面,这里说明一下Bucket,网上一般翻译成存储桶,还是比较贴切这个服务的,Bucket也是S3服务的一个最基本也是最重要的一个概念。记住bucket就是存放你数据的地方就行了,你也可以把一个bucket就是Windows下的一个磁盘。那我们现在就来创建一个bucket。


点击"Create bucket"按钮。


在Create bucket页面,需要注意的地方有:

- Bucket name: 必须要提供的,而且是要唯一的,不能有空格或者大写字母。

- Region:必选项,必选指定一下你想把你的bucket放在AWS的哪个数据中心。


在Bucket settings for Block Public Access这一部分,我们保持默认即可。


然后点击:"Create bucket"按钮。Bucket创建成功的速度取决于你本机电脑的网速。这里吐槽一下中国移动的网速,真TMD慢啊!


Bucket创建成功会有如下提示:


我们可以看到,刚才的bucket的详细信息和创建时间


然后点击我们新创建的bucket的名称:demo.lambda.bucket,我们会进入到这个bucket里面。接着点击"Properties"这个tab。


在Advanced settings部分,有一个Events属性,这个就是我们要用的属性,然后点击 Events


在新显示的页面,点击:"Add notification"


然后我们:

- 给这个新建的event起个名字

- Events type:我们来选择PUT,因为我们这次只是测试文件上传操作。


我们可以指定前缀和后缀,从而来实现对批量类似文件类型的操作,这里我们不指定。


下面是最重要的部分:


- Send to,我们要指定你这个notification是要发给哪个服务,这里我们选择Lambda Function。


- Lambda:指定想要将此事件发送给哪个lambda。


最后核对一下信息,没问题就点击:Save

好了,这个时候我们的AWS S3服务,已经和AWS Lambda服务关联好了,而且我们指定了具体将我们这个S3 bucket关联到哪个lambda function上。


接下来我们开始测试一下,这两个服务到底有没有关联成功,我们上传一个文件到我们新创建的bucket里,看看我们的lambda是否被触发了。


接上图,点击:"Overview"这个tab,然后点击Upload


点击:Add Files按钮,或者直接将文件拖拽到Upload这个区域。


选择想要上传的文件之后,点击Upload按钮开始上传文件。


我们可以看到文件上传的进程。


文件上传成功:

文件上传成功后,我们打开我们创建的那个Lambda function,切换到Monitoring这个tab,这个是可视化的图表呈现,我们要去另外一个地方:View log in CloudWatch


点击View log in CloudWatch之后,我们就到了Log检查页面,就会发现已经有了一条log,我们点击一下。


在log详情页面,展开下面3条数据,我们可以看到下面的信息,目前觉得只有最后一条还可以看看,关于这个lambda的执行时间,收费时间,设置的内存大小,执行这个lambda function时使用的最大内存,初始化时间。

- START RequestId: 544f95eb-8d86-4b66-8a12-44ec69aa4343 Version: $LATEST

- END RequestId: 544f95eb-8d86-4b66-8a12-44ec69aa4343

REPORT RequestId: 544f95eb-8d86-4b66-8a12-44ec69aa4343 Duration: 1.19 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 49 MB Init Duration: 119.50 ms




好了,本篇内容就先到这里。我们已经实现:利用AWS S3的event属性,当有文件上传到S3的bucket里时,触发目标lambda function。


其实本篇我们触发的lambda function没有帮我们做任何任务,那下一篇文章,我们将重新创建一个lambda function,来达到以下目的:当有文件上传到我们的S3 bucket里时,我们的lambda function被触发,并将上传的文件重命名。



扫码关注微信公众号,都是干货哦!

本人微信号,欢迎骚扰!

~daling!点个在看呗!~


文章转载自BPShare,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论