我有一个执行域委托的 terraform 模块。对于多个变量,会针对硬编码值进行一些验证,以检查用户是否使用有效的输入,例如:
resource "null_resource" "validate_region" {
count = contains(local.regions, var.region) == true ? 0 : "Please provide a valid AWS region. E.g. (us-west-2)"
}
Run Code Online (Sandbox Code Playgroud)
是local.regions
硬编码的并且var.region
是用户设置的变量。上面的代码的工作原理是,当用户设置错误的变量时,它会抛出如下错误:
Error: Incorrect value type
on .terraform/foo/main.tf line 46, in resource "null_resource" "validate_region":
46: count = contains(local.regions, var.region) == true ? 0 : "Please provide a valid AWS region. E.g. (us-west-2)"
Invalid expression value: a number is required.
Run Code Online (Sandbox Code Playgroud)
我现在需要验证用户当前使用的 AWS 账户是否正确。在这种情况下,用户需要在其变量中设置正确帐户的帐户 ID,而我的代码需要提取正在运行模块的帐户的帐户 ID,并将其与用户的变量进行比较。我尝试过这样的事情:
data "aws_caller_identity" "account" {}
resource "null_resource" "validate_account" { …
Run Code Online (Sandbox Code Playgroud)