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.
- Install Pulumi.
- Install Node.js.
- Configure your AWS credentials.
-
Clone this repo, change to this directory, then create a new stack for the project:
pulumi stack init
-
Specify an AWS region to deploy into:
pulumi config set aws:region us-west-2
-
Install Node dependencies and run Pulumi:
npm install pulumi up
-
In a few moments, the API Gateway instance service will be up and running and its public URL emitted as a Pulumi stack output.
... Outputs: url: "https://andchh8hg8.execute-api.us-west-2.amazonaws.com/dev"
-
Verify the deployment with
curl
:With invalid POST data:
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:
curl --data '{"name": "Chris"}' --header "Content-Type: application/json" "$(pulumi stack output url)/uploads" HTTP/2 201 {"accepted":true}
-
Verify the Lambda was invoked with
pulumi logs
:pulumi logs --follow Collecting logs for stack dev since 2022-01-06T16:18:48.000-08:00. ... { source: 'my-event-source', detail: { 'name': 'Chris' } }
-
When you're ready, destroy your stack and remove it:
pulumi destroy --yes pulumi stack rm --yes