関数でキーと値のペアを使用する
キーバリューストアのキーと値のペアを関数で使用できます。
この例は、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; }