UNPKG

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
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