Я установил кластер 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? Они должны быть изменены?