myEnvVariablesFunction
等)。
尽管我已经成功删除了敏感键(例如秘密和访问键)并找到了适当的解决方法来处理它们,但我仍在寻找一个可靠的解决方案来管理键值,例如API基础URL,可以方便地跨不同的不同环境如果您遇到过类似的问题,我希望能得到您的帮助。
将是一种在Web应用中动态注入环境变量的一种方法,以保持跨环境构建的same
构建,这是我到目前为止发现的最干净的方法。这有点复杂,但是如果您有动力,则以下解决方案是使用
cloudfrontfunctions使用
cloudfrontkeyValuestoreSESSIONSESSIONCOOKIE.。 创建新的云范围函数 名称 选择Cloudfront-js-2.0能够访问kvs.
您不需要存储在
myEnvVariablesKVS
S3
按钮
Create
myEnvVariablesKVS
Add key value pairs
注意:在进入下一个字段之前,请不要忘记单击“小检查”按钮或按“ Enter”。 然后,您可以
Add pair
- Key: d123.cloudfront.net
- Value: { "env": "test", "backend": "https://test-mybackend.com", "videos": "https://test-third-party-videos.com" }
单击go tofunctions
Edit
单击
- Key: dmycloudfrontprodid.cloudfront.net
- Value: { "env": "prod", "backend": "https://prod-mybackend.com", "videos": "https://prod-third-party-videos.com" }
,然后选择
myEnvVariablesFunction
在
Associate existing KeyValueStore
/
myEnvVariablesKVS
选项卡上,您可以粘贴以下代码:
Build
Development
下拉下选择import cf from 'cloudfront';
async function handler(event) {
const kvsHandle = cf.kvs();
const domain = event.context.distributionDomainName;
var response = event.response;
var cookies = response.cookies;
let dataEnv;
try {
const value = await kvsHandle.get(domain);
dataEnv = JSON.parse(value);
} catch (err) {
const errorMessage = `Error reading ${domain}: ${err}`;
console.log(errorMessage);
return {
statusCode: 500,
statusDescription: 'Error',
body: {
encoding: 'text',
message: errorMessage
}
};
}
if (!cookies) {
cookies = [];
}
const keys = Object.keys(dataEnv);
for (var i = 0; i < keys.length; i++) {
cookies[`${keys[i]}`] = {
"value": `${dataEnv[keys[i]]}`,
"attributes": "Secure; Path=/"
}
}
return response;
}
单击
Test
Viewer response
上go在
Event type
tab上
Test function
按钮Execution result
按钮
分布:选择您的分发Publish
Publish function
注意:此设置与直接在您的分布配置 /Add association
Viewer response
Default (*)
Behaviors
Viewer response
myEnvVariablesFunction
Add assocation
按钮一个人,您应该能够用包含前端环境变量的cookie加载您的网站,此处
backend
,
env
和
videos
document.cookie.split('; ').find((row) => row.startsWith('backend='))?.split('=')[1];
如果您想更新KV中的任何值,则可以进行更新,保存,并且应该能够在一分钟左右的时间内进行更改而无需任何缓存清除。
amazon cloudfrontkeyvaluestore
文档CloudFrontKeyValuestore
2023年12月12日介绍了一个URL重定向的演示另一个Ananthedemo
用于URLshortener