[AWS]LambdaとEventBridgeを使用してECSサービスを更新する予定


⏰ 計画タスク
予め定められた
  • の十分な予見可能な負荷を繰り上げるために、ジョブ予約機能が追加された.
  • 大学のポータルサイトは6ヵ月ごとに受講申請を行い、この時期に負荷がかかるものとみられる.
  • したがって、負荷に備えてECSを一定の時点で更新するように構成されている.
  • の既存アーキテクチャでは、WEBとWASのECSクラスタ内にそれぞれ2つのコンテナがある.選択期間中は,クラスタごとのコンテナ数を5個に変更し,接続率が高くても選択に負担をかけない構成とした.
  •  
    🐑 AWS Lambda
  • AWS Ramdaは、サーバを設定せずに直接コードを実行してアプリケーションを実行できるサーバリースサービスです.
  • AWS Ramdaはコードを記述し,ECSサービスを更新することでクラスタ内のタスク数を増やす.
  • import boto3
    import json
    
    def lambda_handler(event, context):
        
        springClusterName = event['springCluster']
        springServiceName = event['springService']
        nginxClusterName = event['nginxCluster']
        nginxServiceName = event['nginxService']
        
        client = boto3.client('ecs')
        
        response1 = client.update_service(
    													cluster=springClusterName, 
    													service=springServiceName, 
    													desiredCount = 5)
        response2 = client.update_service(
    													cluster=nginxClusterName, 
    													service=nginxServiceName, 
    													desiredCount = 5)
        
    		response = response1 + response2
        print(response)
     
    🌉 EventBridge
  • EventBridgeはAWSのサーバリースサービスであり、イベント駆動アーキテクチャの構成を支援します.AWSサービスだけでなく、SaaSサービス、パーソナルアプリケーションから送信されたイベント/データも受信し、必要なSNSやLambdaなどのターゲットに送信します.
  • このプロジェクトはEventBridgeを使用してLambdaで設定をトリガした時間にLambdaコードを実行し、ECSを更新するように構成されています.
  • は6ヶ月ごとにUTC 00:00(韓国時間09:00)にトリガーされますcron(0 0 20 2/6 ? *)


  •