このデジタルバッジ取得のために、AWS Skill Builderのこのコースを学習している記録
自分のスキルレベルは以下。
- SAAは取得
- 4年前ぐらい
- 実務利用なし
- 趣味レベルではあり
AWS Lambda Foundations (Japanese) 日本語実写版
アクセス許可の概要
- IAMリソースポリシー・関数ポリシー
- Lambdaにアクセスするための許可
- IAM実行ロールポリシー
- Lambdaからアクセスするための許可
- NW周りの注意点
- Lambdaのある場所
- AWSの所有するVPCにある
- そのため、自分のVPC内にアクセスするためにENIの許可を実行ロールに付与する必要がある。
- 一つのENIにしかアクセスすることしかできない。
- そのため、複数のVPCにアクセスするようにNATする必要あり。
- VPC側にも留意点あり
- オートスケールさせるために、IPアドレス空間を確保するとか。
- Lambdaのある場所
参考資料
仕組み
-
イベントソース
- トリガーする呼び出し元
- データストア
- エンドポイント
- リポジトリ
- メッセージサービス
- イベント
- プッシュ型
- 同期プッシュイベント
- 非同期プッシュイベント
- ポーリング型
- ストリームベース
- シーケンス処理を重視してるので、以下終わるまで先に進まない。
- エラー解消される
- 有効期限切れる。
- シーケンス処理を重視してるので、以下終わるまで先に進まない。
- 非ストリームベース
- メッセージの順序性が保証されるわけではない。
- ストリームベース
- プッシュ型
- トリガーする呼び出し元
-
ライフサイクル
-
動作の流れ
- 呼び出し
- コンテナ起動
- ブートストラップ
- この辺までがコールドスタート
- コード実行
- ウォームスタート状態
- リクエストが来るたび即実行
- リクエストがないとコンテナ停止
- コールドスタートスタートに戻る
-
常にウォームスタートにしたい場合
- プロビジョニングされた同時実行を有効化する
- 留意事項も多数あり
- 関数初期化されない等。
-
AWS X-rayで分析することも可能
-
-
あて先指定
- 成功時・失敗時などであて先を変更できる
参考資料
関数の作成
- プログラミングモデル・ベストプラクティス
- 設計
- ハンドラメソッド
- 呼び出すために必要
- Handler(event,context)method
- イベントオブジェクト
- コンテキストオブジェクト
- 呼び出すために必要
- 関数をステートレスとする
- /tmpのキャッシュはコールドスタートで消失
- 別の場所に保存しておく
- DynamoDBは状態情報
- ElastiCacheは関数をVPCに配置する場合
- S3は速度が重要でない場合
- 必要なもののみを含める
- 起動時間に影響する
- ハンドラメソッド
- コード記述
- ログ記録ステートメントを含める
- CloudWatcheに書き込める
- 結果情報を含める
- 関数では、関数の実行結果に関する情報を Lambda に渡す必要がある
- 環境変数を利用する
- 再帰的なコードは回避する
- ログ記録ステートメントを含める
- 設計
- コード作成
- マネジメントコンソール
- カスタムライブラリのない単純なもの。
- 記載して保存すると即実行可能な関数となるため、無効化をしておく
- Lambdaコンソールにアップロード
- SAM CLIを使ってローカルテスト・デバッグ可能
- 10MBの制限あり
- S3経由でアップロード
- 10MB制限なし。
- CI/CD管理されてる場合。
- マネジメントコンソール
参考資料
関数の設定
- メモリとタイムアウト
- メモリの設定をすると、比例してCPUが利用される
- 実行時間も価格に影響するため、メモリ・CPUを大きくしたほうがコスト削減される場合もある。
- Power Tuningを使用しての最適化
- 同時実行とスケーリング
- デフォルトはアカウントレベルで1000
- サポートに引き上げリクエストで増やせる
- 関数単位で予約・制限設定することもできる
- 同時実行予約されていない枠が最低100保持される
- 同時実行バーストの管理
- 同時実行の即時増加量、という設定もある
- リージョンによって異なる
- 同時実行の即時増加量<アカウントの同時実行の上限の場合、1分ずつ評価して、不足していると500ずつ同時実行数を増やす
- 関数に上限設定した場合はその設定に従う
- 同時実行の即時増加量、という設定もある
- デフォルトはアカウントレベルで1000
- 同時実行の予測
- 非ポーリングイベント
- ストリームポーリングイベント
- リクエスト頻度=同時実行数 (シャード数)÷関数の平均実行時間
- 非ストリームポーリングイベント(SQS)
- 同時実行に関する CloudWatch のメトリクス
- ConcurrentExexcutions
- UnreservedConcurrentExecutions:
- プロビジョニングされた同時実行
- 常にウォームスタートすることができる。
参考資料
サーバレスアプリケーションのデプロイとテスト
- デプロイの違い
- CloudFormation テンプレートを使ってデプロイ
- アカウント含めて必要
- ローカルテストデバッグができない
- SAM CLIを利用
- SAM
- SAMテンプレートからCloudFormationテンプレートを作ってくれる
- SAM CLI
- Dockerをローカル起動し、テストできる
- バージョンニング・エイリアス
- バージョンにARNの$LATESTで指定可能
- エイリアスで新旧のバージョンを指定することができる
- 重みづけ・時間をずらしてデプロイすることで影響を限定する
- LambdaはCodeDeployと統合されている。
参考資料
モニタリングとトラブルシュート
- CloudWatch
- モニタリング
- デッドレターキュー
- Lambdaコンソールから設定
- 失敗を分析
- SNS トピック
- SQS キュー
- CloudTrail
- 分析・監査
- X-Ray
- パフォーマンスチューニング
- APIコールの呼び出しフローの特定
まとめ・その他。
サービス概要からスタートしたので、初心者も安心。
以下みたいな資料の説明がめっちゃ見やすかったです。
動画・資料のどちらかでしか説明してない内容もあるので、その点は注意。
画像ファイルとしても保存することもできるので、スクラップしてもいいかも。