¿Cómo obtener la longitud de la matriz de Dimensions en nodejs? Es posible que tenga 2 bloques o, a veces, solo 1. Quiero escribir una condición if basada en la longitud. Esto está dentro de la función AWS-Lambda, por lo que no puedo usar JQ allí (no estoy seguro de poder hacerlo).
Ejemplo: quiero poner estas variables dentro de una if condition basada en la longitud
var sns_DimensionsValue_ApiName = sns.Trigger.Dimensions[0].value;
var sns_DimensionsValue_StageName = sns.Trigger.Dimensions[1].value;
Salida de matriz de dimensiones:
"Dimensions": [ { "value": "zabbixPy-API", "name": "ApiName" }, { "value": "qa", "name": "Stage" } ],En algunos casos, la dimensión tendrá solo un elemento. En este ejemplo tenemos 2 (ApiName y Stage name). Depende del tipo de métrica de Cloudwatch.
Código de salida completo:
{ "AlarmName": "Zabbix PY 5XX - By Stage QA", "AlarmDescription": null, "AWSAccountId": "123456789", "NewStateValue": "ALARM", "NewStateReason": "Threshold Crossed: 1 out of the last 1 datapoints [1.0 (05/11/21 09:54:00)] was greater than or equal to the threshold (1.0) (minimum 1 datapoint for OK -> ALARM transition).", "StateChangeTime": "2021-11-05T09:55:43.823+0000", "Region": "Asia Pacific (Mumbai)", "AlarmArn": "arn:aws:cloudwatch:ap-south-1:123456789:alarm:Zabbix PY 5XX - By Stage QA", "OldStateValue": "INSUFFICIENT_DATA", "Trigger": { "MetricName": "5XXError", "Namespace": "AWS/ApiGateway", "StatisticType": "Statistic", "Statistic": "MINIMUM", "Unit": null, "Dimensions": [ { "value": "zabbixPy-API", "name": "ApiName" }, { "value": "qa", "name": "Stage" } ], "Period": 60, "EvaluationPeriods": 1, "ComparisonOperator": "GreaterThanOrEqualToThreshold", "Threshold": 1, "TreatMissingData": "- TreatMissingData: missing", "EvaluateLowSampleCountPercentile": "" } }Las matrices JS nativas tienen una propiedad .length que puede usar según sus necesidades.
Funciona con javascript normal.
var dimLength = sns.Trigger.Dimensions.length; if(dimLength === 1){ var sns_DimensionsValue_ApiName = sns.Trigger.Dimensions[0].value; } else if(dimLength === 2){ var sns_DimensionsValue_StageName = sns.Trigger.Dimensions[1].value; }