💬

AWS Lambdaとは

2021/02/07に公開

はじめに

AWS Lambdaをまとめてみた。

概要

■AWS Lambdaとは
■できること
■AWS Lambda使用例
■他のサービスとの連携

をまとめてみた(>_<)

AWS Lambdaとは

AWS Lambda は、サーバーの作成や管理の必要なしにコードを実行できるサービスだ。
https://aws.amazon.com/jp/lambda/features/

できること

・Amazon S3や Amazon DynamoDB内のデータの変更などのイベントに応答してサーバーレスにコードの実行ができる。
・サーバーレスになることにより、OS環境、プログラムの実行環境、また各サービスの監視するためのサーバ、監視し続けるプログラムの設定などの環境構築が不要になり、実行プログラムのみの用意で管理することができる。
・Lambdaはリクエストがあったらその時間だけが課金対象なのでコスト削減になる。
・AWS SDK を使用して作成された API を使用してコードを呼び出すこともできる。
・AWS LambdaによりAWSを自動で管理して運用することにより自社独自のバックエンドサービスを作成することができる。
・関数にイベントを送信するには、Lambda API を使用してイベントを呼び出すか、AWS サービスまたはリソースに設定して呼び出すことができる。
・ライフサイクルイベントに応答して関数を実行する。
・HTTP リクエストに応答して関数を実行する。など

AWS Lambda使用例

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/applications-usecases.html
■ファイル処理
ユーザーがアップロードした写真をサムネイルバージョンで作成し、ユーザーのプロフィールページに表する。
Amazon S3 で、オブジェクト作成イベントを発行して Lambda 関数を実行する。S3 バケットから写真オブジェクトを読み込み、サムネイルバージョンを作成して、それを別の S3 バケットに保存するプログラムを作成する。

■データと分析
写真データを集約してメトリクス(集計した値)を取得したい。
分析アプリケーションを構築して、写真データを DynamoDBに保存する。
DBテーブル内の項目に変更があった場合、DynamoDB ストリーム(データを連続的に処理する仕組み)の項目の更新イベントを発行しイベントデータとして、項目、イベント名 (挿入、更新、削除など)、その他関連する詳細情報を設定する。そしてこれらの写真データを集約することでカスタムメトリクスを取得する関数を設定する。

■ウェブサイト
ウェブサイトを作成してクライアントからのリクエストをトリガーにプログラムを実行したいとき。
Amazon API Gateway を HTTPのエンドポイントとして設定することにより、HTTP 経由で Lambda 関数を呼び出せるように設定する。これにより、クライアントが API を呼び出し、API Gateway がリクエストを Lambda にルーティングできるようになりプログラムを実行することができる。

■モバイルアプリケーション
モバイルアプリケーション内でクライアントのクリックをトリガーにプログラムを実行したいとき。
モバイルアプリケーションでイベントを処理するための Lambda 関数を作成する。

など。

■他のサービスとの連携

AWS Lambda では、イベントの設定として、他のAWSサービスと連携することができ、
様々な関数の実行形式がある。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-services.html
Lambda自身がイベントを読み取れるサービス
Lambdaが他のサービスのデータを読み込み、イベントを作成して、関数を実行する。
Amazon DynamoDB
Amazon Kinesis
Amazon Managed Streaming for Apache Kafka
Amazon Simple Queue Service
Lambda 関数を同期的に実行するサービス
「関数を同期的に実行するサービス」では、Lambda関数を「関数を同期的に実行するサービス」が直接実行する。
Lambda関数のポリシーで他のサービスのアクセス許可を設定してから、イベントを生成し、関数を呼び出すように「関数を同期的に実行するサービス」でLambda関数を実行できるよう設定する。
Elastic Load Balancing (Application Load Balancer)
Amazon Cognito
Amazon Lex
Amazon Alexa
Amazon API Gateway
Amazon CloudFront (Lambda@Edge)
Amazon Kinesis Data Firehose
Amazon Simple Storage Service Batch

Lambda 関数を非同期的に実行するサービス
「非同期対応で実行するサービス」の場合、「非同期対応で実行するサービス」側にデータを受け入れる準備ができているか分からないのでイベント発生時、レスポンスを「非同期対応で実行するサービス」側に送信するが、エラーが発生した場合再送信される方式で関数が実行される。
Amazon Simple Storage Service
Amazon Simple Notification Service
Amazon Simple Email Service
AWS CloudFormation
Amazon CloudWatch Logs
Amazon CloudWatch Events
AWS CodeCommit
AWS Config
AWS IoT
AWS IoT Events
AWS CodePipeline

他の方法で Lambda と統合されるサービス
Amazon Elastic File System
AWS X-Ray

などがある。

まとめ

らむだ!

Discussion