如何隐藏地形aws_ssm_parameter值

问题描述

我有一个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参数存储的权限。