Skip to content

Instantly share code, notes, and snippets.

@fernando-mc
Last active July 7, 2021 22:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save fernando-mc/51a59ee47c97e5cf5b4f1b32a5ded948 to your computer and use it in GitHub Desktop.
Save fernando-mc/51a59ee47c97e5cf5b4f1b32a5ded948 to your computer and use it in GitHub Desktop.
SAM Application
'use strict';
const AWS = require('aws-sdk');
module.exports.create = (event, context, callback) => {
const timestamp = new Date().getTime();
const data = JSON.parse(event.body);
var params = {
TableName: "customerTable",
Item: {
"customer_id": data.customer_id,
"created_timestamp": timestamp
}
};
var dynamodbDocClient = new AWS.DynamoDB.DocumentClient();
dynamodbDocClient.put(params, function(err, data) {
if (err) callback(Error(err))
else callback(null, {statusCode: 200, body: JSON.stringify(params)});
});
}
{
"name": "sam-app",
"version": "1.0.0",
"description": "Sam App",
"main": "create.js",
"license": "MIT"
}
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: A microservice using AWS SAM, API Gateway, Lambda, and DynamoDB
Resources:
newCustomer:
Type: 'AWS::Serverless::Function'
Properties:
Handler: create.create
Runtime: nodejs8.10
CodeUri: .
Description: Used to create a new customer in the database
MemorySize: 512
Timeout: 10
Policies:
- Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- 'dynamodb:PutItem'
Resource:
'Fn::Join':
- ''
- - 'arn:aws:dynamodb:'
- Ref: 'AWS::Region'
- ':'
- Ref: 'AWS::AccountId'
- ':table/customerTable'
Events:
Api1:
Type: Api
Properties:
Path: /create
Method: POST
customerTable:
Type: 'AWS::DynamoDB::Table'
Properties:
TableName: customerTable
AttributeDefinitions:
- AttributeName: customer_id
AttributeType: S
KeySchema:
- AttributeName: customer_id
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 1
WriteCapacityUnits: 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment