0.はじめに
この記事はAWS SAA試験勉強のための、AWS Lambdaに関する知識のまとめです。
1.AWS Lambdaの基本
AWS Lambda では、Amazon EventBridgeによってイベントスケジュールに沿ったLambda関数を設定します。
リクエストに応じてLambda関数は並列起動されるため、アプリケーション処理負荷に耐えることができます。
外部の画像識別APIを利用して構成され、処理するデータ容量も大きくないアプリケーションを構築する場合は、画像識別APIを呼び出して解析を実行するLambda関数を作成することで、EC2インスタンスなどのサーバーを用いることなく、コスト効率が良いアプリケーションを構築することが可能です。
2.Lambda関数で出来ることの例
- ファイルをjpg形式に変換する
- テキストファイルをJSONファイルに変換する
3.実行時間
Lambda関数の最長実行時間(タイムアウト)は15分までの任意の値に設定可能です。
4.他のAWSサービスとの連携
4.1.IAMロール
他のAWSリソースと連携するLambda関数を作成する際は、IAMによる実行ロールをLambda関数に設定してアクセス権限を付与することが必要です。
4.2.S3との組み合わせ
Amazon S3 イベント通知機能を使用して、S3 バケットで特定のイベントが発生したときに通知を受け取ることができる。S3イベント通知からLambda を起動して、ファイルを処理することができます。Amazon S3 は、オブジェクトを作成または削除するときに、イベントを Lambda 関数に送信します。このイベントをトリガーにしてLambda関数を実行して、Lambda関数がファイルをjpg形式に変換することができます。そして、Lambda関数は再度Amazon S3に処理結果を保存することも可能です。
4.3.API Gatewayとの組み合わせ
API GatewayをLambda関数に統合して、APIを起動することで、HTTPリクエストによってLambda関数を呼び出してDynamoDBテーブルからデータを取得する処理を実施することができます。
従来はHTTP経由でLambda関数を実行するためには、API Gateway を経由する必要がありました。しかし 関数 URL(Function URLs) という新機能が実装されたため、API Gatewayを省略してパブリックに公開するAPIや、簡易な認証実装でも差し支えの無いAPIを AWS Lambdaで実装することができるようになりました。
4.4.Snowballとの組み合わせ
Snowballではオプションとして事前にEC2 AMIやLambda関数をデバイスに設定しておくことができます。転送するデータに特殊な処理を行いたい場合や分析を行いたいようなケースで活用します。
5.アクセス
作成したLambda関数はLambda専用のセキュアなVPCに配置されます。このLambda専用のVPCからは、インターネットや、インターネットを経由してパブリックサブネット内のAWSリソースにはアクセスできますが、プライベートサブネット内のAWSリソースへはアクセスできません。
6.料金
6.1.AWS Lambdaを使用する際に、利用料金を決定する要因
- 利用時間
- ファンクションのリクエスト数
データ配信量はコストに影響しません。
無限に課金されてしまうのを防ぐため、タイムアウトがあります。デフォルトのタイムアウトは3秒で、AWS Lambdaのリクエストあたりの最大実行時間は900秒です。
EC2はインスタンスの起動時間に対して課金される一方、Lambdaは実行時間と選択したメモリの容量に対して課金されます。Lambdaはリクエストのない期間は料金が発生しないので、リソースの効率化とコスト削減が期待できるケースがあります。
7.Lambda Layer
Lambda Layerは複数のLambda関数でライブラリを共有できる仕組みであり、Lambda関数間で利用する共通機能などをLayerにまとめて、構成することができます。
8.Lambdaプロキシ統合
Amazon API Gateway Lambda プロキシ統合は、単一の API メソッドのセットアップで API を構築するシンプル、強力、高速なメカニズムです。
9.環境変数の暗号化
AWS Lambdaはデフォルトで環境変数を暗号化しますが、特定のキーで暗号化することも可能です。