Occasionaly, you’ll need to hash some information: an email, a password, your grandma’s recipe for jambalaya 😋 …
If you need to hash any data (like this integration), you can do something like the following…
You’ll need to use this NPM package to make this hashing example work.
And you’ll want to include the node_modules/js-sha256
directory in your deployment, use this article for reference
Install
For this to work, you need to log into your Serverless Framework dashboard and create a `hashKey` key-value pair:
- Deploy your application with
sls deploy
- Login to https://app.serverless.com/ (or from the command line, do
sls login
). - Got to your app function
byol-hashing-api
, click on the “parameters” tab. - Add a key/value pair, with the “name” as
hashKey
and the “value” as whatever you want to hash the value to. - Click “Add”.
Now, you will be able to POST
to the endpoint given.
Send a JSON body in the request like:
{
"email": "me@me.com"
}
And you should get back a response like:
{
"key": "5c442a75f1c1f76edfa525d9f43f19538f3b64812d0caabdfda54d2d17149fde"
}
That is your hashed key.
“`This is the serverless.yml
file:
org: your-org
app: byol-hashing-api
service: byol-hashing-api
frameworkVersion: '2'
provider:
name: aws
runtime: nodejs12.x
lambdaHashingVersion: '20201221'
environment:
HASH_KEY: ${param:hashKey}
functions:
hashit:
handler: handler.hashit
events:
- httpApi:
path: /
method: post
package:
patterns:
- '!node_modules/**'
- 'node_modules/js-sha256/**'
This is the handler.js
file:
"use strict";
const sha256 = require('js-sha256').sha256;
// The key to us for hashing.
const hashKey = process.env.HASH_KEY;
module.exports.hashit = async (event) => {
// Parse the JSON body.
const body = JSON.parse(event.body)
// Send back the hashed email.
return {
statusCode: 200,
body: JSON.stringify(
{
key: sha256.hmac(hashKey, body.email)
},
null,
2
),
};
};