This a simple AWS lambda written in Node.js (>= 6.10) that allows you to monitor the exchange rate of a given currency pair and get an SMS every day (through Twilio APIs).
In order to test and deploy this lambda you will need to have:
- An AWS account (and a user created in it)
- the last version of AWS CLI tool installed and configured to use your AWS account
- Node.js (version >= 6.10) and NPM installed in your machine
- Lambda-local package installed globally in your machine (optional, only for local testing)
- A Twilio account, an Api Key and a source phone number for SMS (free plan should be enough)
Before being able to test and deploy this lambda you need to provided the needed configuration.
Configuration needs to be stored in a .env
file (you can copy a template from the .env~SAMPLE
sample file) that will look like this:
export BUCKET=your-unique-bucket-name
export STACK_NAME=currency-exchange-lambda
export CURRENCY_FROM="GBP"
export CURRENCY_TO="EUR"
export TWILIO_ACCOUNT="abcdefghijklmnopqrstuxywz123456789"
export TWILIO_API_KEY="1234567890abcdef1234567890abcdef"
export SEND_SMS_FROM="+3530123456789"
export SEND_SMS_TO="+3530234567890"
Where:
BUCKET
: is the name of your S3 bucket that will contain the code to be deployed to AWS LambdaSTACK_NAME
: the stack name for this project as it will appear in your cloudformation consoleCURRENCY_FROM
: The currency code from which you want to fetch the exchangesCURRENCY_TO
: The currency code to which you want to fetch the exchangesTWILIO_ACCOUNT
: Your Twilio account idTWILIO_API_KEY
: Your Twilio api keySEND_SMS_FROM
: Your Twilio source phone numberSEND_SMS_TO
: Your destination phone number
To install all the needed dependencies you simply need to run the following commands:
cd src
npm install
With lambda-local installed and your shell in the root folder of this project, run:
source .env # will load the current configuration through env variables
lambda-local -l src/index.js -h handler -e event.json
Before being able to package and deploy the application you must have created an s3 bucket in your own account. You can do that with:
aws s3 mb "s3://your-unique-bucket-name"
Note: Your bucket needs to have a unique name, so you might need to spend sometime to find a unique one that works for you.
Once you have created your own bucket, be sure to update the BUCKET
variable in your .env
file
The package process will generate a zip file containing the project source code all its dependencies and it will upload it on S3. The output of this operation will be a new cloudformation template (stored in .cloudformation
) that can be used to deploy the application in your AWS account.
To package the application you can use the package
script contained in this project:
./package.sh
Once your app is packaged you are ready to deploy it on AWS with the deploy
command:
./deploy.sh
Licensed under MIT License. © Luciano Mammino.
Everyone is very welcome to contribute to this repository. Feel free to raise issues or to submit Pull Requests.