twitter-activity-eventsource-cdk
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

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:

Application Flow

With this is in place you can create rules matching Twitter activity events and route them to any EventBridge supported target.

Usage

  1. Visit the Twitter Developer site and create an App with Consumer API keys as well as an Access token and secret.

  2. Next, create an Account Activity API sandbox for your application (the free tier is fine for this use case).

  3. 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
  4. Install node.js and create a new CDK stack project with npx cdk init app --language typescript.

  5. Install this project as a dependency with npm install --save twitter-activity-eventsource-cdk.

  6. 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')
  7. If this is the first time using CDK in your AWS account, run npx cdk bootstrap before deploying.

  8. 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 aDetailType 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).

Readme

Keywords

Package Sidebar

Install

npm i twitter-activity-eventsource-cdk

Weekly Downloads

0

Version

1.0.0

License

MIT

Unpacked Size

207 kB

Total Files

14

Last publish

Collaborators

  • pofallon