Skip to main content

Serverless C# 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-py-serverless-raw
cd pulumi-examples/aws-py-serverless-raw

This example deploys a complete serverless C# application using raw aws.apigateway.RestApi, aws.lambda_.Function and aws.dynamodb.Table resources from pulumi_aws. Although this doesn’t feature any of the higher-level abstractions from the pulumi_cloud package, it demonstrates that you can program the raw resources directly available in AWS to accomplish all of the same things this higher-level package offers.

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. Build the C# application.

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

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

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

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

    $ curl $(pulumi stack output endpoint)/hello
    {"Path":"/hello","Count":0}
  7. 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.