AWS + Terraform, как создать папку на EFS - PullRequest
2 голосов
/ 08 апреля 2020

Я установил кластер ECS с Terraform. Все отлично работает, но у меня есть несколько вопросов по этому поводу.

1. Насколько я понял, том EFS не нужно монтировать к экземплярам ECS. AWS позволяет нам монтировать папку тома EFS непосредственно в контейнер. Я прав?

resource "aws_ecs_task_definition" "Task" {
  family                = var.ServiceName
  container_definitions = file("service.json")
  tags = {
    Name    = data.terraform_remote_state.Cluster.outputs.TagName
    Project = data.terraform_remote_state.Cluster.outputs.TagName
  }
  volume {
    name = "service-storage"
    efs_volume_configuration {
      file_system_id = data.terraform_remote_state.Cluster.outputs.EfsVolumeId
      root_directory = "/"
    }
  }
}

root_directory вот путь внутри тома EFS к папке, которая будет подключена к контейнеру.

service. json

[
  {
    "name": "nginx13",
    "image": "nginx",
    "memory": 256,
    "mountPoints": [
      {
        "containerPath": "/usr/share/nginx/html",
        "sourceVolume": "service-storage"
      }
    ],
    "portMappings": [
      {
        "containerPort": 80
      }
    ]
  }
]

containerPath здесь находится путь внутри контейнера к точке монтирования, где будет смонтирована папка root_directory. Поэтому нет никакого параметра, связанного с точкой монтирования экземпляра ECS или путем к нему.

2. Прежде чем создавать новую задачу, мне нужно создать папку на томе EFS для монтирования контейнеры к нему позже. Теперь я могу использовать только папку root тома EFS, поскольку она пуста. Итак, я ищу способ управления созданием и удалением папок на томах EFS с помощью шаблона terraform. И это первая часть проблемы, вторая часть - поместить файлы в эту папку. Каковы лучшие практики для этого? Должен ли я использовать какое-либо решение для развертывания, такое как Jenkins, или это можно сделать только с помощью Terraform? Как насчет прав доступа к папке EFS? Они должны быть изменены?

...