ドキュメント
circleci.com
Start Building for Free

AWS へのデプロイ

1 week ago1 min read
クラウド
Server v3.x
Server v2.x
On This Page

このページでは S3、ECR/ECS (Elastic Container Registry/Elastic Container Service) へのデプロイや AWS Code Deploy を使ったアプリケーションのデプロイについて説明します。

AWS S3、ECS、ECR、CodeDeploy Orb の詳細については、Orb レジストリの各ページを参照してください。

AWS S3 Orb を使用した S3 へのデプロイ

AWS S3 Orb の詳細については、 CircleCI AWS S3 Orb のページを参照してください。 このセクションでは、AWS S3 Orb と version: 2.1 の設定を使った簡単にデプロイを行う方法の詳細を紹介します。下記では、同じ設定例で Orb を使用せず version: 2 の設定を使った場合の例を紹介します。

  1. セキュリティ上のベストプラクティスとして、CircleCI 専用の新しい IAM ユーザー を作成します。

  2. AWS アクセスキー を CircleCI に追加します (アクセスキー ID を AWS_ACCESS_KEY_ID という変数に保存し、シークレットアクセスキーを AWS_SECRET_ACCESS_KEY という変数に保存します)。

  3. Orb の sync コマンドを使ってデプロイします。 build ジョブが終了し、現在のブランチが main である場合にのみ、ワークフローを使用してデプロイしてください。

    version: 2.1
    
    orbs:
        aws-s3: circleci/aws-s3@x.y.z # use the AWS S3 orb in your configuration
    
    workflows: # Define a Workflow running the build job, then the deploy job
        version: 2
        build-deploy: # Make a workflow to build and deploy your project
        jobs:
            - build
            - deploy:
                requires:
                - build # Only run deploy job once the build job has completed
                filters:
                branches:
                    only: main # Only deploy when the commit is on the Main branch
    
    jobs: # Define the build and deploy jobs
        build:
        docker: # Use the Docker executor for the build job
            - image: <image-name-and-tag> # Specify the Docker image to use for the build job
            auth:
                username: mydockerhub-user
                password: $DOCKERHUB_PASSWORD  # context / project UI env-var reference
        ... # build job steps omitted for brevity
        deploy:
        docker: # Use the Docker executor for the deploy job
            - image: <image-name-and-tag>  # Specify the Docker image to use for the deploy job
            auth:
                username: mydockerhub-user
                password: $DOCKERHUB_PASSWORD  # context / project UI env-var reference
        steps:
            - checkout
            - aws-s3/sync:
                from: bucket
                to: 's3://my-s3-bucket-name/prefix'
                arguments: | # Optional arguments
                --acl public-read \
                --cache-control "max-age=86400"
                overwrite: true # default is false

2.0 の設定を使用した AWS S3 へのデプロイ

  1. セキュリティ上のベストプラクティスとして、CircleCI 専用の新しい IAM ユーザー を作成します。

  2. AWS アクセスキー を CircleCI に追加します (アクセスキー ID を AWS_ACCESS_KEY_ID という変数に保存し、シークレットアクセスキーを AWS_SECRET_ACCESS_KEY という変数に保存します)。

  3. .circleci/config.yml ファイルで、新しい deploy ジョブを作成します。 deploy ジョブで、プライマリコンテナに awscli をインストールするステップを追加します。

  4. AWS CLI に関するドキュメント に従って、プライマリコンテナに awscli をインストールします。

  5. AWS CLI を使用 して、アプリケーションを S3 にデプロイするか、他の AWS 操作を実行します。 build ジョブが終了し、現在のブランチが main である場合にのみ、ワークフローを使用してデプロイしてください。

    version: 2
    
    workflows: # Define a Workflow running the build job, then the deploy job
        version: 2
        build-deploy:
        jobs:
            - build
            - deploy:
                requires:
                - build
                filters:
                branches:
                    only: main # Only deploys when the commit is on the Main branch
    
    jobs:
        build:
        docker: # Specify executor for running build job - this example uses a Docker container
            - image: <docker-image-name-tag> # Specify docker image to use
            auth:
                username: mydockerhub-user
                password: $DOCKERHUB_PASSWORD  # context / project UI env-var reference
        ... # build job steps omitted for brevity
        deploy:
        docker: # Specify executor for running deploy job
            - image: <docker-image-name-tag> # Specify docker image to use
            auth:
                username: mydockerhub-user
                password: $DOCKERHUB_PASSWORD  # context / project UI env-var reference
        steps:
            - run: # Install the AWS CLI if it is not already included in the docker image
                name: Install awscli
                command: sudo pip install awscli
            - run: # Deploy to S3 using the sync command
                name: Deploy to S3
                command: aws s3 sync <path/to/bucket> <s3://location/in/S3-to-deploy-to>

