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 / utility.js
Created February 25, 2019 23:30
AWS Config Custom Rule - AWS Lambda (utiity)
const aws = require('aws-sdk');
const config = new aws.ConfigService();
/**
* Get the configurationItem for the resource using the getResourceConfigHistory API.
*/
async function getConfigurationFromHistory(configurationHistory, callback) {
const params = {
resourceType: configurationHistory.resourceType,
resourceId: configurationHistory.resourceId,
@alexcasalboni
alexcasalboni / index.js
Last active February 25, 2019 23:30
AWS Config Custom Rule - AWS Lambda
const aws = require('aws-sdk');
const utility = require('./utility');
const config = new aws.ConfigService();
/**
* In this example, the resource is compliant if it is an instance and its type matches the type specified as the desired type.
* If the resource is not an instance, then this resource is not applicable.
*/
function evaluateChangeNotificationCompliance(configurationItem, ruleParameters) {
if (configurationItem.resourceType !== 'AWS::EC2::Instance') {
@alexcasalboni
alexcasalboni / template.yml
Last active February 25, 2019 23:59
AWS Config - AWS Lambda Custom Rule example (YAML)
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Resources:
MyFunction:
Type: 'AWS::Serverless::Function'
Properties:
Handler: index.handler
# ...
# all the other properties here
# ...
@alexcasalboni
alexcasalboni / template.yml
Created February 26, 2019 09:02
Amazon Kinesis Data Firehose - AWS Lambda data transformation app (YAML)
AWSTemplateFormatVersion : '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
DeliveryBucket:
Type: AWS::S3::Bucket
StreamProcessFunction:
Type: AWS::Serverless::Function
Properties:
@alexcasalboni
alexcasalboni / macro-template.yml
Last active March 3, 2019 16:17
CloudFormation Macro definition
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::Serverless-2016-10-31
Resources:
MyProcessingFunction:
Type: AWS::Serverless::Function
Properties:
Handler: index.handler
Runtime: python2.7
# ...
@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
@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 / 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 / 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 / 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