serverless-spy
Version:
CDK-based library for writing elegant integration tests on AWS serverless architecture and an additional web console to monitor events in real time.
52 lines (50 loc) • 1.45 kB
JavaScript
const __dirname = import.meta.dirname;
import { fromNodeProviderChain } from "@aws-sdk/credential-providers";
import { device } from "aws-iot-device-sdk";
//#region listener/iot-connection.ts
function createLog(debugMode) {
return (message, ...optionalParams) => {
if (debugMode) console.debug("SSPY", message, ...optionalParams);
};
}
function createErrorLog() {
return (message, ...optionalParams) => {
console.error("SSPY", message, ...optionalParams);
};
}
async function getConnection(debugMode, iotEndpoint) {
const log = createLog(debugMode);
const logError = createErrorLog();
log("Using IoT endpoint:", iotEndpoint);
if (!iotEndpoint) {
logError("No IoT endpoint could be found");
throw new Error("IoT Endpoint address not found");
}
const region = iotEndpoint.split(".")[2];
const credentials = await fromNodeProviderChain()();
const connection = new device({
protocol: "wss",
host: iotEndpoint,
region,
reconnectPeriod: 1,
accessKeyId: credentials.accessKeyId,
secretKey: credentials.secretAccessKey,
sessionToken: credentials.sessionToken
});
connection.on("connect", () => {
log("IoT connected");
});
connection.on("error", (err) => {
logError("IoT error", err);
});
connection.on("close", () => {
log("IoT closed");
});
connection.on("reconnect", () => {
log("IoT reconnected");
});
return connection;
}
//#endregion
export { getConnection };
//# sourceMappingURL=iot-connection.mjs.map