【发布时间】:2021-09-17 08:53:16
【问题描述】:
我有一个如下所示的 Terraform 配置:
resource "random_string" "foo" {
length = 31
special = false
}
resource "aws_ssm_parameter" "bar" {
name = "baz"
type = "SecureString"
value = random_string.foo.result
lifecycle {
ignore_changes = [value]
}
}
这个想法是,在第一个 terraform apply 上,bar 资源将根据 foo 的值存储在 SSM 中的 baz 中,然后在随后调用 apply 时,我将能够引用aws_ssm_parameter.bar.value,但我看到的是它在第一次运行时工作,存储新创建的随机值,然后在后续运行aws_ssm_parameter.bar.value 为空。
如果我创建一个可以正确提取值的aws_ssm_parameter 数据源,但它在第一个apply 尚不存在时不起作用。如何修改此配置,以便我可以在 SSM 中获取存储在 baz 中的值并在同一配置中创建值?
【问题讨论】:
-
您是否尝试将值存储在您的状态中?
-
奇怪的是,当我拉取状态时,我实际上看到了存储在其中的值,但是当它被使用时,它是空的/null。
-
您运行 Terraform 的 IAM 用户/角色是否有权使用
kms:Decrypt操作和用于加密此SecureString参数的 KMS 密钥?有关于需要什么的信息in the SSM documentation。 -
我查了一下,我使用的角色确实有
kms:Decrypt。
标签: terraform terraform-provider-aws ssm