【问题标题】:Netlify restrictions on environment variable sizeNetlify 对环境变量大小的限制
【发布时间】:2020-11-26 07:30:21
【问题描述】:
据我了解,Netlify 环境变量对大小有一些限制。调查一下,他们在后台使用 AWS 并受到相同的限制 as this service。最值得注意的是:
- 键最多可包含 128 个字符。值最多可包含 256 个字符。
- 当以 key=value 格式存储为字符串时,所有环境属性的总大小不能超过 4,096 字节。
我通过 Netlify 中的环境变量将 JWT 密钥传递给我的无服务器函数。有问题的密钥(尤其是私钥)足够长,可以无视这些限制。我的私钥至少有 3K 个字符;远远超过上面列出的 256 个。
其他人是如何设法解决这个问题的?是否有另一种方法可以添加冗长的键而不必将它们包含在您的代码库中?
【问题讨论】:
标签:
amazon-web-services
aws-lambda
environment-variables
serverless
netlify
【解决方案1】:
您应该不将这些键存储在环境变量中。即使环境变量可以加密,但对于像这样的敏感信息,我不建议使用它。我能想到两种可能的解决方案。
解决方案 1
使用AWS Systems Manager (SSM)。具体来说,您应该使用parameter store。在那里你可以像你的环境变量一样创建键值对,它们可以被标记为“SecureString”,所以它们是加密的。
然后您使用 AWS 开发工具包从您的应用程序中的 SSM 读取值。
这种方法的一个好处是,您可以使用 IAM 来限制对这些 SSM 参数的访问,并确保只有受信任的人/应用程序才能访问。如果您使用环境变量,则无法单独管理对这些值的访问。
解决方案 2
据我所知,这些密钥一定来自某个地方。通常,您使用的任何身份验证提供程序(例如 Auth0、Okta)都有“关键端点”。在您的应用程序中,您可以使用 HTTP 调用从端点获取密钥,然后将它们缓存在您的应用程序中一段时间,以避免不必要的 HTTP 请求。
这种方法的好处是您不必自己管理这些密钥。当它们因任何原因发生更改时,您无需更改任何内容/部署任何内容即可使您的应用程序使用新密钥。虽然这不应该经常发生,但从我的角度来看,在 SSM 中“硬编码”密钥仍然是合理的。