Skip to content

Instantly share code, notes, and snippets.

@a0viedo
Created August 28, 2018 11:58
Show Gist options
  • Save a0viedo/c5d337a8b4d03608c65fe26af0c2bf9d to your computer and use it in GitHub Desktop.
Save a0viedo/c5d337a8b4d03608c65fe26af0c2bf9d to your computer and use it in GitHub Desktop.
using serverless and AWS Lambda functions
'use strict';
const request = require('request-promise');
module.exports.handler = async (event, context) => {
console.log('a trigger has been received');
console.log(event, context);
try {
const result = await request({
url: process.env.API_URL,
json: true
});
return {
statusCode: 200,
body: JSON.stringify(result)
};
} catch(err) {
console.log('There was an error getting the result from API', err);
return {
statusCode: 500,
body: '{"message": "There was an internal error"}'
};
}
};
{
"name": "my-test-lambda",
"version": "1.0.0",
"description": "",
"main": "handler.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"serverless": "^1.30.1"
},
"dependencies": {
"request": "^2.88.0",
"request-promise": "^4.2.2"
}
}
service: my-test-lambda # NOTE: update this with your service name
# You can pin your service to only deploy with a specific Serverless version
# Check out our docs for more details
# frameworkVersion: "=X.X.X"
provider:
name: aws
runtime: nodejs8.10
profile: aws-beamery-gamma-root
stage: ${opt:stage, env:NODE_ENV, "dev"}
environment: ${file(./config/env.${self:provider.stage}.yml)}
vpc: ${file(./config/vpc.${self:provider.stage}.yml)}
# you can overwrite defaults here
# stage: dev
# region: us-east-1
# you can add statements to the Lambda function's IAM Role here
# iamRoleStatements:
# - Effect: "Allow"
# Action:
# - "s3:ListBucket"
# Resource: { "Fn::Join" : ["", ["arn:aws:s3:::", { "Ref" : "ServerlessDeploymentBucket" } ] ] }
# - Effect: "Allow"
# Action:
# - "s3:PutObject"
# Resource:
# Fn::Join:
# - ""
# - - "arn:aws:s3:::"
# - "Ref" : "ServerlessDeploymentBucket"
# - "/*"
# you can define service wide environment variables here
# environment:
# variable1: value1
# you can add packaging information here
#package:
# include:
# - include-me.js
# - include-me-dir/**
# exclude:
# - exclude-me.js
# - exclude-me-dir/**
functions:
get-weather:
handler: functions/get-weather/index.handler
events:
- http:
path: /v1
method: get
# The following are a few example events you can configure
# NOTE: Please make sure to change your handler code to work with those events
# Check the event documentation for details
# events:
# - http:
# path: users/create
# method: get
# - s3: ${env:BUCKET}
# - schedule: rate(10 minutes)
# - sns: greeter-topic
# - stream: arn:aws:dynamodb:region:XXXXXX:table/foo/stream/1970-01-01T00:00:00.000
# - alexaSkill: amzn1.ask.skill.xx-xx-xx-xx
# - alexaSmartHome: amzn1.ask.skill.xx-xx-xx-xx
# - iot:
# sql: "SELECT * FROM 'some_topic'"
# - cloudwatchEvent:
# event:
# source:
# - "aws.ec2"
# detail-type:
# - "EC2 Instance State-change Notification"
# detail:
# state:
# - pending
# - cloudwatchLog: '/aws/lambda/hello'
# - cognitoUserPool:
# pool: MyUserPool
# trigger: PreSignUp
# Define function environment variables here
# environment:
# variable2: value2
# you can add CloudFormation resource templates here
#resources:
# Resources:
# NewResource:
# Type: AWS::S3::Bucket
# Properties:
# BucketName: my-new-bucket
# Outputs:
# NewOutput:
# Description: "Description for the output"
# Value: "Some output value"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment