最近、FargateとAurora Serverlessを使用して小さなウェブアプリケーションをAWSに移行しました。アプリケーションはあまりトラフィックを取得しないので、私の目標は、誰も使用していないときにコストを節約することです。 Aurora Serverlessは、これをDB側で自動的に行うようです。
ただし、Fargateサービスをゼロにスケーリングする方法に関するリソースを見つけるのに苦労しています。
その前にALBがあり、ALBリクエストカウントをスケーリングに使用できることを知っています...理想的には、たとえば10分間の平均でリクエストが0の場合、サービスはタスクをゼロにスケールダウンします。その後、リクエストが届くと、サービスの1つのタスクのスケールアップがトリガーされます。
正確にどのように機能するかわかりません。正常なALBターゲットがない場合、ALBは503エラーを返すため、訪問者はWebサイトではなくエラーページを表示します。これによりmayがFargateコンテナの起動をトリガーしますが、多くの場合数十秒、場合によっては1分以上かかることもあります。コンテナが稼働するまでに、ビジターはおそらくなくなってしまいます。
アイドルコストがゼロの真にサーバーレスなWebサイトが必要な場合は、APIを使用して実装する必要があります。
このアーキテクチャは、アイドル状態のときは費用がかからず、訪問者に即座に応答します。
更新:Fargateサービスを0タスクに縮小する場合は、サービスのDesiredCount
を0
に設定することで確実に実行できます。 。それは、例えば行うことができます。 aws-cliを通じて:
~ $ aws ecs update-service ... --service xyz --desired-count 0
これをDevで実行する場合は、手動で、またはcronジョブから、またはからUpdateServiceを実行することをお勧めしますスケジュールされたLambda関数。どちらの方法でも、タスクを夜に0
に設定し、翌営業日に1
に戻すことができます。これは、非常に低いトラフィックではそれほど信頼できないAutoScalingに依存するよりも簡単です。
それが役に立てば幸い:)
上記の応答に合うようにアプリを書き直すのが選択肢ではなく、費用もかからない場合は、GCP CloudRunを調べることができます
CloudRunは、GCPによって開発されたサーバーレスコンテナです。 Webサイトをコンテナーにパックすると、CloudRunはリクエストと起動時にCPU使用量ごとにのみ課金します。最小限のコストでアプリを実行できる、本当に優れた無料枠もあります。
したがって、最小限のコストでAmazon AuroraとGCP CloudRunを組み合わせることができ、アプリを書き直す必要はありません。