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

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

新規登録して質問してみよう
ただいま回答率
85.53%
Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

Q&A

解決済

1回答

564閲覧

API の失敗 理由: RESOURCE:CPU エラーの解決方法

yosshi4649

総合スコア1

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

0グッド

0クリップ

投稿2023/07/20 12:30

実現したいこと

ECSのサービス内にあるタスクを一度削除してしまったので、改めて「タスクの実行」をしたところ、「API の失敗 理由: RESOURCE:CPU」というエラーが出てきてしまったので、こちらのエラーを解消させたいです。

前提

起動タイプはEC2でECSにデプロイさせています。
・SSL化は完了している(ALBと紐付け完了済み)
・ECRにDockerイメージをpush済み、イメージが正常にリポジトリに登録されているか下記コマンドで確認済みです。

一度デプロイを完成させています。

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

タスクを実行させた時 API の失敗 理由: RESOURCE:CPU サービスのイベント service onsen-service was unable to place a task because no container instance met all of its requirements. The closest matching container-instance feb※※ has insufficient CPU units available. For more information, see the Troubleshooting section of the Amazon ECS Developer Guide.

該当のソースコード

■ECSタスク作成 タスク定義名:onsen-task タスクロール:ECS-Exec-role2 タスク実行ロール:ecsTaskExecutionRole ネットワークモード:bridge ボリュームの追加  名前:sockets  タイプ Docker  ドライバー:local  スコープ:task タスクメモリ (MiB)512 タスク CPU (単位)512 ■VPC VPC:VPC_for_onsen IPv4 CIDR ブロック:10.0.0.0/24 ■サブネット作成 上記VPC作成に伴いサブネットが1つ勝手に作られるが、名前がデフォルトなので修正。 onsen-Subnet-1a もう一つサブネットを作成。 VPC:VPC_for_onsen サブネット名:onsen-Subnet-1c IPv4 CIDR ブロック:10.0.1.0/24 ■コンテナの定義  onsen-nginx-container   イメージ:{AWSの12桁ID}.dkr.ecr.ap-northeast-1.amazonaws.com/onsen-nginx   ポートマッピング:0:80   マウントポイント    コンテナパス:/app/tmp/sockets    ソースボリューム:sockets   ログ設定チェックON  onsen-container   イメージ:{AWSの12桁ID}.dkr.ecr.ap-northeast-1.amazonaws.com/onsen   コマンド: ["bundle","exec","puma","-C","config/puma.rb"]   ポートマッピング:0:3000   マウントポイント    コンテナパス:/app/tmp/sockets    ソースボリューム:sockets   ログ設定チェックON   環境変数    DB_HOSTNAME {RDSのホストARN}    DB_NAME {アプリDB名}    DB_PASSWORD password    DB_USERNAME root    RAILS_ENV production    RAILS_MASTER_KEY {Railsのconfig/master.keyの値}    RAILS_SERVE_STATIC_FILES true ■ELB作成 ・ターゲットグループ作成 名前:onsen-Target-Group Choose a target type:Instances 他そのまま ・ロードバランサー作成 Application Load BalancerInfoを選択 名前:onsen-ELB VPC:上記と一緒 サブネットも2つ選択する。 セキュリティグループ選択 リスナーに上記ターゲットグループを選択 ■ECSクラスター EC2 Linux + ネットワーキングを選択 クラスター名:onsen-cluster プロビジョニングモデル:オンデマンドインスタンス EC2 インスタンスタイプ:t2micro インスタンス数:2 EC2 AMI ID*:そのまま ルート EBS ボリュームサイズ (GiB):そのまま キーペア:上記で作成したキーペア VPC:上記のもの サブネット:Publicのサブネットどちらか1つ指定すればOK? パブリック IP の自動割り当て:サブネット設定を使用 セキュリティグループ:今回作成したものを割り当て コンテナインスタンスの IAM ロール:ecsInstanceRole ■サービスの 起動タイプ:EC2 タスク定義:上記のもの クラスター:上記のもの サービス名:onsen-service サービスタイプ:REPLICA タスクの数:2 最小ヘルス数:50 最大率:100 デプロイサーキットブレイカー:無効 デプロイメントタイプ:ローリングアップデート ロードバランサーの種類:ALB サービス用の IAMロールの選択:AWSServiceRoleForECS ロードバランサー名:onsen-ELB ロードバランス用のコンテナ:nginxを「ロードバランサーに追加」ボタンクリック

試したこと

メモリが不足している可能性があったので、EC2 インスタンスタイプを「t2.micro」から「t2.small」に変更しました。

新しくタスク定義を作成するために、タスクサイズを
タスクメモリ (MiB)512
タスク CPU (単位)512

だったものを

タスクメモリ (MiB)1024
タスク CPU (単位)1024
に変更しました。

参考サイト
https://repost.aws/ja/knowledge-center/ecs-change-container-instance-type
https://repost.aws/ja/knowledge-center/allocate-ecs-memory-tasks

補足情報

ECS作成時の参考サイト
https://qiita.com/saongtx7/items/f36909587014d746db73

ECSはまだまだ浅学なため、知識もまだまだ不足しています。
なので拙い説明となってしまい申し訳ありません。
AWS公式等色々と読んで試してみても、解決の糸口を見つけられなので、お力添え頂けるよう、よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

自己解決

こちらの問題自己解決しました。

今回の問題は、クラスターのタスクを「新しいタスクの実行」した際に「必要なタスク」を誤った数字で作成していたのが問題でした。
なのでそちらの数字を修正したところ無事起動することができました。

投稿2023/07/24 09:46

yosshi4649

総合スコア1

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.53%

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

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

質問する

関連した質問