goldwasher-aws-lambda
v1.0.3
Published
A version of goldwasher that runs as a module on AWS Lambda.
Downloads
12
Maintainers
Readme
node-goldwasher-aws-lambda
A version of goldwasher that runs as a module on AWS Lambda. Uses goldwasher-needle for requests.
Installation
This module installs as a module on AWS Lambda, as a zip file. You can either just download the zip from /dist
and upload it via your AWS console or install it via aws-cli. The first one might not always work so the method with aws-cli described below is recommended:
npm install goldwasher-aws-lambda
cd node_modules/goldwasher-aws-lambda/dist/
aws lambda create-function --function-name goldwasher --timeout 60 --zip-file fileb://goldwasher-aws-lambda.zip
You can of course replace goldwasher
with your name of choice and 60
with a lower timeout if necessary.
If you later need to overwrite it and the function name already exists on AWS, use this instead:
aws lambda update-function-code --function-name goldwasher --zip-file fileb://goldwasher-aws-lambda.zip
Options
The module accepts the usual parameters of goldwasher-needle with the exception that the url
and options
parameters have been merged. This simply means that the first parameter, url
, has been removed and must instead be added as a property on the options
parameter:
{
url: 'http://github.com',
goldwasher: {
selector: 'h1'
}
}
See how to use this in the examples below or simply paste it as a sample event in the AWS console.
Build
If you feel like changing the code and have installed the development dependencies, you can automatically build a new zip file from the main folder:
gulp zip
This will create a new zip that can be installed with the commands mentioned under installation.
Example
In this example we will show how to consume the Lambda function from a client. First, install the aws-sdk:
npm install aws-sdk
In this example, we will use a config file for our AWS credentials. Remember to replace the values below with your own.
IMPORTANT:
It is extremely important that you do not push this file to your git repository or any other public place. I highly recommend using environment variables instead. I also recommend creating a user on AWS that only has the permission AWSLambdaRole
to run this.
aws-config.json:
{
"accessKeyId": "akid",
"secretAccessKey": "secret",
"region": "us-east-1"
}
example.js:
var AWS = require('aws-sdk');
AWS.config.loadFromPath('./aws-config.json');
var lambda = new AWS.Lambda();
lambda.invoke({
FunctionName: 'goldwasher',
Payload: JSON.stringify({url: 'http://google.com'})
},
function(error, data) {
if (error) {
console.error(error);
}
console.log(data);
});