Skip to main content

Search the Dev Center

Search tutorials, templates, examples, and more.

API Gateway V1 to EventBridge

A minimal AWS TypeScript Pulumi program

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-apigateway-eventbridge
cd pulumi-examples/aws-ts-apigateway-eventbridge

This example demonstrates an API Gateway V1 integration with EventBridge and Lambda that also validates request bodies (using an API Gateway model) and returns a custom HTTP response.

Prerequisites#

  1. Install Pulumi
  2. Configure AWS credentials
  3. Install Node.js

Deploying the example#

  1. Clone this repo, change to this directory, then create a new stack for the project:

    Terminal window
    pulumi stack init
  2. Specify an AWS region to deploy into:

    Terminal window
    pulumi config set aws:region us-west-2
  3. Install dependencies:

    Terminal window
    npm install
  4. Deploy the stack:

    Terminal window
    pulumi up
  5. In a few moments, the API Gateway instance service will be up and running and its public URL emitted as a Pulumi stack output.

    Terminal window
    ...
    Outputs:
    url: "https://andchh8hg8.execute-api.us-west-2.amazonaws.com/dev"
  6. Verify the deployment with curl:

    With invalid POST data:

    Terminal window
    curl --data '{"some-invalid-property-name": "Chris"}' --header "Content-Type: application/json" "$(pulumi stack output url)/uploads"
    HTTP/2 400
    {"message": "Invalid request body"}

    With valid POST data:

    Terminal window
    curl --data '{"name": "Chris"}' --header "Content-Type: application/json" "$(pulumi stack output url)/uploads"
    HTTP/2 201
    {"accepted":true}
  7. Verify the Lambda was invoked with pulumi logs:

    Terminal window
    pulumi logs --follow
    Collecting logs for stack dev since 2022-01-06T16:18:48.000-08:00.
    ...
    {
    source: 'my-event-source',
    detail: { 'name': 'Chris' }
    }

Cleaning up#

When you’re ready, destroy your stack and remove it:

Terminal window
pulumi destroy
pulumi stack rm

Related

The infrastructure as code platform for any cloud.