Skip to main content

Serverless TypeScript App

Basic example of a serverless AWS application

This example lives in the pulumi/examples repository. Check out just this directory to use it:

Get started with this example
git clone --filter=blob:none --sparse https://github.com/pulumi/examples pulumi-examples
git -C pulumi-examples sparse-checkout set aws-ts-serverless-raw
cd pulumi-examples/aws-ts-serverless-raw

This example deploys a complete serverless TypeScript application using raw aws.apigateway.RestAPI, aws.lambda.Function and aws.dynamodb.Table resources from @pulumi/aws. It demonstrates how to program AWS resources directly to build serverless applications.

The deployed Lambda function is a simple C# application, highlighting the ability to manage existing application code in a Pulumi application, even if your Pulumi code is written in a different language like JavaScript or Python.

The Lambda function is a C# application using .NET Core 3.1 (a similar approach works for any other language supported by AWS Lambda).

Deploying and running the Pulumi App#

  1. Create a new stack:

    Terminal window
    pulumi stack init dev
  2. Restore NPM modules via npm install or yarn install.

  3. Build the C# application.

    Terminal window
    dotnet publish app
  4. Set the AWS region:

    Terminal window
    pulumi config set aws:region us-east-2
  5. Optionally, set AWS Lambda provisioned concurrency:

    Terminal window
    pulumi config set provisionedConcurrency 1
  6. Run pulumi up to preview and deploy changes:

    $ pulumi up
    Previewing update (dev):
    ...
    Updating (dev):
    ...
    Resources:
    + 10 created
    Duration: 1m 20s
  7. Check the deployed GraphQL endpoint:

    $ curl $(pulumi stack output endpoint)/hello
    {"Path":"/hello","Count":0}
  8. See the logs

    $ pulumi logs -f
    2018-03-21T18:24:52.670-07:00[ mylambda-d719650] START RequestId: d1e95652-2d6f-11e8-93f6-2921c8ae65e7 Version: $LATEST
    2018-03-21T18:24:56.171-07:00[ mylambda-d719650] Getting count for '/hello'
    2018-03-21T18:25:01.327-07:00[ mylambda-d719650] Got count 0 for '/hello'
    2018-03-21T18:25:02.267-07:00[ mylambda-d719650] END RequestId: d1e95652-2d6f-11e8-93f6-2921c8ae65e7
    2018-03-21T18:25:02.267-07:00[ mylambda-d719650] REPORT RequestId: d1e95652-2d6f-11e8-93f6-2921c8ae65e7 Duration: 9540.93 ms Billed Duration: 9600 ms Memory Size: 128 MB Max Memory Used: 37 MB

Clean up#

  1. Run pulumi destroy to tear down all resources.

  2. To delete the stack itself, run pulumi stack rm. Note that this command deletes all deployment history from the Pulumi console.

Related

The infrastructure as code platform for any cloud.