Skip to content

Instantly share code, notes, and snippets.

View furlanf's full-sized avatar

Fabiano Furlan furlanf

View GitHub Profile
@furlanf
furlanf / cleanUnusedLambdaLayers.js
Last active April 1, 2021 01:45
Old script to clean unused lambda layers versions based on used lambda functions
const AWS = require("aws-sdk");
const retry = require("async-retry");
const lambda = new AWS.Lambda();
const bailIfErrorNotRetryable = (bail) => (error) => {
if (!error.retryable) {
bail(error);
} else {
throw error;
@furlanf
furlanf / ubuntu-setup.sh
Created June 6, 2020 02:05
Ubuntu easy setup
sudo apt-get update
echo 'installing curl'
sudo apt install curl -y
echo 'installing git'
sudo apt install git -y
echo "What name do you want to use in GIT user.name?"
echo "For example, mine will be \"Fabiano Furlan\""
Resources:
ProductsFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: products/
Handler: app.handler
Layers:
- !Ref CommonLayer
Runtime: nodejs8.10
Events:
describe("when send an invalid user", () => {
it("returns unauthorized", async () => {
const handler = middy(async (event, context) => {});
handler.use(vegetableCompany());
const event = { requestContext: { user: { company: "fruit-company" } } };
const { statusCode } = await handler(event, {});
expect(statusCode).toEqual(401);
const createError = require('/opt/node_modules/http-errors');
const middyWrapper = require('/opt/middy-wrapper');
const vegetableCompany= require('/opt/vegetable-company-allowed');
// common-layer/vegetable-company-allowed.js
const products = require('/opt/data/vegetable-products.json');
const handler = async (event, context) => {
try {
return {
'statusCode': 200,
const createError = require("http-errors");
module.exports = () => {
return {
before: async handler => {
const { event } = handler;
const user = event.requestContext && event.requestContext.user;
if (!user || user.company !== "vegetable-company")
throw new createError.Unauthorized();
const middy = require('/opt/middy-wrapper');
const products = require('/opt/data/vegetable-products.json');
// common-layer/data/vegetable-products.json
const handler = async (event, context) => {
try {
return {
'statusCode': 200,
'body': JSON.stringify({
[{
"id": 1,
"title": "Asparagus",
"price": 28.1
}, {
"id": 2,
"title": "Cabbage",
"price": 29.45
}, {
"id": 3,
const middy = require('middy');
const { httpSecurityHeaders, httpErrorHandler } = require('middy/middlewares');
module.exports = (handler) => {
 return middy(handler).use(httpSecurityHeaders())
  .use(httpErrorHandler());
};