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.
54 lines (52 loc) • 1.75 kB
JavaScript
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.js');
let __aws_sdk_credential_providers = require("@aws-sdk/credential-providers");
__aws_sdk_credential_providers = require_rolldown_runtime.__toESM(__aws_sdk_credential_providers);
let aws_iot_device_sdk = require("aws-iot-device-sdk");
aws_iot_device_sdk = require_rolldown_runtime.__toESM(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 (0, __aws_sdk_credential_providers.fromNodeProviderChain)()();
const connection = new aws_iot_device_sdk.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
exports.getConnection = getConnection;
//# sourceMappingURL=iot-connection.js.map