|
1 | | -# aws-lambda-java-example |
2 | | -A simple Java Lambda based server-less application that implements a reimbursement use case, with AWS Lambda, AWS SES, and AWS DynamoDB |
| 1 | +# AWS Lambda Java Example |
| 2 | + |
| 3 | +A simple Java Lambda based server-less application that implements a reimbursement use case, with AWS Lambda, AWS API Gateway, AWS SES, and AWS DynamoDB. Set up the project with Eclipse and AWS Toolkit plugin. |
| 4 | + |
| 5 | +## Getting Started |
| 6 | +### IDE Setup |
| 7 | +1. Open Eclipse |
| 8 | +2. Install the AWS Toolkit for Eclipse and set up your AWS access key id and secret access key: http://docs.aws.amazon.com/AWSToolkitEclipse/latest/ug/tke_setup_install.html |
| 9 | +3. Import project LambdaForm: Right click on the Package Explorer > Import > General > Existing Projects into Workspace. Do the same for LambdaSendMail and LambdaApproval. |
| 10 | +4. Sign up for AWS Lambda, API Gateway, DynamoDB, and SES (if you have not done so, yet). |
| 11 | + |
| 12 | +### Upload Lambda Functions |
| 13 | +5. Right click on the LambdaForm project folder > Amazon Web Services > Upload Function to AWS Lambda > Follow the steps in the wizard and create a new Lambda Function. |
| 14 | +6. Upload the Lambda Functions of the other two projects LambdaSendMail and LambdaApproval. |
| 15 | +7. Give the Lambda Functions an IAM role that allows access to DynamoDB and SES. |
| 16 | + |
| 17 | +### AWS Services setup |
| 18 | +8. Set up a DynamoDB table named 'lambda-reimbursment' with the Hash Key 'employee_id' of type String. In the example, the EU-WEST-1 region (Ireland) is chosen. |
| 19 | +9. In the AWS dashboard, go to Lambda > LambdaSendMail > Event source. Add an event source of type DynamoDB (table: lambda-reimbursment) with default settings. |
| 20 | +10. Do the same as in step 5 for LambdaApproval. |
| 21 | +11. In the AWS dashboard, go to API Gateway and create a new API that points at the LambdaApproval Function. Create a Resource "reimbursment" and a GET method. Click on "Method Request" and add a query string parameter "id". Click on "Integration Request" and add a Mapping Template with content type "application/json" and Template: |
| 22 | +``` |
| 23 | +{ |
| 24 | + "employee_id" : "$input.params('id')" |
| 25 | +} |
| 26 | +``` |
| 27 | +Deploy the API. |
| 28 | + |
| 29 | +### Run Lambda Functions |
| 30 | +12. Right click on the LambdaForm project folder > Amazon Web Services > Run Function on AWS Lambda > Enter a JSON object like this one: |
| 31 | +```{"employee_id":"1", "employee_name":"John Doh", "expense_type":"travel","amount": "456.75" }``` |
| 32 | +13. If the Lambda Function completes successfully, a new entry will be added to the DynamoDB table lambda-reimbursment that you created in step 8. |
| 33 | +14. LambdaSendMail gets triggered by the DynamoDB stream (pull model) and sends an e-mail with the info that has been added to the table. |
| 34 | +15. If you have received the e-mail and click on the approval URL in the e-mail body, the LambdaApproval Function will be called and add an "approved" column entry to DynamoDB. |
0 commit comments