第5章 サーバーレスアプリケーションの構築 サーバーレス・アプリケーションを構築する
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
ここまで、Lambda関数のプログラミング方法、パッケージングとデプロイ方法、入出力の処理方法など、Lambdaについて多くのことを話してきた。しかし、Lambdaの重要な側面として、これまであまり取り上げてこなかったのは、Lambda関数が別のシステムで書いたコードから直接呼び出されることはほとんどないということだ。 代わりに、Lambdaの大半の使い方では、別のAWSサービスであるイベントソース(トリガー)を設定し、AWSにLambda関数を呼び出してもらう。
Lambdaアプリケーションとはどのようなものか」で、その例をいくつか見てきた:
-
HTTP APIを実装するために、イベントソースとしてAWS API Gatewayを設定する。
-
ファイル処理を実装するために、イベント・ソースとしてS3を構成する。
Lambdaと直接統合するAWSサービスは数多くあり、間接的に統合するサービスもある。 つまり、Lambdaをコンピュートプラットフォームとして利用することで、膨大なタスクを実行できるサーバーレスアプリケーションを構築できるのだ。
この章では、イベントソースをLambdaに結びつける方法について見ていき、このテクニックを使って特定のタイプのアプリケーションを構築する方法を探っていく。 その過程で、Lambdaベースのアプリケーションをアーキテクト、ビルド、パッケージ、デプロイする方法について、前章で学んだ知識を基に詳しく学んでいく。
もしまだそうしていなければ、この章の例を試す前に、例のソースコードをダウンロードしておくといいだろう。
Lambdaイベントソース
先ほど学んだように、Lambdaの典型的な使用パターンは、関数をイベントソースに結びつけることだ。このセクションでは、特定の上流サービスと統合するためにLambda関数を構築する際のワークフローについて説明する。
イベント・ソースの入出力を扱うコードを書く
特定のイベントソースに反応するようにLambda関数をプログラミングする場合、一般的に最初に行いたいことは、Lambda関数が受け取るイベントの形式を理解することだ。
sam local generate-event このコマンドを実行すると、 スタブイベントを生成できるすべてのサービスがリストされる。例えば、 の出力の一部は以下のようになる:sam sam local generate-event
Commands: alexa-skills-kit alexa-smart-home apigateway batch cloudformation cloudfront cloudwatch codecommit codepipeline
サーバーレスHTTP APIの構築に興味があるとしよう。 この場合、AWS APIゲートウェイをアップストリームイベントソースとして使用する。sam local generate-event apigateway を実行すると、以下のような出力が得られる:
Commands: authorizer Generates an Amazon API Gateway Authorizer Event aws-proxy Generates an Amazon API ...