All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.github.cdklabs.tweetqueue.package-info Maven / Gradle / Ivy

There is a newer version: 2.0.659
Show newest version
/**
 * 

Tweet Queue for AWS CDK

*

* This is an AWS CDK construct library which * allows you to get a feed of Twitter search results into an SQS queue. It works * by periodically polling the freely available Twitter Standard Search * API and * sending all new tweets to an SQS queue. *

* Inspired by * @jlhood's * aws-serverless-twitter-event-source *

*

Architecture

*

* *

*

    *
  1. A CloudWatch Event Rule triggers the poller AWS Lambda function periodically
  2. *
  3. The poller reads the last checkpoint from a DynamoDB table (if exists)
  4. *
  5. The poller issues a Twitter search query for all new tweets
  6. *
  7. The poller enqueues all tweets to an SQS queue
  8. *
  9. The poller stores the ID of the last tweet into the DynamoDB checkpoint table.
  10. *
  11. Rinse & repeat.
  12. *
*

*

Twitter API Keys

*

* To issue a Twitter search request, you will need to * apply for a Twitter * developer account, and obtain API keys through by defining a new * application. *

* The Twitter API keys are read by the poller from an AWS Secrets * Manager entry. The entry must contain * the following attributes: consumer_key, consumer_secret, access_token_key * and access_token_secret (exact names). *

*

    *
  1. Create a new AWS Secrets Manager entry for your API keys
  2. *
  3. Fill in the key values as shown below: *
  4. *
  5. Store the key
  6. *
  7. Obtain the ARN of the secret (you will need it soon).
  8. *
*

*

Usage

*

* Use npm to install the module in your CDK project. This will also add it to * your package.json file. *

*

 * $ npm install cdk-tweet-queue
 * 
*

* Add a TweetQueue to your CDK stack: *

*

 * import { TweetQueue } from 'cdk-tweet-queue';
 * 
 * const queue = new TweetQueue(this, 'TweetStream', {
 *   // this is the ARN of the secret you stored
 *   secretArn: 'arn:aws:secretsmanager:us-east-1:1234567891234:secret:xxxxxxxxx'
 * 
 *   // twitter search query
 *   // see https://developer.twitter.com/en/docs/tweets/search/guides/standard-operators
 *   query: '#awscdk',
 * 
 *   // optional properties
 *   intervalMin: 60,          // optional: polling interval in minutes
 *   retentionPeriodSec: 60,   // optional: queue retention period
 *   visibilityTimeoutSec: 60, // optional: queue visilibity timeout
 * });
 * 
*

* Now, queue is an sqs.Queue object and can be used anywhere a queue is * accepted. For example, you could process the queue messages using an AWS Lambda * function by setting up an SQS event source mapping. *

*

Development

*

* The project is managed by projen and offers the following commands: *

*

    *
  • yarn projen - Synthesize the project configuration.
  • *
  • yarn compile - Compile all source code.
  • *
  • yarn test - Run all tests.
  • *
  • yarn build - Complie, test, and package the module.
  • *
*

*

Integration test

*

* There is also an integration test that can be executed by running the following commands. You will need to set the TWEET_QUEUE_SECRET_ARN environment variable in order for the test to be able to use your Twitter API keys. *

*

 * $ yarn integ:deploy
 * 
*

* Don't forget to destroy: *

*

 * $ yarn integ:destroy
 * 
*

* You can also run any cdk command on the integration test application by running: *

*

 * yarn integ <command>
 * 
*

*

License

*

* Apache-2.0 */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) package io.github.cdklabs.tweetqueue;





© 2015 - 2024 Weber Informatics LLC | Privacy Policy