無料でビルドを開始
CircleCI.comアカデミーブログコミュニティサポート

AWS ECR/ECS へのデプロイ

11 months ago1 min read
クラウド
Server v4.x
Server v3.x
このページの内容

ここでは、CircleCI を使用して、Amazon Elastic Container Registry (ECR) から Amazon Elastic Container Service (ECS) にデプロイする方法を説明します。

概要

このガイドは、次の 2 つのステップに分かれています。

前提条件

1. Terraform を使用して AWS リソースを作成する

このガイドに沿ってアプリケーションをビルドしてデプロイするには、いくつかの AWS リソースが必要です。 CircleCI では、これらのリソースを作成するために いくつかの Terraform スクリプトを提供しています。 これらのスクリプトを使用するには、以下の手順を行います。

  1. AWS アカウントを作成します
  2. Terraform をインストールします
  3. >サンプルプロジェクトのクローンを作成し、そのルートディレクトリに移動します。
  4. AWS 変数の実際の値で ~/terraform_setup/terraform.tfvars を更新します。 詳細については、以下の CircleCI 環境変数を設定するセクションを参照してください。
  5. 以下のコマンドを実行して、AWS リソースを作成します。
cd terraform_setup
terraform init
terraform plan  # プランをレビューします
terraform apply  # プランを適用して AWS リソースを作成します

2. CircleCI 環境変数を設定する

CircleCI アプリケーションで、以下の プロジェクト環境変数を設定します。

変数説明
AWS_ACCESS_KEY_IDAWS のセキュリティ認証情報です。
AWS_SECRET_ACCESS_KEYAWS のセキュリティ認証情報です。
AWS_REGIONAWS CLI によって使用されます。
AWS_ACCOUNT_IDデプロイに必要です。 AWS アカウント ID はこちらで確認してください
AWS_RESOURCE_NAME_PREFIX必須の AWS リソースのプレフィックスです。 terraform_setup/terraform.tfvarsaws_resource_prefix の値に対応する必要があります。
AWS_ECR_REGISTRY_IDECR アカウントに関連づけられた 12 桁の AWS ID です。

設定ファイルの詳細

すべての CircleCI プロジェクトには、 .circleci/config.yml という設定ファイルが必要です。 以下の手順に従って、完全な config.yml ファイルを作成してください。

: このセクションで説明するサンプルプロジェクトは、以下で提供されている CircleCI の AWS-ECR Orb と AWS-ECS Orb を使用します。

Orb ではタグを使用してバージョン指定します (例: aws-ecr: circleci/aws-ecr@x.y.z)。 サンプルをコピー & ペーストする場合は、x.y.z を特定のバージョンの値に変更する必要があります。 使用可能なバージョンについては、 CircleCI Orb レジストリの各 Orb のページを参照してください。

1. Docker イメージをビルドして AWS ECR にプッシュする

build-and-push-image ジョブで、デフォルトの場所 (チェックアウト ディレクトリのルート) に Dockerfile から Docker イメージをビルドし、それを指定された ECR リポジトリにプッシュします。

version: 2.1

orbs:
  aws-ecr: circleci/aws-ecr@x.y.z
  aws-ecs: circleci/aws-ecs@0x.y.z

workflows:
  build-and-deploy:
    jobs:
      - aws-ecr/build-and-push-image:
          repo: "${AWS_RESOURCE_NAME_PREFIX}"
          tag: "${CIRCLE_SHA1}"

2. 新しい Docker イメージを既存の AWS ECS サービスにデプロイする

aws-ecs Orb の deploy-service-update ジョブで、現在のタスク定義に基づきつつ、タスク定義のコンテナ定義で指定された新しい Docker イメージを使用して新しいタスク定義を作成し、この新しいタスク定義を指定された ECS サービスにデプロイします。 CircleCI AWS-ECS Orb の詳細については、https://circleci.com/developer/ja/orbs/orb/circleci/aws-ecs を参照してください。

: deploy-service-update ジョブは、requires キーがあるため、build-and-push-image に依存します。

version: 2.1

orbs:
  aws-ecr: circleci/aws-ecr@x.y.z
  aws-ecs: circleci/aws-ecs@0x.y.z

workflows:
  build-and-deploy:
    jobs:
      - aws-ecr/build-and-push-image:
          repo: "${AWS_RESOURCE_NAME_PREFIX}"
          tag: "${CIRCLE_SHA1}"
      - aws-ecs/deploy-service-update:
          requires:
            - aws-ecr/build-and-push-image # only run this job once aws-ecr/build-and-push-image has completed
          family: "${AWS_RESOURCE_NAME_PREFIX}-service"
          cluster: "${AWS_RESOURCE_NAME_PREFIX}-cluster"
          container-image-name-updates: "container=${AWS_RESOURCE_NAME_PREFIX}-service,tag=${CIRCLE_SHA1}"

ここでは、ワークフローを使用してジョブの実行順や同時実行を定義しています。 詳細については、 ワークフローを使用したジョブのオーケストレーションを参照してください。

関連項目

  • Docker イメージをビルドおよびテストして ECR にプッシュした後で、aws-ecs Orb を使用して更新をデプロイする例を参照するには、 AWS-ECS-ECR Orbs のデモ ページにアクセスしてください。
  • CircleCI Orbs を使用しない例を参照するには、 Non-Orbs AWS ECR-ECS Demo のデモ ページにアクセスしてください。

Suggest an edit to this page

Make a contribution
Learn how to contribute