亚马逊发布 S3 Object Lambda:一个新的 Serverless 功能

亚马逊最近公布了 S3 Object Lambda,这是一个新的 Serverless(无服务器)功能,可以在将数据返回给应用程序之前,从 S3 中添加自定义代码和处理数据。S3 Object Lambda 与 S3 GET请求一起工作,并在数据从对象存储中检索时使用 AWS Lambda 函数来修改数据。

S3 Object Lambda 旨在为 S3 Object 的消费者增加透明度,客户端无需与另一个终端交互,也无需更改现有产品就能收到修改后的版本。

https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/44c5a3d2aaf24dd1a1c0c28002388709~tplv-k3u1fbpfcp-zoom-1.image

通过 S3 对象 Lambda 访问点检索到的对象不一定存在于底层 bucket 中:每个 GET 请求都会被 Lambda 调用拦截,响应可以转换现有的对象或生成响应。 AWS 欧洲、中东和非洲地区首席布道师Danilo Poccia用一个涉及图片和缩略图的例子来解释它。

当使用 S3 Object Lambda 检索一个对象时 不需要在S3桶中存在一个同名的对象。Lambda 函数可以使用文件名或 HTTP 头文件中的信息来生成一个自定义对象。例如,如果您要求使用 S3 Object Lambda 访问点来访问名称为 sunset_600x400.jpg 的图像,Lambda 函数可以寻找名为 sunset.jpg 的图像,并调整其大小以适应文件名中描述的最大宽度和高度。

在其他用例中,Amazon 建议转换数据格式(JSON 到 CSV),压缩和解压数据,以及从 S3 中的对象中删改敏感信息。在 GitHub上提供了一个 Lambda 函数的代码,该函数可以与 S3 Object Lambda 访问点一起使用,以控制访问或改编个人身份信息。

https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7992da08ecba48f486ac076a517c3ef0~tplv-k3u1fbpfcp-zoom-1.image

Serverless Inc 的无服务器云总经理、Serverless 周报Off-by-none的作者Jeremy Daly 对此印象深刻,并微博

这是什么样的 Serverless 魔法?太神奇了

fourTheorem 的CTO Eoin Shanaghy写了一篇文章,讲述了如何使用新功能获取和转换数据,同时强调了当前的局限性:它只支持GetObject请求--不支持 PutObject 或 ListObjects--AWS CLI命令 aws s3 不能与 S3 Object Lambda 访问点一起使用。他总结道。

与许多新功能一样,它们在那里并不意味着你必须使用它们! 我们可能不需要这种动态行为带来的额外复杂性(……)S3 的魅力在于其简单而强大的关键对象存储设计。同时,有很多真实的用例可以利用这种快速生成和转换对象的能力。S3 对象 Lambdas 对于 AWS 上的开发来说是一个非常有价值的补充。

Reddit上的许多评论都是积极的,建议以及网络安全方面的用例。一个用户写道:“ 我可以看到这被用于网络威胁情报。存储一个事件,不管是AWS事件还是其他事件,比如CloudTrail日志,并在下载时用欺诈分数、GeoIP等丰富对象。或者直接下载事件的原始数据。”

这个新功能已经在大多数AWS地区提供,根据 AWS Lambda 计算使用情况、S3 Object Lambda 返回给应用的数据和Lambda函数调用的S3请求,收费价格

本文翻译自:Amazon Announces S3 Object Lambda

作者:Renato Losio