はじめに
AWS DVA取得に向けた勉強の一環です。
新たな学びがあったら随時追記していきます。
正確性は保証しませんので参考程度に見てください。
概要
- サーバーレスコンピューティン
- イベント駆動型アーキテクチャ
- スケーラビリティと効率性の向上
- 関数実行中のみ課金
実行環境
- 対応ランタイム
- Node.js、Python、Java、Go、Ruby、C#
- Runtime API: 関数の作成にその他のプログラミング言語を使用できるようにするためのもの
- デプロイ方法
- AWS Management Console
- AWS CLI
- AWS SDK
- 自動スケーリング機能
- リクエストに応じたリソースの割り当て
ライフサイクル
- 初期化
- デフォルトで10秒以内
- 超過したら再実行される
- エラー発生時
- 再起動してから再実行する
同期/非同期呼び出し
同期呼び出し
- イベントを生成するサービスは、関数からのレスポンスを待機する
- サービスはエラー戦略(エラー発生時に再試行するかどうかなど)を制御する
非同期呼び出し
- 関数を実行する前にイベントをキューに入れ、イベントを生成したサービスにすぐに成功レスポンスを送信する
- イベント処理後はレスポンスを返さない
各サービスからの呼び出し方法
サービスの同期・非同期処理
- 同期で動作するサービス
- API Gateway
- Cognito
- Connect
- Elastic Load Balancing (Application Load Balancer)
- 非同期で動作するサービス
- SES
- SNS
- S3
- Lambda
- EventBridge(イベントバス)
- CloudFormation
- CloudWatch Logs
- CodeCommit
- CodePipeline
- Config
- 同期または非同期で動作するサービス
- EventBridge(パイプとスケジュール)
Lambda@Edge
- CloudFrontのエッジロケーションからコードを実行する
- ユーザーに近い場所で実行できるため、高速なコンテンツ配信が可能になる
Provisioned Concurrency プロビジョニングされた同時実行性
- 2桁ミリ秒以内に応答できる状態を維持する機能
- レイテンシの影響を受けやすいサービスで使用する
- 準備状態にしておく実行環境の数を指定できる
Lambdaレイヤー
- ライブラリ・依存関係の管理
- 複数のLambda関数間でライブラリ・依存関係を再利用する
- 更新やメンテナンスが容易
- ライブラリ、カスタムランタイム、データ、設定ファイルを含む.zipファイルアーカイブ
- 各関数最大5つを設定可能
バージョニングとエイリアス
- 関数のバージョン管理
- デプロイすると自動的に新たなバージョンが作成される
- 旧バージョンに戻すことも可能
- 徐々にトラフィックを移行することもできる
- エイリアスの使用
- 特定のバージョンに名前を付ける機能
- 環境ごとの管理(例: 「dev」「stg」「prod」)
クォータ
- 同時実行数: リージョンあたりでデフォルト1000
- AWSサポートにクォータ引き上げをリクエスト可能
- 関数のタイムアウト: デフォルト3秒、リクエストあたり最大15分(900秒)
- メモリの最大値: デフォルト128MB、最大10GB
利用シーン
- S3にファイルへのアップロードをトリガーに関数実行
- 定期的なバッチ処理をサーバーレスで実行