Custom application looks for new files in an S3 bucket and sends an alert to subscribed users via AWS SNS
Clone this repository
$ git clone {url}
or download directly from GitHub.
Change into the application directory
Download node and npm and use the install
command to read the dependencies JSON file
$ npm install
- Install AWS Commandline tools
- https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html I reccomend using pip.
- Create an AWS user in IAM console. Give it appropriate permissions. Copy the key and secret for this user to use in the CLI.
- Configure the commandline tools - https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html
- Make sure you add -- key/secret -- region
- Use the AWS Console to create a bucket. Note your bucket name!!!
- Add a sample file of OCLC Numbers to the bucket.
- Go to AWS Console and create a topic. Note your topic ARN
- Copy example_config.yml to prod_config.yml . Open prod_config.yml and edit to include:
- topic_arn
-
Create a KMS key
-
Encrypt the config file
$ aws kms encrypt --key-id {key-id} --plaintext fileb://prod_config.yml --output text --query CiphertextBlob --output text | base64 -D > prod_config_encrypted.txt
-
Alter s3_event_alert.json to point to your bucket and your sample file.
-
Use serverless to test locally
serverless invoke local --function sendAlert --path s3_event_alert.json
- Download and setup the application, see Installing locally
- Edit serverless.yml so it include your key ARN
service:
name: trigger-alert-test
awsKmsKeyArn: arn:aws:kms:us-east-1:XXXXXX:key/some-hash
- Deploy the code using serverless
$ serverless deploy
- Make sure the role for the Lambda has the right permissions
- KMS decrypt
- S3 read
- SNS publish
- Setup the trigger on the bucket