docker - 带有 terraform 和 efs 的 AWS ECS 任务定义 - 未知卷
问题描述
我正在尝试保留容器数据,为此我想安装一个卷。这是我的任务定义,尽管声明它会引发未知卷错误。
aws_ecs_task_definition.wordpress:正在创建...错误:ClientException:未知卷'wordpress-volume'。
locals {
username = jsondecode(data.aws_secretsmanager_secret_version.wordpress.secret_string)["username"]
password = jsondecode(data.aws_secretsmanager_secret_version.wordpress.secret_string)["password"]
}
resource "aws_ecs_task_definition" "wordpress" {
family = "wordpress"
container_definitions = jsonencode([{
name = "wordpress"
image = "wordpress"
essential = true
cpu = 256
memory = 512
entryPoint = [ "sh", "-c"]
command = ["ls -la /var/www/html"]
volumes = [{
name = "wordpress-volume"
efsVolumeConfiguration = {
fileSystemId = aws_efs_file_system.wordpress.id
}
}]
mountPoints = [{
sourceVolume = "wordpress-volume"
containerPath = "/var/www/html"
readOnly = false
}]
environment = [{
name = "WORDPRESS_DB_HOST"
value = "127.0.0.1"},
{
name = "WORDPRESS_DB_USER"
value = local.username
},
{
name = "WORDPRESS_DB_PASSWORD"
value = local.password
},
{
name = "WORDPRESS_DB_NAME"
value = "wordpressdb"
}]
portMappings = [{
protocol = "tcp"
containerPort = 80
hostPort = 80
}]
}])
network_mode = "awsvpc"
requires_compatibilities = ["FARGATE"]
execution_role_arn = aws_iam_role.ecs_task_execution_role.arn
task_role_arn = aws_iam_role.ecs_task_role.arn
cpu = 1024
memory = 3072
}
解决方案
您的volumes
定义不应该在里面container_definitions
,而是aws_ecs_task_definition
资源参数的一部分。
所以,你应该把这部分移到外面:
volumes = [{
name = "wordpress-volume"
efsVolumeConfiguration = {
fileSystemId = aws_efs_file_system.wordpress.id
}
}]
到
resource "aws_ecs_task_definition" "wordpress" {
...
volume {
name = "wordpress-volume"
efs_volume_configuration {
file_system_id = aws_efs_file_system.wordpress.id
}
}
...
}
请参阅文档:
- https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_task_definition#volume-block-arguments
- https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_TaskDefinition.html
和容器定义文档:
推荐阅读
- azure - 如何在一个 Azure WebApp 上发布两个 .net 网站?
- magento2 - 品牌页面上的元标记
- swift - 如何使用 Calendar.current.startOfDay 修复由于 Core Data 中的时区导致的错误日期?
- azure - 导出零行数据时,有没有办法阻止 Azure ML 抛出错误?
- swift - 如何在 xcassets 文件中获取图像的 url
- c++ - 通过 region->put 更新缓存时,无法将 afterCreate 事件转换为 PdxInstance
- ios - React Native MapView 未在 iOS 独立版本上显示
- reactjs - 首次渲染时无法从 useEffect 访问状态挂钩到其他函数
- ontology - SSN 本体 RDF 中似乎故意遗漏了一些子类。有没有办法导入完整的 SSN 本体?
- c# - 如何将 C# 中的方法指针传递给 C 库?