amazon-web-services - 通过 terraform 部署 AWS WorkSpaces 时出现 ValidationException 错误
问题描述
我一直在尝试使用 Terraform 部署 AWS WorkSpaces 基础设施。代码本身通过了验证和计划检查,但未能应用。
资源:
module "networking" {
source = "../../modules/networking"
region = var.region
main_cidr_block = var.main_cidr_block
cidr_block_1 = var.cidr_block_1
cidr_block_2 = var.cidr_block_2
size = var.size
}
resource "aws_directory_service_directory" "main" {
name = var.aws_ds_name
password = var.aws_ds_passwd
size = var.size
type = "SimpleAD"
vpc_settings {
vpc_id = module.networking.main_vpc
subnet_ids = ["${module.networking.private-0}", "${module.networking.private-1}"]
}
}
resource "aws_workspaces_directory" "main" {
directory_id = aws_directory_service_directory.main.id
subnet_ids = ["${module.networking.private-0}", "${module.networking.private-1}"]
}
resource "aws_workspaces_ip_group" "main" {
name = "Contractors."
description = "Main IP access control group"
rules {
source = "10.0.0.0/16"
description = "Contractors"
}
}
错误代码:
ValidationException: 2 validation errors detected: Value at 'password' failed to satisfy constraint: Member must satisfy regular expression pattern: (?=^.{8,64}$)((?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[^A-Za-z0-9\s])(?=.*[a-z])|(?=.*[^A-Za-z0-9\s])(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9\s]))^.*; Value '' at 'name' failed to satisfy constraint: Member must satisfy regular expression pattern: ^([a-zA-Z0-9]+[\\.-])+([a-zA-Z0-9])+$
status code: 400, request id: 073f6e61-775e-4ff9-a88e-e1eab97f8519
on modules/workspaces/workspaces.tf line 10, in resource "aws_directory_service_directory" "main":
10: resource "aws_directory_service_directory" "main" {
我知道这是用户名/密码的正则表达式问题,但我目前尚未设置任何用户,并且出于测试原因我已重置安全策略。
以前有人遇到过这个问题吗?
解决方案
目录服务的AWS API 对password
属性实施约束,并匹配您在运行时在该错误中看到的内容terraform apply
:
密码
目录管理员的密码。目录创建过程使用用户名 Administrator 和此密码创建目录管理员帐户。
如果您需要更改管理员帐户的密码,可以使用 ResetUserPassword API 调用。
类型:字符串
图案:
(?=^.{8,64}$)((?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[^A-Za-z0-9\s])(?=.*[a-z])|(?=.*[^A-Za-z0-9\s])(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9\s]))^.*
要求:是
通常,Terraform 能够使用计划或验证命令来验证这一点,但不幸的是,AWS 提供商目前缺少适当的ValidateFunc
,因此它只会在应用时失败,而不是在分钟时失败。
如果您希望在计划或验证时捕获此问题,则应在提供程序问题跟踪器上提出功能请求。
推荐阅读
- php - Anti XSS PHP Library (Class 'voku\\helper\\AntiXSS')
- google-apps-script - 使用 .getValues() 中的 set.Values() 时如何忽略空单元格
- javascript - 如何使用 Mocha 在客户端 WebSocket 上进行测试?接收 ReferenceError:未定义 WebSocket
- typescript - 标记日期格式字符串
- android - Flutter WillPopScope 对我来说正常工作,但是当我导航或推回同一页面时它不起作用
- android - 启动测试用例时出现自动化测试错误
- laravel - 有什么方法可以在控制器中循环一个函数以进行多数据验证?
- javascript - 在 JavaScript 中检查变量是否为数组的最有效方法?
- javascript - 以角度着色单元格xlsx
- python - 是否可以在数据框中格式化数字而不将它们转换为字符串?