#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}]
////////////////////省略//////////////////////////////////////
}
]
)
}