我试图在通过Terraform创建ECS任务时上传一个简单的.yml
文件,以下是代码./main.tf
:
resource "aws_ecs_task_definition" "grafana" {
family = "grafana"
cpu = "256"
memory = "512"
network_mode = "awsvpc"
requires_compatibilities = ["FARGATE"]
container_definitions = jsonencode([
{
name = "grafana"
image = "grafana/grafana:latest"
portMappings = [
{
containerPort = 3000,
hostPort = 3000,
protocol = "tcp"
}
]
}
])
}
如何将./datasource.yml
(位于我的主机上)添加到任务定义中的容器中,以便在任务运行时可以使用它?我不确定如果volume { }
可以使用?
我想你有两个选择:
- 重建docker镜像,包括修改后的数据源。
COPY datasource.yaml /usr/share/grafana/conf/provisioning/datasource.yaml
或
- 挂载一个卷,您可以轻松地以编程方式挂载和推送文件(EFS执行此操作有点复杂)
mount_points = [ {
sourceVolume = "grafana"
containerPath = "/var/lib/grafana/conf/provisioning"
readOnly = false
}
]
volumes = [
{
name = "grafana"
host_path = "/ecs/grafana-provisioning"}
]
我不确定是否可以使用volume {} ?
事实上你可以,查看文档https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_task_definition#example-usage
volume {
name = "grafana-volume"
host_path = "./datasource.yml"
}