AWS Lambda - kin-kin/memo GitHub Wiki
AWS
AWS Lambda
- FaaS
- Lambda関数が実行された時間だけ課金
- 自動的にスケーリングするため、スパイクにも対応
- 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
- キューベース
- Lambda関数
- インラインエディタまたはzipファイルをアップロード
- 外部ライブラリを利用する場合はzipファイル
- handlerはエントリポイントとし、ロジックは別関数にする
- handlerの外に定義したものは再利用時にシェアされる
- 対応言語以外のカスタムランタイムを使用可能
- ステートレス(メモリを介してデータを渡すことはできない、完結型、並行に動いても問題がないアルゴリズムが必要
- CPUは設定できないため、メモリをチューニングする
- タイムアウト時間は最長で15分
- 同時実行数のデフォルトは同一アカウントの同一リージョン内につき1000
- 同時実行数が上限に達するとスロットリングされ実行されない
- スロットリングされたリクエストの処理方法はイベントソースのタイプによって異なる
- リトライ動作はイベントソースのタイプによって異なる
- 環境変数で設定情報を定義可能
- Lambda関数ポリシー(Lambda関数へのアクセス権限)とIAMロール(Lambda関数からリソースへのアクセス権限)を設定
- $LATESTと1から順に付与されるスナップショットでバージョンを管理
- バージョンごとにARNを持つ
- バージョンにエイリアスを付けることも可能
- AWS SAMを利用すればローカル環境でデバッグ可能
- Lambda関数にはパブリックIPアドレスを設定できない
- レイヤー
- 複数のLambda関数で用いられる共通機能をレイヤーとして登録
- 1つのLambda関数につき、レイヤーを5つまで指定することができる
References