如何在 Terraform 中将 EBS 卷添加到 ECS 实例
How to add EBS volume to ECS instance in Terraform
我正在尝试使用 Terraform 设置 ECS 集群,但我不知道如何在托管需要该卷的服务的 ECS 实例上让 Terraform 自动配置 EBS 卷。
在我的配置中我有:
resource "aws_ecs_task_definition" "name" {
family = "name"
container_definitions = "${file("task-definitions/name.json")}"
volume {
name = "name-storage"
host_path = "/ecs/name-storage"
}
}
resource "aws_ecs_service" "name" {
name = "name"
cluster = "${aws_ecs_cluster.main.id}"
task_definition = "${aws_ecs_task_definition.name.arn}"
desired_count = 1
iam_role = "${aws_iam_role.ecs_service_role.arn}"
depends_on = ["aws_iam_role_policy.ecs_service_role_policy"]
load_balancer {
elb_name = "${aws_elb.name.id}"
container_name = "name"
container_port = 8000
}
}
在 task-definitions/name.json
我有:
"mountPoints": [
{
"sourceVolume": "name-storage",
"containerPath": "/var/lib/cassandra"
}
]
我如何实际获取托管此服务的实例上的卷?
在 Docker 容器内安装卷不同于配置 EBS 存储。您复制了 ECS service/task 设置的配置,但没有复制 ECS 实例的设置(它应该是一个普通的 EC2 实例)。如果您使用标准 ECS 优化的 Amazon 系统映像,一些标准 EBS 卷会在设置时自动创建。
问题仍然存在,您是否想在使用 ECS 时在 Docker 容器中安装卷。在很多情况下,这是不需要的 and/or 还有其他更好的解决方案。 ECS 的构建前提是任何容器都可以 运行 在集群中的任何实例上,如果您需要来自容器外部的特定数据,则此前提可能不成立。
我正在尝试使用 Terraform 设置 ECS 集群,但我不知道如何在托管需要该卷的服务的 ECS 实例上让 Terraform 自动配置 EBS 卷。
在我的配置中我有:
resource "aws_ecs_task_definition" "name" {
family = "name"
container_definitions = "${file("task-definitions/name.json")}"
volume {
name = "name-storage"
host_path = "/ecs/name-storage"
}
}
resource "aws_ecs_service" "name" {
name = "name"
cluster = "${aws_ecs_cluster.main.id}"
task_definition = "${aws_ecs_task_definition.name.arn}"
desired_count = 1
iam_role = "${aws_iam_role.ecs_service_role.arn}"
depends_on = ["aws_iam_role_policy.ecs_service_role_policy"]
load_balancer {
elb_name = "${aws_elb.name.id}"
container_name = "name"
container_port = 8000
}
}
在 task-definitions/name.json
我有:
"mountPoints": [
{
"sourceVolume": "name-storage",
"containerPath": "/var/lib/cassandra"
}
]
我如何实际获取托管此服务的实例上的卷?
在 Docker 容器内安装卷不同于配置 EBS 存储。您复制了 ECS service/task 设置的配置,但没有复制 ECS 实例的设置(它应该是一个普通的 EC2 实例)。如果您使用标准 ECS 优化的 Amazon 系统映像,一些标准 EBS 卷会在设置时自动创建。
问题仍然存在,您是否想在使用 ECS 时在 Docker 容器中安装卷。在很多情况下,这是不需要的 and/or 还有其他更好的解决方案。 ECS 的构建前提是任何容器都可以 运行 在集群中的任何实例上,如果您需要来自容器外部的特定数据,则此前提可能不成立。