上传文件到ECS任务



我试图在通过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"
}

最新更新