0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Lambda関数を使用してECRの最新イメージをECSにデプロイする手順

Last updated at Posted at 2024-10-21

手順

  1. Lambda関数の作成:
import boto3  # AWS SDKをインポート
import os  # 環境変数にアクセスするためのモジュール

def lambda_handler(event, context):
    # boto3を使用してECSクライアントを初期化
    ecs = boto3.client('ecs')
    
    # 環境変数からECSクラスター名とサービス名を取得
    cluster_name = os.environ['ECS_CLUSTER_NAME']
    service_name = os.environ['ECS_SERVICE_NAME']
    
    # ECSサービスを更新
    response = ecs.update_service(
        cluster=cluster_name,  # 更新するECSクラスターを指定
        service=service_name,  # 更新するECSサービスを指定
        forceNewDeployment=True  # 強制的に新しいデプロイメントを開始
    )
    
    # Lambda関数の実行結果を返す
    return {
        'statusCode': 200,  # HTTP成功ステータスコード
        'body': f"Service {service_name} in cluster {cluster_name} updated successfully"  # 成功メッセージ
    }
  1. Lambda関数の設定:

    • ランタイム: Python 3.8以上
    • 環境変数:
      • ECS_CLUSTER_NAME: ECSクラスター名
      • ECS_SERVICE_NAME: ECSサービス名
  2. IAM実行ロールの作成:

    • IAMコンソールで新しいロールを作成
    • 信頼関係にlambda.amazonaws.comを追加
    • 以下のポリシーをアタッチ:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:UpdateService"
            ],
            "Resource": "arn:aws:ecs:*:*:service/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "arn:aws:logs:*:*:*"
        }
    ]
}
  1. Lambda関数にIAMロールをアタッチ

  2. ECRイメージプッシュ時のトリガー設定:

    • ECRリポジトリで「イメージプッシュ」イベントルールを作成
    • ターゲットとして作成したLambda関数を選択

これらの手順を実行することで、新しいイメージがECRにプッシュされるたびに、Lambda関数が自動的に呼び出され、ECSサービスが更新されます。

注意点:

  • 環境変数やIAM権限は、必要最小限に設定してください。
  • 本番環境では、デプロイ前にテストやバリデーションを行うステップを追加することを検討してください。
  • エラーハンドリングやリトライロジックを実装して、デプロイの信頼性を向上させることをおすすめします。

この方法により、ECRからECSへの自動デプロイを実現できます。必要に応じて、さらなるカスタマイズや機能追加を行うことができます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?