You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js提取SNS JSON对象Trigger属性报TypeError问题问询

报错原因

你遇到的报错由两个核心问题导致:

  • AWS SNS事件里的Sns.Message字段默认是JSON字符串格式,不是直接可访问属性的JS对象,你没有做JSON解析就直接读取Trigger属性,此时sns.Trigger为undefined,尝试读取undefined的Namespace属性就触发了该TypeError。
  • 即便完成JSON解析,你打印的sns结构里Trigger.Dimensions是数组类型,不能直接通过.value读取属性,需要先取下标对应的数组元素。
修复方案

首先对Sns.Message做JSON解析,再按结构读取对应属性即可,参考代码如下:

// 第一步:将SNS Message字符串转为JS对象
const sns = JSON.parse(event.Records[0].Sns.Message);

// 第二步:按结构读取属性,注意Dimensions是数组,取第一个元素的value
const sns_NameSpace = sns.Trigger.Namespace;
const sns_ApiId = sns.Trigger.Dimensions[0].value;
const sns_MetricName = sns.Trigger.MetricName;

console.log(sns_ApiId + '_' + sns_MetricName)
console.log(sns_NameSpace)  

如果存在Dimensions数组有多个元素的场景,可以按名称过滤目标维度,避免下标取值不准确的问题:

const sns_ApiId = sns.Trigger.Dimensions.find(item => item.name === 'ApiId')?.value;

内容的提问来源于stack exchange,提问作者user630702

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 11:15:03