AWS Lambda - kin-kin/memo GitHub Wiki

AWS

AWS Lambda

  • FaaS
    • Lambda関数が実行された時間だけ課金
      • 100万コール/月は無料
    • 自動的にスケーリングするため、スパイクにも対応
    • Amazon Echoの命令はAWS Lambdaで動作している
      • AmazonでEcho環境を作った後で、AWSのLambdaと紐づける
    • VPCにLambdaを入れると起動が遅いためなるべく使用しない
  • イベントソース
    • プッシュ型
      • 同期呼び出し
        • ALB、API Gateway、Cognito、CloudFront、Kinesis Data Firehose、Alexa、Lex
      • 非同期呼び出し
        • S3、SNS、SES、CloudWatch Events、CloudWatch Logs、Cloud Formation、CodeCommit、AWS Config、AWS IoTボタン
    • プル型
      • ストリームベース
        • DynamoDB、Kinesis Data Streams
      • キューベース
        • SQS
  • Lambda関数
    • インラインエディタまたはzipファイルをアップロード
      • 外部ライブラリを利用する場合はzipファイル
        • Lambda関数のコードはルートに配置
      • handlerはエントリポイントとし、ロジックは別関数にする
        • テストがしやすいように
      • handlerの外に定義したものは再利用時にシェアされる
    • 対応言語以外のカスタムランタイムを使用可能
    • ステートレス(メモリを介してデータを渡すことはできない、完結型、並行に動いても問題がないアルゴリズムが必要
    • CPUは設定できないため、メモリをチューニングする
      • メモリに比例するCPUが割り当てられる
    • タイムアウト時間は最長で15分
    • 同時実行数のデフォルトは同一アカウントの同一リージョン内につき1000
      • 同時実行数が上限に達するとスロットリングされ実行されない
        • スロットリングされたリクエストの処理方法はイベントソースのタイプによって異なる
    • リトライ動作はイベントソースのタイプによって異なる
    • 環境変数で設定情報を定義可能
    • Lambda関数ポリシー(Lambda関数へのアクセス権限)とIAMロール(Lambda関数からリソースへのアクセス権限)を設定
    • $LATESTと1から順に付与されるスナップショットでバージョンを管理
      • バージョンごとにARNを持つ
      • バージョンにエイリアスを付けることも可能
    • AWS SAMを利用すればローカル環境でデバッグ可能
    • Lambda関数にはパブリックIPアドレスを設定できない
  • レイヤー
    • 複数のLambda関数で用いられる共通機能をレイヤーとして登録
    • 1つのLambda関数につき、レイヤーを5つまで指定することができる

References