twitter-activity-eventsource-cdk
AWS CDK construct to publish Twitter activity to AWS EventBridge
This construct creates a series of AWS resources to receive Twitter activity and publish it to an EventBus. It also includes a custom resource to create (and destroy) the Twitter Activity API subscription along with the AWS infrastructure.
A complete deployment looks like this:
With this is in place you can create rules matching Twitter activity events and route them to any EventBridge supported target.
Usage
-
Visit the Twitter Developer site and create an App with Consumer API keys as well as an Access token and secret.
-
Next, create an Account Activity API sandbox for your application (the free tier is fine for this use case).
-
Store this App's credentials as SecureStrings in AWS Systems Manager Parameter Store under the following names:
/twitter/consumer_api_key
/twitter/consumer_api_secret_key
/twitter/access_token
/twitter/access_token_secret
-
Install node.js and create a new CDK stack project with
npx cdk init app --language typescript
. -
Install this project as a dependency with
npm install --save twitter-activity-eventsource-cdk
. -
Edit the main file for your stack, import this new dependency and create the resource in your stack constructor:
import * as activity from 'twitter-activity-eventsource-cdk' // Inside stack constructor: const source = new activity.EventSource(this, 'ActivityEventSource')
-
If this is the first time using CDK in your AWS account, run
npx cdk bootstrap
before deploying. -
Finally, run
npx cdk deploy
and enjoy!
How it works
- A custom EventBus named
twitter-activity
is created. - An API Gateway HTTP endpoint is also created, with all requests routed to a lambda for processing.
- This lambda does the heavy lifting (along with a few security functions):
- Ensuring requests originate from Twitter's IP range
- Answering Twitter's periodic challenge-response checks
- Validating the signature header for activity POSTs
- Sending this activity to the EventBus with a
DetailType
matching the Activity message type
- Finally, a custom resource creates the Twitter Activity API subscription using the above HTTP endpoint as the webhook.
To Do
- Write tests!
😐 - Support other CDK languages (beyond just TypeScript).