Creating A Lambda Function ( NodeJS )
Log on to your AWS Lambda Console and Navigate to Lambda
and click on the Create function
button on the right.
Follow the step below to create a function and upload your code
- Choose
Author from scratch
option from the tab. - Enter a
Function name
and choose your favouriteRuntime
. Leave all things default for now. - Click
Create function
to create a lambda function.
Wait till your function is ready.
Example - Save Email Subscription
Follow the same steps as above and create a function called saveSubscriptionNodeJS
and choose nodeJs 14.x
as runtime. You will see a picture like below.
Write your AWS Lambda Function
Paste the following code into the code section of your editor that you can see in your AWS IDE for Lambda
const axios = require('axios');
const gql = require('graphql-tag');
const graphql = require('graphql');
const { print } = graphql;
const createSubscriber = gql`
mutation CreateSubscriber($phone: String) {
createSubscriber(payload: {phone: $phone}) {
id
data {
phone
}
}
}`
exports.handler = async (event, context, callback) => {
try {
console.log(event);
let incomingRequest = event.payload;
const phone = incomingRequest.phone;
if (phone == null || phone == "") {
console.log('phone number not found');
return {
statusCode: 400,
errorMessage: "Phone Number Not Found In the Request"
}
}
const graphqlData = await axios({
url: process.env.APITO_URL,
method: 'post',
headers: {
'Authorization': `Bearer ${process.env.APITO_TOKEN}`
},
data: {
query: print(createSubscriber),
variables: {
phone: phone
}
}
});
return {
subscriber: graphqlData.data.data.createSubscriber
}
} catch (err) {
console.log('error posting to appsync: ', err);
return {
statusCode: 400,
errorMessage: err
}
}
};
In the code above, we are checking if the phone number is provided or not ( You can add phone number validation if you want) and then using a graphql client we are storing the
phone number into our own model called subscriber
Publishing AWS Lambda Function
Each time you make any changes Click Deploy
button to save and apply your changes.