TerraformでECSクラスター作成時に「InvalidParameterException: Arguments on this idempotent request are inconsistent with arguments used in previous request(s).」というエラーメッセージが出たときの対処方法

ECSクラスター名はAWSアカウント内で一意の名前にする必要があります。
2021.10.31

こんにちは!コンサル部のinomaso(@inomasosan)です。

TerraformのResource: aws_ecs_clusterでECSクラスター作成時に以下のエラーメッセージが出力されたので、対処方法を調べてみました。

Error: error creating ECS Cluster (hoge): InvalidParameterException: Arguments on this idempotent request are inconsistent with arguments used in previous request(s).

結論

ECSクラスター名は一意の名前を入力する必要があります。
AWSアカウント内に同じ名前のECSクラスター名がないか確認してください。

試しにAWSマネージメントコンソールでも、同じ名前のクラスター名を作成しようとしたら、以下のエラー画面が表示されました。

環境

今回実行した環境は以下の通りです。

  • macOS BigSur 11.6
  • Terraform 1.0.7
  • AWSプロバイダー 3.63.0

ちなみにサービス名とタスク定義名は?

サービス名

サービス名については、以下のように記載されていました。

サービス名は同じクラスター内で一意になるようにしてください。ただし、リージョン内のクラスター間や複数のリージョンにまたがるクラスター間では、同様の名前のサービスがあっても構いません。

実際に同じクラスター内で、同じ名前のサービス名を作成しようとしたら、以下のエラー画面が表示されました。

タスク定義名

タスク定義名はファミリーにリビジョン番号を付与したものとなります。
そのため同じ名前で作成した場合はリビジョン番号がインクリメントされました。

尚、ファミリーについては以下のよう記載されていました。

タスク定義を登録するときに、ファミリー (複数バージョンのタスク定義の名前のようなもの) を指定する必要があります。登録したタスク定義には、リビジョン番号が与えられます。特定のファミリーに登録した最初のタスク定義には、リビジョン 1 が与えられ、その後に登録したタスク定義には、リビジョン 2 というように続きます。

まとめ

AWSマネージメントコンソールでECS作成後に、同様のリソースをTerraformで作成しようとしてエラーとなりました。
リソースは小まめに作成・削除したほうが、こういったエラーを踏まなくて済みそうですね。

この記事が、どなたかのお役に立てば幸いです。それでは!