如何使用 AWS CLI 设置加密的 Lambda 环境变量?
How do I use the AWS CLI to set encrypted Lambda environment variables?
我在本地有 AWS Lambda 环境变量,想要使用特定的 KMS 密钥加密并分配给 Lambda 函数。
我以为是
aws lambda update-function-configuration --function-name functionName --cli-input-json file://config.json
和config.json
一样
{
"Environment": {
"Variables": {
"var01": "Variable one",
"var02": "Variable two"
}
},
"KMSKeyArn": "arn:aws:kms:us-west-1:09238573743:key/...."
}
可以做到这一点。但变量最终未加密。 "KMSKeyArn" 似乎只用于解密(例如在函数的处理程序中使用 boto3.client('kms').decrypt
)。
我如何使用 AWS CLI 获取本地(未加密)值,最好在 JSON 上指定,并使用特定的 KMS 密钥将它们分配为 Lambda 函数环境变量的加密值(并确保相同键已分配给 boto3.client('kms').decrypt
使用的功能?
我还想确保我的变量永远不会以纯文本形式传输(即,加密发生在本地),如果可能的话。
与 AWS 控制台不同,AWS 控制台是为跨各种服务进行多次调用而构建的,AWS CLI 进行一次调用。
这就是为什么 $ aws lambda update-function-configuration
不会加密我们的变量。
因此,为了完成这个,我们只需要两个命令:
$ aws kms encrypt --key-id **** --plaintext "Variable one"
然后从结果中取出密文,作为变量:
$ aws lambda update-function-configuration --function-name functionName --kms-key-arn **** --environment Variables={var01=XXXXXXXXX}
-- 编辑:
我们可以在 aws lambda update-function-configuration
命令的参数中设置的密钥用于静态加密。 (如在控制台中)
对于环境变量解密,不需要告诉lambda它必须使用哪个密钥,因为这个信息在密文中。但是我们必须确保 lambda 可以访问密钥,方法是在 AWS IAM 中将 lambda 的角色设置为密钥的用户。
我在本地有 AWS Lambda 环境变量,想要使用特定的 KMS 密钥加密并分配给 Lambda 函数。
我以为是
aws lambda update-function-configuration --function-name functionName --cli-input-json file://config.json
和config.json
一样
{
"Environment": {
"Variables": {
"var01": "Variable one",
"var02": "Variable two"
}
},
"KMSKeyArn": "arn:aws:kms:us-west-1:09238573743:key/...."
}
可以做到这一点。但变量最终未加密。 "KMSKeyArn" 似乎只用于解密(例如在函数的处理程序中使用 boto3.client('kms').decrypt
)。
我如何使用 AWS CLI 获取本地(未加密)值,最好在 JSON 上指定,并使用特定的 KMS 密钥将它们分配为 Lambda 函数环境变量的加密值(并确保相同键已分配给 boto3.client('kms').decrypt
使用的功能?
我还想确保我的变量永远不会以纯文本形式传输(即,加密发生在本地),如果可能的话。
与 AWS 控制台不同,AWS 控制台是为跨各种服务进行多次调用而构建的,AWS CLI 进行一次调用。
这就是为什么 $ aws lambda update-function-configuration
不会加密我们的变量。
因此,为了完成这个,我们只需要两个命令:
$ aws kms encrypt --key-id **** --plaintext "Variable one"
然后从结果中取出密文,作为变量:
$ aws lambda update-function-configuration --function-name functionName --kms-key-arn **** --environment Variables={var01=XXXXXXXXX}
-- 编辑:
我们可以在 aws lambda update-function-configuration
命令的参数中设置的密钥用于静态加密。 (如在控制台中)
对于环境变量解密,不需要告诉lambda它必须使用哪个密钥,因为这个信息在密文中。但是我们必须确保 lambda 可以访问密钥,方法是在 AWS IAM 中将 lambda 的角色设置为密钥的用户。