Amazon web services 环境变量大小的Netlify限制

Amazon web services 环境变量大小的Netlify限制,amazon-web-services,aws-lambda,environment-variables,serverless,netlify,Amazon Web Services,Aws Lambda,Environment Variables,Serverless,Netlify,据我所知,Netlify环境变量对大小有一些限制。仔细观察,他们在引擎盖下使用AWS,并且受到相同的限制。最值得注意的是: 密钥最多可包含128个字符。值最多可包含256个字符 当以字符串形式存储且格式键=值时,所有环境属性的组合大小不能超过4096字节 我通过Netlify中的环境变量将JWT密钥传递给我的无服务器函数。有问题的密钥(特别是私钥)足够长,可以无视这些限制。我的私钥至少为3K个字符;远远超过上述256条 其他人是如何绕过这个问题的?有没有其他方法可以添加长密钥而不必将它们包含

据我所知,Netlify环境变量对大小有一些限制。仔细观察,他们在引擎盖下使用AWS,并且受到相同的限制。最值得注意的是:

  • 密钥最多可包含128个字符。值最多可包含256个字符
  • 当以字符串形式存储且格式键=值时,所有环境属性的组合大小不能超过4096字节
我通过Netlify中的环境变量将JWT密钥传递给我的无服务器函数。有问题的密钥(特别是私钥)足够长,可以无视这些限制。我的私钥至少为3K个字符;远远超过上述256条

其他人是如何绕过这个问题的?有没有其他方法可以添加长密钥而不必将它们包含在代码库中?

您不应该将这些密钥存储在环境变量中。即使环境变量可以加密,对于这样的敏感信息,我也不建议使用它。我可以想出两种可能的解决办法

解决方案1

使用AWS系统管理器(SSM)。具体来说,您应该使用。在那里,您可以像环境变量一样创建密钥-值对,并且可以将它们标记为“SecureString”,以便对它们进行加密

然后使用AWS SDK从应用程序中的SSM读取值

这种方法的一个好处是,您可以使用IAM限制对这些SSM参数的访问,并确保只有受信任的人员/应用程序才具有访问权限。如果使用环境变量,则无法单独管理对这些值的访问

解决方案2

据我所知,那些钥匙一定是从什么地方来的。通常,您使用的任何身份验证提供程序(例如Auth0、Okta)都有“密钥端点”。在应用程序中,可以使用HTTP调用从端点获取密钥,然后在应用程序中缓存一段时间,以避免不必要的HTTP请求

这种方法的好处是您不必自己管理这些密钥。当它们因任何原因更改时,您将不需要更改任何内容/部署任何内容以使您的应用程序使用新的密钥。虽然这种情况不应该经常发生,但从我的观点来看,在SSM中“硬编码”密钥仍然是合理的