Fastly KV Store is a globally consistent key-value storage accessible across the Fastly Network. This makes it possible for your Compute application to read and write from KV Stores. The application shows how to use Fastly KV Store within a TypeScript Compute application.
For more details about other starter kits for Compute, see the Fastly developer hub
This is the entry point of the application, an event-listener is attached to the fetch event, which calls the application code and include some generic exception handling, which would print any uncaught exception to the stderr and return a response with a HTTP 500 status to the user-agent.
This is where the majority of our application code lives. A single async function is exported named app, which is the function that recieves the incoming FetchEvent and returns a Response instance, which will be sent to the user-agent.
To create an application using this starter kit, create a new directory for your application and switch to it, and then type the following command:
npm create @fastly/compute@latest -- --language=typescript --starter-kit=kv-storeTo build and run your new application in the local development environment, type the following command:
npm run startNote that Fastly Services have to have unique names within a Fastly Account.
To create and deploy to a new Fastly Service run the command and follow the instructions:
npm run deployThat is it, we now have a Fastly Service, a Fastly KV Store and have them linked together!
You can view real-time logs for the Fastly Service by running:
npx fastly log-tailIt is possible to add key-value pairs to an KV Store using the Fastly CLI like so:
npx fastly kv-store-entry create --store-id=$FASTLY_KV_STORE_ID --key-name=$KEY --value=$VALUEFor example, here is how you could add to the KV Store named my-store a key named readme whose value is the contents of README.md:
npx fastly kv-store-entry create --store-id="$(npx fastly kv-store list --json | jq -r '.Data[]|select(.Name=="my-store").ID')" --key-name="readme" --value="$(cat README.md)"Please see our SECURITY.md for guidance on reporting security-related issues.