У меня есть лямбда-функция, которая обрабатывает запрос POST через AWS лямбда-функцию. Он обрабатывает тело почтового запроса, создает запрос и возвращает ответ.
МОЯ ФУНКЦИЯ LAMBDA
const { Pool, Client } = require("pg");
const userName = 'blah';
const hostEndPoint = 'blah';
const databaseType = 'blahblah';
const pwd = 'pass pass';
const portNumber = 5432;
var AWS = require('aws-sdk');
const pool = new Pool({
user: userName,
host: hostEndPoint,
database: databaseType,
password: pwd,
port: portNumber
});
exports.handler = async (event) => {
let body = JSON.parse(event.body);
let name = body.name;
let money = body.money;
let todayDate = new Date();
var status = 0;
let text = 'INSERT INTO employee(name, date, salary) VALUES($1, $2, $3) RETURNING *';
let values = [name, todayDate, money];
var message = '';
var status = 0;
try {
const res = await pool.query(text, values)
message += 'successful'
status = 200;
} catch (err) {
message += 'unsuccessful'
if (err.code === '23505') {
status = 406;
}
}
var params = {
Message: 'Hello From Lambda', /* required */
TopicArn: 'arn:aws:sns:us-east-1:blahblahblah'
};
// Create promise and SNS service object
var publishTextPromise = new AWS.SNS({ apiVersion: '2010-03-31' }).publish(params).promise();
publishTextPromise.then(
function (data) {
console.log(`Message ${params.Message} send sent to the topic ${params.TopicArn}`);
console.log("MessageID is " + data.MessageId);
}).catch(
function (err) {
console.error(err, err.stack);
});
const response = {
statusCode: status,
body: JSON.stringify(message),
headers: {
"Access-Control-Allow-Origtin": '*'
}
};
return response;
};
Моя Политика лямбда-ресурсов Похоже на это
{
"Version": "2012-10-17",
"Id": "default",
"Statement": [
{
"Sid": "blah-blah-blah-blah",
"Effect": "Allow",
"Principal": {
"Service": "apigateway.amazonaws.com"
},
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:us-east-1:blah-blah-blah-blah-blah",
"Condition": {
"ArnLike": {
"AWS:SourceArn": "arn:aws:execute-api:us-east-1:blahblahblahblha:blah/*/POST/"
}
}
}
]
}
Я также создал SNS topi c. Я хочу опубликовать sh сообщение для SNS topi c, если мой статус 200. Поэтому, прежде чем я верну ответ. Я хочу сделать что-то вроде этого.
if (status === 200){
pubish some message to my sns topic
}
Я очень плохо знаком с aws и хотел бы получить несколько советов о том, как я могу опубликовать sh сообщение. Я чувствую, что я рядом. Я сталкивался с этим topi c, но это сбивает меня с толку, потому что я редактирую код в лямбда-функции, так почему я должен требовать aws -sdk, а также они не говорят об изменении разрешения ,
Обновлен код после попытки ниже предложенного ответа