问题描述
我有一个用securestring类型和键值类型为(pasword = Passwor @ d123)创建的SSM参数。我正在尝试使用在计划输出中打印出值的数据资源来获取值。
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 decrypt API才能将密文实际解密为纯文本版本。
在两种情况下,您功能的执行角色都需要具有KMS和/或SSM参数存储的权限。