タイトルがすべてシリーズ。
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}" }