Chapter 1: Configuration
Project Configuration

Project setup

Make sure you have the serverless framework installed. You can install it by running the following command in a terminal:

$ npm i serverless -g

AWS environment variables setup

Login to your AWS account. Select programmatic access from the menu and copy the environment variables.

💡 If you are new to AWS, follow this guide to configure your AWS credentials.

Set the environment variables by running the following command in your terminal:

export AWS_ACCESS_KEY_ID="ASIA......"

You can also set up an AWS profile. AWS allows you to set up multiple profiles. Follow this guide to learn more.

Create a new AWS Serverless project

Create a new project by running the following command in your terminal:

$ serverless create --template aws-nodejs

Find the serverles.yml file in the code and add the following changes:

service: fauna-aws-workshop
frameworkVersion: '3'
  name: aws
  runtime: nodejs14.x
    cors: true
    handler: handler.hello
      - httpApi:
          method: POST
          path: /book-vacation

In the code above, we are creating a simple REST API using the serverless framework infrastructure as code.

Next, run the following command to ensure you can deploy your stack to AWS:

$ sls deploy

Once the deployment is complete, you get a URL for your API. Make a POST call to the endpoint to ensure everything works as expected.


💡 Pro Tip:

The serverless framework creates all the cloud formation files under a folder called .serverless. You can port this to your solution if you want to use another IoC (SAM, CDK, etc.). The workshop demo app repository includes the cloud formation files.

Configure Fauna

Head over to and create a new database.

Then select Security > Keys > New Key option to generate a new key.


Select Admin for the Role, give your key a name, and select Save.


Next, head back to the code. Add the fauna-serverless plugin and dot-env plugin to your project. Run the following command in your terminal to install these packages:

$ npm i @fauna-labs/serverless-fauna serverless-dotenv-plugin --save

Create a .env file in the root of your application and add the Fauna key and domain:

FAUNA_ROOT_KEY='fnAEsUSh...' # Your Admin Key
FAUNA_DOMAIN='' # Your database's Region Group Domain

Region groups in Fauna

Region Groups provide control over where your data resides in Fauna. Each database, its storage, and compute services exist in a specific geographic region. You control the region group by specifying the domain.

  • Here are some options for different Region Groups and their domains in Fauna.

    US region
    EU region
    Classic region

We want to create a new collection called Vacation and an index vacations_by_userId to find vacations by userId. You can do this through the serverless framework without touching any UI. Add the following changes to your serverless.yml file.

service: fauna-aws-workshop
frameworkVersion: '2.72.3'
**# Specify dotenv
useDotenv: true
# Add Fauna plugin
  - serverless-dotenv-plugin
  - fauna-labs/serverless-fauna
    secret: ${env:FAUNA_ROOT_KEY}
    domain: ${env:FAUNA_DOMAIN}
      name: Vacation
      name: vacations_by_userId
      source: Vacation
          - data.userId**
  ... # rest of the file

Run the sls deploy command to push the changes. A new collection and an index in your Fauna database is created once the deploy script finishes running.

Last updated on August 5, 2022