in aws-greengrass-core-sdk/iotdata.js [147:204]
publish(params, callback) {
const topic = Util.getParameter(params, 'topic');
if (topic === undefined) {
callback(new Error('"topic" is a required parameter'), null);
return;
}
const payload = Util.getParameter(params, 'payload');
if (payload === undefined) {
callback(new Error('"payload" is a required parameter'), null);
return;
}
// this is an optional parameter
const queueFullPolicy = Util.getParameter(params, 'queueFullPolicy');
const context = {
custom: {
source: MY_FUNCTION_ARN,
subject: topic,
queueFullPolicy: '',
},
};
switch (queueFullPolicy) {
case 'BestEffort':
case 'AllOrError':
context.custom.queueFullPolicy = queueFullPolicy;
break;
case '':
case undefined:
case null:
break;
default:
callback(new Error(`queueFullPolicy "${queueFullPolicy}" is not supported`), null);
break;
}
const buff = Buffer.from(JSON.stringify(context));
const clientContext = buff.toString('base64');
const invokeParams = {
FunctionName: ROUTER_FUNCTION_ARN,
InvocationType: 'Event',
ClientContext: clientContext,
Payload: payload,
};
console.log(`Publishing message on topic "${topic}" with Payload "${payload}"`);
this.lambda.invoke(invokeParams, (err, data) => {
if (err) {
callback(err, null); // an error occurred
} else {
callback(null, data); // successful response
}
});
}