これは何?
InvalidParameterException: The new ARN and resource ID format must be enabled to add tags to the service. Opt in to the new format and try again.
ECSで遊んでみようとTerraformで遊んでいたら、
ECSのServiceリソースを生成する際に上記のようなリクエストエラーが返ってきた。
意外と知らなくて詰まったのでその対処方法。
環境
macOS Mojave 10.14.5
terraform: v0.12.13
対処方法
参考になったのは下記の2ページ。
AWSのブログのこの画像の通りですが、下画像のECSのアカウント設定ページで設定を行う必要がありました。結構書籍や実践例はこの設定を以前に行なっているユーザーでTerraformでリソース作成を行なっているのでは??と今回思ったので初めてECSを触る人は多分ここでハマっているんじゃないか...と勝手に思いました。
このページに以下のような説明があり、Terraformでも設定用の記述を追加すれば大丈夫そうですが、今回はそこまで調べてないのでわかったら追加します。一旦今回はチェックボックスにチェックを入れ設定を更新しました。
オプトイン設定を定義していない場合は、IAM ユーザーまたはロールがデフォルト設定になります。アカウントのデフォルト設定を変更するには、root ユーザーでオプトイン設定を変更するか、あるいはPutAccountSettingDefault API を使います。
注: Amazon ECS は、このほど新しい PutAccountSettingDefault API を発表しました。これによりユーザーやロールがAPI を使ってアカウントのオプトイン設定ができるようになりました。この PutAccountSettingDefault API は、AWS CLI または SDK で利用できます。詳細については、「ECS ドキュメント」ページを参照してください。
また、下記のようにあるので今回の例外の意味は
「新しいARNのフォーマットにアカウントが設定されてないのに新しいフォーマットでECSのサービスリソースのARNが送られてきているよ、設定変えてね」
ということでした。
Amazon ECS は ARN とリソース ID の新しいフォーマットを導入しました。タスク、コンテナインスタンス、およびサービスの ARN は、クラスター名が含まれているため長くなります。タスクとコンテナのインスタンス ID は、ハイフンを含まなくなったため、短くなりました
チェックボックスにチェックした後設定を更新し、もう一度terraform apply
で無事ECSのサービスリソースが生成されALBとの紐づきが確認でき、ページが表示されました!
CloudFormationしか触ってこなかったのでこれからTerraformも触って色々試そうと思います〜。