static async sendMetrics()

in source/networkFirewallAutomation/lib/common/send-metrics.ts [32:79]


    static async sendMetrics(data: NetworkFirewallMetrics) {
        const ssmParameterForUUID = process.env.SSM_PARAM_FOR_UUID ? process.env.SSM_PARAM_FOR_UUID : "network-firewall-solution-uuid"
        const stackId = process.env.STACK_ID ? process.env.STACK_ID.slice(process.env.STACK_ID.length - 36) : ""
        const sendAnonymousMetrics = process.env.SEND_ANONYMOUS_METRICS ? process.env.SEND_ANONYMOUS_METRICS : "No"
        let uuid = ""
        const ssmUUIDKey = `${ssmParameterForUUID}-${stackId}`
        try {
            if (sendAnonymousMetrics.toUpperCase() === "YES") {
                let ssmInstance = new SSM();
                let ssmGetParamResponse;
                try {
                    ssmGetParamResponse = await ssmInstance.getParameter({
                        Name: ssmUUIDKey,
                    }).promise();
                    uuid = ssmGetParamResponse.Parameter?.Value ? ssmGetParamResponse.Parameter?.Value : uuidv4();
                } catch (error) {
                    if (error["code"] = "ParameterNotFound") {
                        uuid = uuidv4();
                        await ssmInstance.putParameter({
                            Name: ssmUUIDKey,
                            Value: uuid,
                            Type: "String"
                        }).promise();
                    }
                }
                Logger.log(LOG_LEVEL.DEBUG, "uuid: ", uuid)
                const metricsUrl: string = process.env.METRICS_URL ? process.env.METRICS_URL : ""
                const solutionId: string | undefined = process.env.SOLUTION_ID
                const timestamp = (new Date()).toISOString()
                data.logDestinationType = process.env.LOG_DESTINATION_TYPE
                data.logType = process.env.LOG_TYPE
                const metrics_data = {
                    'Solution': solutionId,
                    'TimeStamp': timestamp,
                    'UUID': uuid,
                    'Data': data
                }
                Logger.log(LOG_LEVEL.DEBUG, "metrics data: ", metrics_data)
                const response = await axios.post(metricsUrl, metrics_data, {
                    headers: {
                        'Content-Type': 'application/json',
                        'Content-Length':  JSON.stringify(data).length
                    }
                })
                Logger.log(LOG_LEVEL.DEBUG, 'Response: ', response)
            } 
        } catch (error) { }
    }