我创建了一个SSM参数,其类型为SecureString,键值为(pasword=Passwor@d123)。我正在尝试使用数据资源获取值,其中该值将打印在计划输出中。
data "aws_ssm_parameter" "foo" {
name = "password"
}
module "lamda_env_vars" {
New_password = data.aws_ssm_parameter.foo.value
}
plan output:-
New_paswword = Password@123
我尝试了如下加密。
data "aws_ssm_parameter" "foo" {
name = "password"
with_decryption = false
}
module "lambda_env_vars" {
New_password = data.aws_ssm_parameter.foo.value
}
plan output:-
New_password = Q#iuws##)9ssdhs(some encryptrd value)
这里的问题是,相同的加密哈希代码被指定为lambda函数的值。
如何在地形化计划时屏蔽值,并获得lambda函数的纯文本值?
通常,您只需要将SSM的SecretString
参数的名称作为env变量传递给lambda函数。然后lambda函数将从SSM参数存储中获取它自己。
如果您想在with_decryption = false
中使用方法,那么您的lambda函数必须调用KMS解密API,才能将密文解密为纯文本版本。
在这两种情况下,函数的执行角色都需要具有KMS和/或SSM参数存储的权限。