はじめに
AWS環境をTerraformで構築している場合、Terraformでリソースを削除するのではなく、マネジメントコンソール上でリソースを削除するということも時々発生すると思います。
ただし、CodeDeployだけは削除するのはお勧めしません。
「ApplicationDoesNotExistException」が発生するからです。
エラー内容 - ApplicationDoesNotExistException
その名前の通り、対象の名前のCodeDeployアプリケーションが存在していない場合に発生します。
これは
TerraformでCodeDeployアプリケーションを構築
→マネジメントコンソール上でそのリソースを削除
→terraform planを実行
した場合に発生します。
対応方法
上記エラーが発生した場合、CodeDeployアプリケーションとデプロイメントグループをTerraformで作成したリソース名で再作成する必要があります(あくまでリソース名だけでid等は違っても問題ないみたいです)。
そうしないといつまでもterraform planするたびにApplicationDoesNotExistExceptionが発生して先に進めません。
結論
既に作成したリソース名を覚えていなかったり、仮に覚えていても他のデプロイメントグループで使用されていないECS Clusterを用意したり、IAMを作成したりしないとデプロイメントグループが作成できないので、結構面倒くさいです。
他のAWSリソースに関してはマネジメントコンソール上で削除してもterraform planやterraform applyで特に問題は生じていないですが、CodeDeployだけはこの問題が発生するので、マネジメントコンソール上で削除するのではなく、Terraformで削除することをお勧めします。