NodeJS环境下使用SNS SDK无法创建FIFO主题问题求助
问题原因
- 参数类型报错的原因:
AWS JavaScript SDK 中SNS的Attributes字段所有属性值要求必须传入字符串类型,即使官方文档描述该参数的逻辑值为布尔类型,也需要将布尔值转为'true'/'false'字符串后传入,直接传入布尔值就会触发InvalidParameterType类型错误。 - 传入
'true'后仍无法设置为FIFO主题的常见原因:
- 所属区域下已经存在同名的
test.fifo非FIFO主题,createTopic接口对于已存在的同名主题默认不会修改原有属性,只会返回已有主题的信息,因此属性不会更新为FIFO类型 - 未同步将
ContentBasedDeduplication属性也转为字符串类型的有效值,FIFO主题要求该属性必须显式配置。
解决方案
- 第一步:调整参数中
Attributes下的属性值为字符串类型,修改后的代码如下:
const TOPIC = { Name: 'test.fifo', Attributes: { FifoTopic: 'true', ContentBasedDeduplication: 'true' }, Tags: [{ Key: 'test-key', Value: 'test-value' }] }; sns.createTopic(TOPIC).promise().then(console.log);
- 第二步:如果之前已经创建过同名的
test.fifo主题,先在AWS控制台删除该同名主题,或者更换一个新的带.fifo后缀的主题名称后重新调用接口。 - 第三步:创建完成后可以调用
getTopicAttributes接口查询主题属性,确认FifoTopic字段值为'true'即设置成功。
内容的提问来源于stack exchange,提问作者123
相关产品推荐
相关产品推荐

