Lambda

AWS Lambda サーバーレスコンピューティングサービスノート。

Features

  • Serverless: サーバーの準備(じゅんび)管理(かんり) なしでコードを実行(じっこう)
  • Automatic Scaling: ワークロードに(おう) じて自動(じどう) スケーリング
  • Pay per use: ミリ秒単位(びょうたんい)課金(かきん)
  • Performance consistency: 適切(てきせつ) なメモリサイズの選択(せんたく)達成(たっせい)
  • Language support: 複数(ふくすう) のプログラミング言語(げんご) をサポート

Event Sources

Lambda はイベントから開始(かいし)

Lambda Event Sources

Push Model Source Types

(ほか) のサービスが直接(ちょくせつ) Lambda をトリガー。

Synchronous

Lambda はイベントソースにレスポンスを(かえ) す。

Lambda Push Model - Synchronous

Asynchronous

Lambda はイベントをキューに() れ、即座(そくざ)成功(せいこう) レスポンスを(かえ) す。

  • 非同期(ひどうき) ()() しでエラーが発生(はっせい) した場合(ばあい) 、Lambda は合計(ごうけい) **3 (かい) **実行(じっこう)試行(しこう)

  • (かく) 試行(しこう) (かん) に 1 (ぷん) 待機(たいき)

  • 失敗(しっぱい)(つづ)場合(ばあい) 、デッドレターキューに送信(そうしん) するよう設定(せってい)

  • Lambda Destination で SNS、CloudWatch (など)結果(けっか)送信(そうしん)

Lambda Push Model - Asynchronous

Pull Model Source Types

Lambda がストリームやキューを定期的(ていきてき) にポーリング。

  • Stream: メッセージの再試行(さいしこう) (ちゅう) はポーリングを停止(ていし)

  • Queue: ()()失敗(しっぱい) () はメッセージをキューに(もど) し、成功(せいこう) または期限(きげん) () れまで再試行(さいしこう)

Lambda Pull Model

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

Lambda - API Gateway Integration

Serverless Cron Job

定時(ていじ) タスク

Lambda - Serverless Cron Job

Event Processing (SNS & SQS)

Pub-sub パターンサービス

Lambda - Event Processing

File Upload Processing with S3

Lambda - S3 File Processing

Step Function Workflow

Lambda - Step Functions