質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Circle CI

Circle CIは、クラウド上に簡単にCI環境を構築できるWebサービスです。GitHubと連携させ、CIしたいリポジトリーを選択しビルド・テストを行います。チャット等を利用して結果を確認することが可能です。

Q&A

解決済

1回答

2137閲覧

CircleCIを使用してのAWS ECSへの自動デプロイ時にエラーが発生する

hastings

総合スコア2

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Circle CI

Circle CIは、クラウド上に簡単にCI環境を構築できるWebサービスです。GitHubと連携させ、CIしたいリポジトリーを選択しビルド・テストを行います。チャット等を利用して結果を確認することが可能です。

0グッド

0クリップ

投稿2023/02/21 06:17

実現したいこと

・Githubへのプッシュ時に、CircleCI を使用して、Amazon Elastic Container Registry (ECR) をら Amazon Elastic Container Service (ECS) にデプロイを行いたい
・Amazon Elastic Container Registry (ECR) へのイメージの登録はできるが、ECSデプロイ時にエラーが発生する

前提

AWS ECR・ECSの各設定名は以下の通りです。

〇ECR ・リポジトリ名:[アプリ名]-repository 〇ECS ・クラスター名:[アプリ名]-cluster  ・サービス名:[アプリ名]-service ・タスク定義:[アプリ名]-definition(例:[アプリ名]-definition:27)  ・コンテナ名:[アプリ名]-container  ・イメージ:[アカウントID].dkr.ecr.ap-northeast-1.amazonaws.com/[アプリ名]-repository:latest ※[アプリ名]は共通です。

発生している問題・エラーメッセージ

イメージ説明

An error occurred (ClientException) when calling the DescribeTaskDefinition operation: Unable to describe task definition. Exited with code exit status 254 CircleCI received exit code 254

なお、family: '${MY_APP_PREFIX}-service''family: '${MY_APP_PREFIX}-definition'に変更した場合は、definitionエラーは発生しませんが、今度は以下のエラーが発生します。

イメージ説明

#!/bin/bash -eo pipefail set -o noglob # These variables are evaluated so the config file may contain and pass in environment variables to the parameters. ECS_PARAM_FAMILY=$(eval echo "$ECS_PARAM_FAMILY") ECS_PARAM_CLUSTER_NAME=$(eval echo "$ECS_PARAM_CLUSTER_NAME") ECS_PARAM_SERVICE_NAME=$(eval echo "$ECS_PARAM_SERVICE_NAME") ECS_PARAM_PROFILE_NAME=$(eval echo "$ECS_PARAM_PROFILE_NAME") if [ -z "${ECS_PARAM_SERVICE_NAME}" ]; then ECS_PARAM_SERVICE_NAME="$ECS_PARAM_FAMILY" fi if [ "$ECS_PARAM_FORCE_NEW_DEPLOY" == "1" ]; then set -- "$@" --force-new-deployment fi if [ -n "${ECS_PARAM_PROFILE_NAME}" ]; then set -- "$@" --profile "${ECS_PARAM_PROFILE_NAME}" fi if [ "$ECS_PARAM_ENABLE_CIRCUIT_BREAKER" == "1" ]; then set -- "$@" --deployment-configuration "deploymentCircuitBreaker={enable=true,rollback=true}" fi DEPLOYED_REVISION=$(aws ecs update-service \ --cluster "$ECS_PARAM_CLUSTER_NAME" \ --service "${ECS_PARAM_SERVICE_NAME}" \ --task-definition "${CCI_ORB_AWS_ECS_REGISTERED_TASK_DFN}" \ --output text \ --query service.taskDefinition \ "$@") echo "export CCI_ORB_AWS_ECS_DEPLOYED_REVISION='${DEPLOYED_REVISION}'" >> "$BASH_ENV" An error occurred (ServiceNotFoundException) when calling the UpdateService operation: Exited with code exit status 254 CircleCI received exit code 254

該当のソースコード

yml:config.yml

1version: '2.1' 2 3orbs: 4 aws-ecr: circleci/aws-ecr@8.1 5 aws-ecs: circleci/aws-ecs@3.2 6 7workflows: 8 build-and-deploy: 9 jobs: 10 - aws-ecr/build-and-push-image: 11 repo: "${AWS_RESOURCE_NAME_PREFIX}-repository" 12 tag: 'latest' 13 path: . 14 15 - aws-ecs/deploy-service-update: 16 requires: 17 - aws-ecr/build-and-push-image 18 cluster: '${MY_APP_PREFIX}-cluster' 19 family: '${MY_APP_PREFIX}-service' 20 container-image-name-updates: "container=${AWS_RESOURCE_NAME_PREFIX}-container,image-and-tag=${AWS_ECR_REGISTRY_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/${AWS_RESOURCE_NAME_PREFIX}-repository:latest"

試したこと

・公式ドキュメントの通読
https://circleci.com/docs/ja/ecs-ecr/
https://circleci.com/developer/ja/orbs/orb/circleci/aws-ecs

・関連記事の通読
https://qiita.com/saki-engineering/items/d35ea75e95ffa77e307a
https://zenn.dev/hibriiiiidge/books/49ee4063b10cec1df1a2/viewer/29c36a
https://engineers.weddingpark.co.jp/aws-ecs-circleci/

・ChatGPTの活用

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu_1985

2023/02/22 09:07

AWS_RESOURCE_NAME_PREFIXとMY_APP_PREFIXが混在してますが、これらには想定通り値が入っていますか?
hastings

2023/02/23 02:57

ご返信いただきありがとうございます。 はい、AWS_RESOURCE_NAME_PREFIXとMY_APP_PREFIXの値につきましては、想定の値([アプリ名])がCircleCI環境変数に登録されております。なお、値は同一の値です。
guest

回答1

0

ベストアンサー

公式ドキュメント内に、エラーが発生している処理の詳細な仕様が記載されています。
deploy-service-update

familyで指定するのはタスク定義の名前です。
また、service-nameを指定しないとfamilyの名前をそのまま使用するようです。
つまり、両方個別に指定しなければいけないということのようですね。
以下抜粋

family
Name of the task definition's family.

service-name
The name of the service to update. If undefined, we assume family is the name of both the service and task definition.

投稿2023/02/28 05:40

yu_1985

総合スコア7586

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hastings

2023/02/28 06:23 編集

ご返信いただき誠にありがとうございます `service-name`を設定した結果、問題なくデプロイすることができました。 公式ドキュメントにつきましては、私の確認不足でした。 ご教示いただき本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問