タイトルがすべてシリーズ。
missing required field
シークレットマネージャから読み出す環境変数を追加したので、ECS のタスク定義を更新したらエラーになった。
│ Error: failed creating ECS Task Definition (stg-example-ecs-task-definition-backend): InvalidParameter: 2 validation error(s) found.
│ - missing required field, RegisterTaskDefinitionInput.ContainerDefinitions[1].Secrets[4].ValueFrom.
│ - missing required field, RegisterTaskDefinitionInput.ContainerDefinitions[2].Secrets[4].ValueFrom.
│
│
│ with aws_ecs_task_definition.backend,
│ on ecs.tf line 145, in resource "aws_ecs_task_definition" "backend":
│ 145: resource "aws_ecs_task_definition" "backend" {
あーはん?
ちなみに ContainerDefinitions[1] ContainerDefinitions[2] となっているのは、 app コンテナと sidekiq コンテナが存在しており、それぞれに同様の追加をしたから。
value ではない
最初はパラメータストアに素朴にセットしていたので "value" : で呼び出していたのだけど、これ暗号化しとかないとダメなやつじゃん? となり、その後移動させたのだった。
その際にタスク定義内でもコピペしてしまい、 "valueFrom" : に修正するのを忘れていたとさ、というお話でした。
タスク定義の抜粋
ぺけ
{
"name" : "VALUE",
"value" : "${ecs_app_secret_value}"
}
おっけー
{
"name" : "VALUE",
"valueFrom" : "${ecs_app_secret_value}"
}