Lambdaとは
AWS Lambdaは、イベントをトリガにクラウド上で独自のコードを実行させるサービス。EC2インスタンス等の管理が不要で負荷に合わせて自動でスケールアウトすることのできるフルマネージドのサービスである。100ミリ秒単位の処理時間で従量課金される。例えば、画像がアップロードされたタイミングでサムネイル画像を生成したり、DynamoDBへの書き込みタイミングプッシュ通知を行うなどをLambdaを用いて実現できる。イベントの発生元となるAWSリソースは、S3, Kinesis, DynamoDB, Cognitoなどで、Pull/Pushの2種類のイベントモデルが存在する。
コードはブラウザ上で直接編集するか、Zip形式のファイルをアップロードすることで編集可能である。各種ライブラリはZipファイルに含めることで実行が可能となる。
データの永続化やS3やDynamoDBを使用する。/tmpも使用できる。
LambdaのIAM権限は、誰がファンクションを実行できるかを記述したInvocation Roleと、どのようなことを実行できるかを記述したExecution Roleの2種類が存在する。
コンテクスト
実行コンテナは、タイムアウト(Timeout)した場合や、”context.done()“が呼び出された場合(Controlled termination)、全ての処理を終了した場合(Default termination)、クラッシュや”process.exit()“した場合に処理を終了する。実行コンテナは、前回の処理からある程度の時間が経過していた場合は新規で作成されるが、前回使用したものを再利用することもある。context.done()を記述することで予想外の実行を防ぐことができる。
値 | 内容 |
---|---|
context.succeed(Object result) | ファンクションおよびコールバックが正常終了 |
context.fail(Object result) | ファンクションおよびコールバックがエラー |
context.done(String message, Object result) | ファンクションが終了. messageに値が入力されているとエラー |
awsRequestId | ファンクション呼び出しID |
logStreamName | CloudWatch LogsのLogストリーム名 |
clientContext | クライアントアプリおよびデバイスの情報 |
Identity | CognitoのIdentity Provider情報 |