twitter-activity-eventsource-cdk v1.0.0
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! :neutral_face:
- Support other CDK languages (beyond just TypeScript).
4 years ago