This serverless application provides a phone home endpoint for recording contacts from another deployed application.
It provides a demo integration of API Gateway + AWS Lambda + Node.js + Amazon DynamoDB
Prerequisites: Node.js and AWS CLI installed
- Create an AWS Account and IAM User with the
AdministratorAccess
AWS Managed Policy - Run
aws configure
to put store that user's credentials in~/.aws/credentials
- Create an S3 bucket for storing the Lambda code and store its name in a shell variable with:
export CODE_BUCKET=<bucket name>
- Npm install:
npm install
- Build:
npm run build
- Upload package to S3, transform the CloudFormation template:
npm run package
- Deploy to CloudFormation:
npm run deploy
- Hit "Deploy" from the application page
- In the API Gateway Console, navigate to APIs / your API / Dashboard
- Find the Invocation url, something like https://xxxxxxxxx.execute-api.region.amazonaws.com/Prod/
- (Alternately, you can set up a custom domain name)
Post data:
curl -d '{"username":"you", "host":"localhost"}' https://xxxxxxxxx.execute-api.region.amazonaws.com/Prod/
Get data:
curl https://xxxxxxxxx.execute-api.region.amazonaws.com/
Post data for logged in user (Take care to comply with any applicable Do Not Track legislation):
// Phone home if we're not on localhost
function phoneHome(username) {
if (!window.location.host.includes('localhost')) {
fetch('https://xxxxxxxxx.execute-api.region.amazonaws.com/',
{
method: 'POST',
body: JSON.stringify({
username: username,
host: window.location.host
})
});
}
}
- phone-home on Github
- phone-home on the AWS Serverless Application Repository
© 2017-2019 Evan Chiu. This project is available under the terms of the MIT license.