Lambda
サーバーレス。
FaaS(Functions as a Service)
AWS Lambdaはサーバーがなくても、コードを実行することで効率的なアーキテクチャを実現できるサービス。
特徴
・実行基盤は全てAWSが管理
・AWSサービスと連携させることで簡単にイベントドリブンなアプリケーションを実装可能
・100ミリ秒単位でコード実行時間に対しての課金でありコスト効率が非常に高い
・オートスケール
・Python/Java/Node.js/C#/Go/Rubyで書かれたコードを実行
仕組み
イベントの発生がトリガーとして、Lambdaコートが実行される。
利用モデル
Pushモデル
・AWSサービスとカスタムイベントが直接実行することによって、Lambdaへイベント通知して、コードを実行する。
※コード実行の順序は保証されない
Pullモデル
・LambdaはDynamoDBとKinesisなどのデータ処理へポーリングを行い、コードを実行する。
※一度ストリームに入れることによって、イベントの順序を保つことができる
パーミッション
Pullモデルの場合、ストリーム側 (invocation role) と、実行側 (excution role) の両方のパーミッションが必要。
◯Execution:
・LambdaファンクションがAWSリソースにどういったアクションを実施させるかを決定する。
・指定されたIAMロールに沿ってAWSのリソースへのアクセスが許可される。
◯Invocation:
・Lambdaファンクションをどのリソースが実行できるかを決定する。