terraformでコンテナに機密情報を渡す


ECSでコンテナに機密情報を渡す方法

タスク定義のコンテナ編集の環境変数メニューでValueFromにssmパラメーターのarnを指定し、より安全にコンテナに機密情報を渡すことが可能です。

terraformでvalueFromの値を設定する方法

terraform公式サイトのtask_definitionのページにはValueの値を設定できるEnvironmentについては記載があるものの、ValueFromを設定できるパラメータの記載はありません。

しかし、AWSコンソール画面からContainedefinitionの項目を確認すると、secretsという値があり、これがValueFromの項目であることが確認できます。ちなみにEnvironmentはValueとなるため、ssmのarnを渡しても、設定したいパラメーターに変換されません。(自分はこれで一度失敗しました)

terraformコード

複数の値を渡す場合が多いと思うので、その際には以下のようにforを使うと楽です。

taskdefinition.tf
resource "aws_ecs_task_definition" "example"{

container_definitions = jsonencode(
                       [
                         {
////////////////////省略//////////////////////////////////////
                           secrets = [for k, v in aws_ssm_parameter.parameter_for_ecs :
                           { name      = k
                             valueFrom = v.arn}]
////////////////////省略//////////////////////////////////////
                         }
                       ]
                     )

                   }