无服务器-AWS-SecureLambdaFunction env

时间:2019-02-14 21:26:06

标签: serverless-framework serverless

我遇到以下情况:

我在我的serverless.yml文件上设置了几个环境变量,例如:

ONE_CLIENT_SECRET=${ssm:/one/key_one~true}
ONE_CLIENT_PUBLIC=${ssm:/one/key_two~true}

ANOTHER_SERVICE_KEY=${ssm:/two/key_one~true}
ANOTHER_SERVICE_SECRET=${ssm:/two/key_two~true}

让我说我喜欢10个环境,当我尝试部署时出现以下错误:

An error occurred: SecureLambdaFunction - Lambda was unable to configure your environment variables because the environment variables you have provided exceeded the 4KB limit. String measured: JSON_WITH_MY_VARIABLES_HERE

所以我无法部署,我对问题有一个了解,但是我没有明确的解决方案,所以我的问题是:

1)如何扩展4Kb限制?
2)假设我的变量是使用SSM设置的,我正在使用EC2参数存储来保存它们。 (这与无服务器团队或了解此主题的人有关),它在幕后如何工作?    -运行sls deploy时是否获取值并包含在.zip文件中? (这就是我想做的,我只是想澄清一下)还是在执行lambda时获取值?我问是因为我进入了aws lambda控制台,并且在那里可以看到em设置。

谢谢!

1 个答案:

答案 0 :(得分:0)

深入研究后,得出以下结论:

使用此模式# A tibble: 3 x 4 x d e f <chr> <dbl> <dbl> <dbl> 1 a 10 0 0 2 b 0 20 0 3 c 0 0 21 意味着sls框架将在编译时下载值并将其嵌入项目中,这就是问题所在,您可以在上传项目后看到此内容,您的变量是将在lambda控制台上以纯文本设置。

我的解决方案是在执行lambda时使用中间的中间件加载ssm值。这意味着,您需要以一种在变量可用之前不会触发任何代码的方式对项目进行编码,并找到一种很好的策略来捕获变量(冷启动),否则,将增加执行时间。

4Kb的限制无法更改,并且在阅读此内容后,这似乎很明显。

简而言之,如果发现此问题,请找到一种中间件策略并嵌入最适合您的价值。