type
status
date
slug
summary
tags
category
icon
password
理論
Provisioned Concurrency
プロビジョンドコンカレンシー (Provisioned Concurrency) は、AWS Lambdaの機能の1つで、Lambda関数が処理するリクエストの待機時間を短縮し、スケーラビリティを向上させるための設定です。
具体的には、プロビジョンドコンカレンシーを使用すると、Lambda関数が呼び出される前に、指定した数のインスタンス(コンカレンシー)を予め起動しておくことができます。これにより、関数の初回実行(コールドスタート)を避けることができ、リクエストが来た時にすぐに処理を開始できるようになります。
どういう時に役立つか
- 高い可用性が求められる場合や、即時に応答が必要なシステムに有効です。
- 特に、Lambda関数の初回起動時に発生するコールドスタート(処理開始までにかかる遅延)を減らしたい場合に使用します。
使い方
- プロビジョンドコンカレンシーの設定では、Lambda関数の指定された数のインスタンスを常に実行しておくように設定します。
- これにより、関数がトラフィックの増加に素早く対応できるようになり、急なスパイクにも迅速に対応できるようになります。
メリット
- 低遅延: コールドスタートの遅延を削減できる。
- 安定したパフォーマンス: リクエストに対してすぐに処理を開始できる。
- スケーラビリティ: 予測可能なトラフィックパターンに基づいてスケールできる。
デメリット
- コスト: プロビジョンドコンカレンシーを使用することで、予めインスタンスを確保するため、通常のLambda実行時よりも追加費用がかかる可能性があります。
AWS Lambdaのタイムアウト制限、。
- AWS Lambdaのタイムアウト制限: Lambdaは最大15分までしか実行できず、大きなファイルや長時間処理が必要な場合、タイムアウトエラーが発生します。
- 代替アーキテクチャ:
- AWS Fargate + ECS: 長時間かかる処理をサーバーレスで実行できるコンテナサービス。インフラ管理が不要で、大規模な処理を効率的に行えます。
- Amazon S3との統合: 新しいファイルがS3にアップロードされた際にECSタスクをトリガーして処理を実行できます。
これにより、Lambdaのタイムアウトを回避し、大規模な画像処理を安定的に実行できます。
実践
略
一問道場
あるビデオ処理会社が、Amazon S3バケットから画像をダウンロードし、画像を処理して、変換された画像を別のS3バケットに保存し、画像に関するメタデータをAmazon DynamoDBテーブルに更新するアプリケーションを持っています。このアプリケーションはNode.jsで書かれており、AWS Lambda関数を使用して実行されます。Lambda関数は、新しい画像がAmazon S3にアップロードされると起動されます。
アプリケーションはしばらく問題なく動作していましたが、画像のサイズが大きくなり、Lambda関数がタイムアウトエラーで頻繁に失敗するようになりました。関数のタイムアウトは最大値に設定されています。ソリューションアーキテクトは、呼び出し失敗を防ぐためにアプリケーションのアーキテクチャをリファクタリングする必要があります。会社は基盤となるインフラを管理したくありません。
この要件を満たすために、ソリューションアーキテクトが取るべき手順の組み合わせはどれですか?(2つ選んでください)
選択肢:
A. アプリケーションのデプロイメントを変更して、アプリケーションコードを含むDockerイメージを作成し、そのイメージをAmazon Elastic Container Registry (Amazon ECR)に公開する。
B. 新しいAmazon Elastic Container Service (Amazon ECS)タスク定義を作成し、互換性タイプをAWS Fargateに設定する。タスク定義が新しいイメージをAmazon Elastic Container Registry (Amazon ECR)から使用するように設定し、新しいファイルがAmazon S3に到着したときにLambda関数がECSタスクを呼び出すように調整する。
C. AWS Step Functionsのステートマシンを作成し、Parallelステートを使ってLambda関数を呼び出す。Lambda関数のプロビジョンドコンカレンシーを増加させる。
D. 新しいAmazon Elastic Container Service (Amazon ECS)タスク定義を作成し、互換性タイプをAmazon EC2に設定する。タスク定義が新しいイメージをAmazon Elastic Container Registry (Amazon ECR)から使用するように設定し、新しいファイルがAmazon S3に到着したときにLambda関数がECSタスクを呼び出すように調整する。
E. アプリケーションを変更して、画像をAmazon Elastic File System (Amazon EFS)に保存し、メタデータをAmazon RDS DBインスタンスに保存する。Lambda関数を調整してEFSファイル共有をマウントする。
解説
問題の要点:
- Lambda関数がタイムアウトエラーで失敗する。
- 画像の処理が大きくなり、Lambda関数のタイムアウト制限を超える。
- アプリケーションはインフラ管理を最小限にしたい。
正しい解答は A と B です。
A. アプリケーションのデプロイメントを変更して、アプリケーションコードを含むDockerイメージを作成し、そのイメージをAmazon Elastic Container Registry (Amazon ECR)に公開する。
- 画像処理が重くなり、Lambdaがタイムアウトしているので、Dockerイメージ を作成して Amazon ECR に公開し、アプリケーションコードをコンテナ化することで、インフラの管理を最小限にしつつ、処理を分散できます。これにより、Lambda関数のタイムアウトを回避するための対応が可能になります。
B. 新しいAmazon Elastic Container Service (Amazon ECS)タスク定義を作成し、互換性タイプをAWS Fargateに設定する。タスク定義が新しいイメージをAmazon Elastic Container Registry (Amazon ECR)から使用するように設定し、新しいファイルがAmazon S3に到着したときにLambda関数がECSタスクを呼び出すように調整する。
- AWS Fargate は、サーバーレスでコンテナを実行できるサービスです。これにより、画像処理を ECSタスク にオフロードすることができ、Lambdaのタイムアウト制限を回避できます。Fargateを使用すると、インフラ管理なしでスケーラブルなコンテナ環境を提供できます。
まとめ:
- A と B の組み合わせが最適です。Dockerイメージを作成し、ECSで処理をオフロードすることで、Lambda関数のタイムアウト問題を解決し、インフラ管理を最小限に抑えることができます。
- 作者:みなみ
- 链接:https://tangly1024.com/資格勉強/16ad7ae8-88e2-80eb-afd6-f9bbefa8523c
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章