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
Author from scratch
option from the tab.Function name
and choose your favourite Runtime
. Leave all things default for now.Create function
to create a lambda function.Wait till your function is ready.
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.
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
Each time you make any changes Click Deploy
button to save and apply your changes.