AWS CLI のコマンドとオプションの全一覧は、 AWS CLI コマンドリファレンス でご覧いただけます。

AWS ECR への Docker イメージのデプロイ

AWS ECR Orb により、AWS へのログイン、ビルド、Docker イメージの AWS Elastic Container Registry へのプッシュが最小限の設定で可能になります。 すべてのパラメーター、ジョブ、コマンド、オプションのリストは、 Orb レジストリのページ を参照してください。

下記のように build-and-push-image ジョブを使う場合は、環境変数 AWS_ECR_ACCOUNT_URLACCESS_KEY_IDSECRET_ACCESS_KEYAWS_DEFAULT_REGION を設定する必要があります。

version: 2.1

orbs:
  aws-ecr: circleci/aws-ecr@x.y.z # Use the AWS ECR orb in your configuration

workflows:
  build_and_push_image:
    jobs:
      - aws-ecr/build-and-push-image: # Use the pre-defined `build-and-push-image` job
          dockerfile: <my-Docker-file>
          path: <path-to-my-Docker-file>
          profile-name: <my-profile-name>
          repo: <my-ECR-repo>
          tag: <my-ECR-repo-tag> # default - latest

AWS ECS インスタンスのアップデート

AWS ECR Orb と ECS Orb を使って既存の AWS ECS インスタンスを簡単にアップデートすることができます。

下記のように build-and-push-image ジョブを使う場合は、環境変数 AWS_ECR_ACCOUNT_URLACCESS_KEY_IDSECRET_ACCESS_KEYAWS_DEFAULT_REGION を設定する必要があります。

version: 2.1

orbs:
  aws-ecr: circleci/aws-ecr@x.y.z # Use the AWS ECR orb in your configuration
  aws-ecs: circleci/aws-ecs@x.y.z # Use the AWS ECS orb in your configuration

workflows:
  build-and-deploy:
    jobs:
      - aws-ecr/build-and-push-image:
          dockerfile: <my-Docker-file>
          path: <path-to-my-Docker-file>
          profile-name: <my-profile-name>
          repo: ${MY_APP_PREFIX}
          tag: '${CIRCLE_SHA1}'
      - aws-ecs/deploy-service-update:
          requires:
            - aws-ecr/build-and-push-image # only run the deployment job once the build and push image job has completed
          family: '${MY_APP_PREFIX}-service'
          cluster-name: '${MY_APP_PREFIX}-cluster'
          container-image-name-updates: 'container=${MY_APP_PREFIX}-service,tag=${CIRCLE_SHA1}'

AWS CodeDeploy

AWS CodeDeploy Orb を使用すると、AWS CodeDeploy を通じてデプロイを実行できます。

version: 2.1 # use 2.1 to make use of orbs and pipelines

orbs:
  aws-code-deploy: circleci/aws-code-deploy@x.y.z # Use the AWS CodeDeploy orb in your configuration

workflows:
  deploy_application:
    jobs:
      - aws-code-deploy/deploy:
          application-name: <my-application> # The name of an AWS CodeDeploy application associated with the applicable IAM user or AWS account.
          deployment-group: <my-deployment-group> # The name of a new deployment group for the specified application.
          service-role-arn: <my-deployment-group-role-ARN> # The service role for a deployment group.
          bundle-bucket: <my-application-S3-bucket> # The s3 bucket where an application revision will be stored.
          bundle-key: <my-S3-bucket-key> # A key under the s3 bucket where an application revision will be stored.

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

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

サポートが必要ですか

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

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