Lambda
AWS Lambda サーバーレスコンピューティングサービスノート。
Features
- Serverless: サーバーの準備 や管理 なしでコードを実行
- Automatic Scaling: ワークロードに応 じて自動 スケーリング
- Pay per use: ミリ秒単位 で課金
- Performance consistency: 適切 なメモリサイズの選択 で達成
- Language support: 複数 のプログラミング言語 をサポート
Event Sources
Lambda はイベントから開始 。

Push Model Source Types
他 のサービスが直接 Lambda をトリガー。
Synchronous
Lambda はイベントソースにレスポンスを返 す。

Asynchronous
Lambda はイベントをキューに入 れ、即座 に成功 レスポンスを返 す。
非同期 呼 び出 しでエラーが発生 した場合 、Lambda は合計 **3 回 **実行 を試行
各 試行 間 に 1 分 待機
失敗 が続 く場合 、デッドレターキューに送信 するよう設定
Lambda Destination で SNS、CloudWatch 等 に結果 を送信

Pull Model Source Types
Lambda がストリームやキューを定期的 にポーリング。
Stream: メッセージの再試行 中 はポーリングを停止
Queue: 呼 び出 し失敗 時 はメッセージをキューに戻 し、成功 または期限 切 れまで再試行

Access Permissions
Lambda は他 の AWS サービスに影響 を与 えるコードを実行 できるため、セキュリティは重要 。
Invocation Permissions
Push イベントソースにのみ必要 。AWS サービスをイベントソースとして設定 時 に自動 作成 される IAM リソースポリシーで付与 。
Execution Roles
Lambda に他 の AWS サービスとの対話 権限 を付与 。
2 つの IAM リソースポリシーが必要 :
IAM Policy:
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "",
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::lambda_bucket/*",
"Condition": {
"ArnEquals": {
"lambda:SourceFunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:source_lambda"
}
}
}]
}Trust Policy:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}]
}Functions
Handler には 2 つのオブジェクト:
- Event Object: イベントソースが Lambda 関数 に情報 を渡 す
- Context Object: AWS が生成 、ランタイム環境 情報 を含 む
Pricing
合計 コスト = (GB 単位 のメモリ) × (ms 単位 の実行 時間 ) × (リクエスト数 )
- メモリ: 128MB ~ 10GB
- 追加 コスト: エフェメラルストレージ、Provisioned Concurrency
- CPU: メモリ量 により CPU パワーが決定
Configuration
設定 方法 :
- AWS Management Console
- AWS CLI
- AWS SDKs
- AWS CloudFormation
Handler Format
<package_name>.<class_name>::<function>SnapStart
- init フェーズでコードを実行
- 追加 コストなし
- 設定 : Configuration TAB → General configuration → Edit → SnapStart → PublishedVersions
Use Cases
API Gateway Integration
Serverless Cron Job
定時 タスク
Event Processing (SNS & SQS)
Pub-sub パターンサービス