Skip to content

Instantly share code, notes, and snippets.

View alexcasalboni's full-sized avatar
✌️
Happy coding!

Alex Casalboni alexcasalboni

✌️
Happy coding!
View GitHub Profile
@alexcasalboni
alexcasalboni / template.yml
Last active July 1, 2019 16:41
AWS Iot 1-Click Event - CloudFormation template (YAML)
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
MyClickFunction:
Type: AWS::Serverless::Function
Properties:
Handler: index.handler
Runtime: python2.7
# ...
# all the other properties here
@alexcasalboni
alexcasalboni / index.py
Last active March 22, 2019 12:39
AWS Iot 1-Click Event - Lambda handler (Python)
from click_handler import DailyClickHandler
def handler(event, context):
if 'deviceEvent' in event:
if 'deviceHealthMonitor' in event['deviceEvent']:
# just a health check
print("HEALTHCHECK")
print(event)
return "OK"
elif 'buttonClicked' in event['deviceEvent']:
@alexcasalboni
alexcasalboni / click_handler.py
Last active March 22, 2019 12:38
AWS Iot 1-Click Event - Python implementation (platform-agnostic)
import os
from datetime import date
import boto3
# read environment variables
TABLE_NAME = os.environ.get('TABLE_NAME', 'my_table_test')
region = os.environ.get('AWS_DEFAULT_REGION', 'eu-west-1')
# initialize DDB client
dynamodb = boto3.resource('dynamodb', region_name=region)
@alexcasalboni
alexcasalboni / event.json
Created March 7, 2019 11:23
AWS Iot 1-Click Event (JSON)
{
"deviceEvent": {
"buttonClicked": {
"clickType": "SINGLE",
"reportedTime": "2018-05-04T23:26:33.747Z"
}
},
"deviceInfo": {
"attributes": {
"key3": "value3",
@alexcasalboni
alexcasalboni / deploy.sh
Created March 5, 2019 17:09
AWS Lambda for Amazon DynamoDB daily resize (deployment script)
# install AWS SAM
pip install --user aws-sam-cli
# configure your AWS credentials
aws configure
# package your raw YAML template
sam package
--template-file template.yml \
--s3-bucket YOUR_BUCKET \
@alexcasalboni
alexcasalboni / template.yml
Created March 5, 2019 17:07
AWS Lambda for Amazon DynamoDB daily resize (CloudFormation template)
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Parameters:
TablePrefix:
Type: String
Resources:
TableDailyResize:
Type: AWS::Serverless::Function
Properties:
Handler: handler.daily_resize
@alexcasalboni
alexcasalboni / index.py
Created March 5, 2019 17:04
AWS Lambda for Amazon DynamoDB daily resize (Python handler)
import os
from resizer import DailyResize
def daily_resize(event, context):
operation = event['Operation']
resizer = DailyResize(table_prefix=os.environ['TABLE_NAME'])
if operation == 'create_new':
resizer.create_new()
elif operation == 'resize_old':
resizer.resize_old()
@alexcasalboni
alexcasalboni / resizer.py
Last active March 5, 2019 17:04
AWS Lambda for Amazon DynamoDB daily resize (Python)
import os
import boto3
import datetime
region = os.environ.get('AWS_DEFAULT_REGION', 'us-west-2')
dynamodb = boto3.client('dynamodb', region_name=region)
class DailyResize(object):
FIRST_DAY_RCU, FIRST_DAY_WCU = 300, 1000
@alexcasalboni
alexcasalboni / template.yml
Created March 3, 2019 16:34
AWS CloudFormation Macro - Transform a sub-section of the template
AWSTemplateFormatVersion: 2010-09-09
Resources:
MyWebsite:
Type: MyCompany::StaticWebsite
'Fn::Transform':
- Name: MyUniqueMacroName
Parameters:
# your macro parameters
@alexcasalboni
alexcasalboni / template.yml
Last active March 3, 2019 16:34
AWS CloudFormation Macro - Transform the entire template
AWSTemplateFormatVersion: 2010-09-09
Transform: MyUniqueMacroName
Resources:
MyWebsite:
Type: MyCompany::StaticWebsite