Start Building for Free
CircleCI.comアカデミーブログコミュニティサポート

AWS ECR/ECS へのデプロイ

5 days ago1 min read
Cloud
Server v4.x
Server v3.x
Server v2.x
このページの内容

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

概要

また、アプリケーションの CircleCI でのビルドについても取り上げます。

前提条件

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 のデモ ページにアクセスしてください。

ドキュメントの改善にご協力ください

このガイドは、CircleCI の他のドキュメントと同様にオープンソースであり、 GitHub でご利用いただけます。 ご協力いただき、ありがとうございます。

サポートが必要ですか

CircleCI のサポートエンジニアによる、サービスに関する問題、請求およびアカウントについての質問への対応、設定の構築に関する問題解決のサポートを行っています。 サポートチケットを送信して、CircleCI のサポートエンジニアにお問い合わせください。日本語でお問い合わせいただけます。

または、 サポートサイト から、サポート記事やコミュニティフォーラム、トレーニングリソースをご覧いただけます。