gpt4 book ai didi

amazon-web-services - 如何通过 CLI 加密 Lambda 的环境变量?

转载 作者:行者123 更新时间:2023-12-04 00:15:45 24 4
gpt4 key购买 nike

enter image description here

创建 Lambda 函数时,通过 GUI 控制台加密环境变量并不困难。我只需输入键值对,然后打开加密助手并输入我的 KMS key 的 ARN。这允许我加密该值,因此在发送存储之前对其进行加密,如上图所示。

我想要完成的是完全相同的事情,但假设您不是在 GUI 控制台中部署 Lamba 函数,而是通过 CloudFormation 模板(该模板部署在 CLI 中).

以下是我在 CloudFormation 模板中指定相关参数的方法:

"EnvironmentVariable" : {
"Type" : "String",
"Default" : "test",
"Description" : "Environment Variable"
},
"KmsKeyArn" : {
"Type" : "String",
"Description" : "KMS Key ARN if environment variables are encrypted"
},

以下是我在模板的“资源”部分中引用 Lambda 资源中的这些参数的方式:

"Environment" : {
"Variables" : {
"SomeVariable": {
"Ref" : "EnvironmentVariable"
}
}
},
"KmsKeyArn" : { "Ref" : "KmsKeyArn" },

以下是我在 CLI 中部署此模板的方式(更改了我的所有 ARN 和其他值以保护隐私,但保持其结构):

aws cloudformation deploy --template-file lambda-template.json --stack-name "CLI-lambda-stack" --parameter-overrides S3BucketName="theBucket" S3FileLocation="lambda_function.zip" S3ObjectVersion="ZuB0eueEgh2yh5q00.DiykLNudujdsc5" DeadLetterArn="arn:aws:sns:us-west-2:526598937246:CloudFormationTests" EnvironmentVariable="testing" KmsKeyArn="arn:aws:kms:us-west-2:227866537246:key/b24e7c79-a14d-4a3e-b848-165115c86210" HandlerFunctionName="lambda_function.lambda_handler" MemorySize="128" Role="arn:aws:iam::507845137246:role/serverless-test-default-us-east-1-lambdaRole" FuncName="myCLILambda"

在 CLI 中运行此命令后,我没有收到任何错误,但是当我在控制台中打开 Lambda 函数来检查结果时,我看到如下内容:

enter image description here

我哪里出错了?感谢您提供任何见解。

最佳答案

  1. 如果您还没有 KMS key ,请创建一个(AWS > IAM > 加密 key > 创建新 key > 提供别名)。获取KeyId。
  2. 通过 KMS 加密您的变量。示例:

$ aws kms encrypt --key-id $KEY_ID --plaintext Secretpassword --output text --query CiphertextBlob

AQICAHjZ+JlI8KKmiVc++NhnBcO0xX3LFAaCfsjH8Yjig3Yr2AFPIyKCp3XVOEDlbiTMWiejAAAAbDBqBgkqhkiG9w0BBwagXTBbAgEAMFYGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMhai9vkA2KdU 5gd+qAgEQgCnWW4F3fb7pTwmA2ppskJhUl0dJGEXIE5oDCr3ZsH7TlN5X381juPg0LA==

将其保留在 CF 模板中,如下所示

"environment_variables": {
"SECRET_DATA": "AQICAHjZ+JlI8KKmiVc++NhnBcO0xX3LFAaCfsjH8Yjig3Yr2AFPIyKCp3XVOEDlbiTMWiejAAAAbDBqBgkqhkiG9w0BBwagXTBbAgEAMFYGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMhai9vkA2KdU5gd+qAgEQgCnWW4F3fb7pTwmA2ppskJhUl0dJGEXIE5oDCr3ZsH7TlN5X381juPg0LA=="
}

3.在 Lambda 函数内部解密

kms = boto3.client('kms')
response = kms.decrypt(CiphertextBlob=os.environ['SECRET_DATA'].decode('base64'))
secret_data = response['Plaintext']
secret_data

或者尝试此选项:https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-about.html#sysman-paramstore-securestring

关于amazon-web-services - 如何通过 CLI 加密 Lambda 的环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52990383/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com