Amazonは先頃、S3 Object Lambdaを発表した。これは、カスタマイズされたコードを追加し、アプリケーションに返す前にS3のデータを処理する新しいサーバレス機能だ。S3 Object LambdaはS3 GETリクエストを処理し、AWS Lambda関数を使用してデータがオブジェクトストレージから取得されるときにデータを修正する。
S3 Object Lambdaは、S3オブジェクトの消費者に透過性を加えるように設計されており、クライアントは別のエンドポイントと対話したり、既存のプロダクトを変更することなく、修正されたバージョンを受け取る。
出典: https://aws.amazon.com/blogs/aws/introducing-amazon-s3-object-lambda-use-your-code-to-process-data-as-it-is-being-retrieved-from-s3/
S3 Object Lambdaアクセスポイントを介して取得されるオブジェクトは、基になるバケットに存在する必要はない。すべてのGETリクエストはLambda呼び出しによってインターセプトされ、レスポンスは既存のオブジェクトを変換したり、レスポンスを生成したりできる。AWSのチーフエバンジェリスト EMEA のDanilo Poccia氏は、写真とサムネイルを含む例で説明している:
S3 Object Lambdaを使ってオブジェクトを取得する場合、同じ名前のオブジェクトがS3バケットに存在する必要はありません。Lambda関数は、ファイル名またはHTTPヘッダーの情報を使用して、カスタムオブジェクトを生成できます。たとえば、sunset_600x400.jpgという名前の画像にS3 Object Lambdaアクセスポイントを使用するように要求した場合、Lambda関数はsunset.jpgという名前の画像を検索し、ファイル名に記述されている最大の幅と高さに合うようにサイズを変更できます。
他のユースケースの中で、Amazonは、データフォーマットの変換 (JSONからCSVへ)、データの圧縮と解凍、およびS3のオブジェクトからの機密情報の編集を提案している。S3 Object Lambdaアクセスポイントで使用してアクセスを制御したり、個人を特定できる情報を編集したりできるLambda関数のコードがGitHubで利用可能になった。
出典: https://aws.amazon.com/s3/features/object-lambda
Serverless IncのサーバレスクラウドのGMであり、ウィークリーサーバレスニュースレター Off-by-none の著者であるJeremy Daly氏は感銘を受け、ツイートしている:
これはなんという #serverless マジックなんですか? すごい。
fourTheoremのCTOであるEoin Shanaghy氏は、新機能を使用したデータの取得と変換に関する記事を書き、現在の制限を強調している: GetObjectリクエストのみをサポートし、PutObjectやListObjectsはサポートしていない。AWS CLIコマンド aws s3 はS3 Object Lambdaアクセスポイントには機能しない。彼は次のようにまとめている:
多くの新機能同様、それらが存在するからといって、それらを使用しなければならないわけではありません! 動的な動作がもたらすこの種の複雑さを加える必要はないかもしれません (...) S3の美しさは、シンプルでありながら強力なキーオブジェクトストアの設計にあります。同時に、オブジェクトをその場で生成および変換する機能に利点がある実際のユースケースはたくさんあります。S3 Object Lambdasは、AWSでの開発に非常に役立つ追加機能です。
Redditの多くのコメントは肯定的であり、サイバーセキュリティのユースケースも示唆している。ユーザは次のように書いている:
これがサイバー脅威インテリジェンスで使用されることがわかります。AWSイベントであろうと、CloudTrailログなどの他のイベントであろうと、イベントを保存し、ダウンロード時に不正スコアやGeoIPなどでオブジェクトを強化します。または、ただイベントをそのままでダウンロードします。
新しい機能はほとんどのAWSリージョンですでに利用可能だ。AWS Lambdaコンピューティングの使用状況、S3 Object Lambdaがアプリケーションに返すデータ、およびLambda関数によって呼び出されるS3リクエストに応じて課金される。