При создании лямбда-функции не очень сложно зашифровать переменную среды через консоль графического интерфейса.Я просто ввожу пары ключ-значение, затем открываю помощник по шифрованию и ввожу ARN моего ключа KMS.Это позволяет мне зашифровать значение, поэтому оно зашифровывается перед отправкой для сохранения, как показано на рисунке выше.
То, что я пытаюсь сделать, это точно то же самое, но при условии, что вы развертываетеэта функция Lamba не в консоли GUI, а через шаблон 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: ключ / b24e7c79-a14d-4a3e-b848-165115c210HandlerFunctionName = "lambda_function.lambda_handler" MemorySize = "128" Role = "arn: aws: iam :: 507845137246: роль / тест-сервер-default-us-east-1-lambdaRole" FuncName = "myCLILambda"
После запуска этого в CLI я не получаю ошибок, но когда я открываю функцию Lambda в консоли для проверки результатов, я вижу что-то вроде этого:
Куда я иду?Спасибо за любые идеи.