Aws CDK RestApi 👉🏽 Aws Service integration constructs
This CDK constructs library integrates AWS RestApi (a.k.a ApiGateway) with other AWS Services directly (without the need for a lambda function or any other application).
By integrating a service in this way we can easily, reliably and securely (using RestApi features) expose an AWS Service functionality via HTTP.
A common use case is integrating SNS to receive messages via HTTP.
Supported integrations
- SNS (PublishMessage)
- SQS (SendMessage)
- more coming soon, add an issue to ask for one you need.
Install
$ npm install cdk-rest-api-integrations --save
How to use - SNS
Add an SNS Topic and a RestApi to your stack, integrate them using a SnsRestApiIntegration construct:
// add the RestApi and Topic to be integrated with each other const restApi = this 'myRestApi' const myResource = restApiroot; const topic = this "myTopic" // add the integration this 'mySnsIntegration' topic: topic restApiResource: myResource
After deploying your CDK stack you can publish messages to the SNS Topic via HTTP:
$ curl -X POST https://xxxxxxxx.execute-api.eu-central-1.amazonaws.com/prod/myResource \ --header 'Content-Type: application/json' \ --data-raw '{"cdk":"rocks"}'
How to use - SQS
Add an SQS Queue and a RestApi to your stack, integrate them using a SqsRestApiIntegration construct:
// add the RestApi and Queue to be integrated with each other const restApi = this 'myRestApi' const myResource = restApiroot; const queue = this "myQueue" // add the integration this 'mySqsIntegration' queue: queue restApiResource: myResource
After deploying your CDK stack you can publish messages to the SQS Queue via HTTP:
$ curl -X POST https://xxxxxxxx.execute-api.eu-central-1.amazonaws.com/prod/myResource \ --header 'Content-Type: application/json' \ --data-raw '{"cdk":"rocks"}'
How to use - Kinesis Stream
Add a Kinesis Stream and a RestApi to your stack, integrate them using a KinesisRestApiIntegration construct:
// add the RestApi and Queue to be integrated with each other const restApi = this 'myRestApi' const myResource = restApiroot const stream = this "myStream"; // add the integration this 'mySqsIntegration' stream: stream restApiResource: myResource
After deploying your CDK stack you can publish messages to the SQS Queue via HTTP:
$ curl -X POST https://xxxxxxxx.execute-api.eu-central-1.amazonaws.com/prod/myResource \ --header 'Content-Type: application/json' \ --data-raw '{"cdk":"rocks"}'
How to use - Step Functions State Machine
Add a Step Functions StateMachine and a RestApi to your stack, integrate them using a KinesisRestApiIntegration construct:
// add the RestApi const restApi = this 'myRestApi' const myResource = restApiroot // add a Step Functions StateMachine const stateMachine = this 'StateMachine' definition: this 'Wait X Seconds' time: sfnWaitTime timeout: Duration //add the integration this 'myStepFunctionsIntegration' stateMachine : stateMachine restApiResource: myResource
After deploying your CDK stack you can start an execution via HTTP:
$ curl -X POST https://xxxxxxxx.execute-api.eu-central-1.amazonaws.com/prod/myResource \ --header 'Content-Type: application/json' \ --data-raw '{"waitSeconds": 4}'