在函数中使用键值对
您可以在函数中使用键值存储中的键值对。
此示例演示了一个函数,该函数使用 HTTP 请求中的 URL 内容,在键值存储中查找自定义路径。然后,CloudFront 使用该自定义路径来发出请求。此函数有助于管理作为网站一部分的多个路径。
例如,如果较早的博客具有源路径 /blog-v1
,而新博客具有源路径 /blog-v2
,则此函数可以查找传入请求的 URL 路径,并将 URL 路径 (/blog-v1)
重写为新版本的博客 (/blog-v2)
。
注意
对于以下代码示例,您必须使用 JavaScript 运行时 2.0。
import cf from 'cloudfront'; // This fails if there is no key value store associated with the function const kvsHandle = cf.kvs(); // Remember to associate the KVS with your function before referencing KVS in your code. // https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/kvs-with-functions-associate.html async function handler(event) { const request = event.request; // Use the first segment of the pathname as key // For example http(s)://domain/key/something/else const pathSegments = request.uri.split('/') const key = pathSegments[1] try { // Replace the first path of the pathname with the value of the key // For example http(s)://domain/value/something/else pathSegments[1] = await kvsHandle.get(key); const newUri = pathSegments.join('/'); console.log(`${request.uri} -> ${newUri}`) request.uri = newUri; } catch (err) { // No change to the pathname if the key is not found console.log(`${request.uri} | ${err}`); } return request; }