どんなエラー?
遭遇したエラーは以下の通り。
タスク定義の検証に失敗したので、CodePipelineのアクションに記述されている"TaskDefinitionTemplateArtifact"のタスク定義を見直してほしいとのこと。 別のデプロイパイプラインも同じ構成となっているのに関わらず、特定のデプロイパイプラインのCodeDeployだけ失敗する状況だった。
Failed to validate the task definition. Check the task definition in the "TaskDefinitionTemplateArtifact" parameter for your pipeline action and verify the configuration details for the ECS service.
デプロイパイプラインはCodePipeline+CodeBuild+CodeDeployで実現されており、ECSのタスク定義はCodeBuildのArtifactとして出力されたものをCodeDeployで使っている構成となっている。
原因
このエラーの原因について調べたところ、タスク定義の環境変数でマルチバイト文字が含まれているとエラーになるらしいことが発覚した。 該当のタスク定義を見直してみると全角の環境変数の値が含まれていたのでこれが原因そう。
回避策
環境変数の値をマルチバイト文字から変更することはできないので、タスク定義で直接環境変数の値をベタ書きするのではなく、ParameterStoreの中にマルチバイト文字を入れ参照する形に変更した。 このように環境変数の参照方法を変更することで上記のエラーが出なくなったことが確認できた。
ParameterStoreに値を入れるとSecrets配列の中に対象の環境変数を定義することになるが、現状はこれが手っ取り早い回避策かなと思う。