如何解决我在 Amazon SNS 中收到的响应 API 调用的无效参数错误?

上次更新日期:2021 年 6 月 23 日

我在 Amazon Simple Notification Service (Amazon SNS) 中收到一条响应 API 调用的无效参数错误消息

简短描述

如果您遇到以下错误:

InvalidParameter - Error message: Invalid parameter: Attributes Reason: Platform credentials are invalid

完成解决平台凭证错误部分中的步骤。

如果您遇到以下错误:

"message": "Invalid parameter: The MessageGroupId parameter is required for FIFO topics" even if the customer has provided MessageGroupId

完成解决 FIFO 错误部分中的步骤。

如果您遇到以下错误:

Couldn't set text messaging attributes.
Error code: InvalidParameter - Error message: Invalid parameter:

完成解决文本消息 (SMS) 错误部分中的步骤。

如果您遇到以下错误:

Couldn't delete subscription.
Error code: InvalidParameter - Error message: Invalid parameter: SubscriptionArn Reason: An ARN must have at least 6 elements, not 1

完成解决订阅删除错误部分中的步骤。

解决方法

解决平台凭证错误

重要提示:完成以下步骤之前,请检查 Apple Developer 账户中的提供商证书类型。然后,下载证书。

1.    打开 Amazon SNS 控制台

2.    在导航窗格中,选择 Push Notifications (推送通知)

3.    选择 Create platform application (创建平台应用程序)

4.    在 Application name (应用程序名称) 中,输入您的应用程序名称。

5.    对于推送通知平台,请选择 Apple IOS/VoIP/Mac

6.    如果您使用的是 Sandbox (沙盒) 类型的证书,请在 Apple 凭证部分选中 Used for development in sandbox (用于沙盒中的开发)

重要提示:如果您使用的是 Sandbox & Production (沙盒和生产) 类型的证书,则不能选中该复选框。否则,您会收到错误。

7.    对于 Push certificate type (推送证书类型),请选择您的证书类型。

8.    选择 Choose file (选择文件),然后选择要从中加载凭证的证书。

9.    选择 Create platform application (创建平台应用程序)

解决 FIFO 错误

确认您正在浏览器中使用适用于 JavaScript 的 AWS 开发工具包,或在 Node.js 版本 2.777.0 及以上版本中使用适用于 JavaScript 的 AWS 开发工具包。

即使 API 请求中提供了 ID,您也会收到与无效 MessageGroupId 或无效 MessageDeduplicationId 相关的 Amazon SNS FIFO 错误。Amazon SNS FIFO 属性仅适用于较新的开发工具包版本。有关更多信息,请参阅适用于 JavaScript 的 AWS 开发工具包的 Changelog

解决文本消息 (SMS) 错误

1.    打开 Amazon SNS 控制台

2.    在导航窗格中,选择 Text messaging (SMS) (文本消息 (SMS))

3.    在文本消息首选项部分选择 Edit (编辑)

4.    在 Account spend limit - Optional Parameter (账户支出限额 – 可选参数) 中输入数值 1。此默认值是以美元为单位的月支出限额。如果您希望账户每月支出限额大于 1 美元,可以请求提高账户支出限额。

注意:默认情况下,每个 Amazon SNS 账户在每个 AWS 区域的支出配额为 1 美元。当值大于 1 时,Amazon SNS 控制台会收到错误消息。

5.    选择 Save changes (保存更改)

解决订阅删除错误

当您尝试删除处于 PendingConfirmation (待确认) 状态的订阅时,您会收到此错误。如需删除订阅,将调用 Amazon SNS 取消订阅 API,这需要 SubScriptionARN。如果您使用控制台删除订阅,Amazon SNS 控制台将自动从所选订阅中选择 SubScriptionARN。对于处于 PendingSubscription (待订阅) 状态的订阅,控制台不显示 SubScriptionId (订阅 ID)。因此,控制台使用 PendingConfirmation (待确认) 作为 SubscriptionId (订阅 ID)。 然后,API 调用失败并返回错误。

对于处于 Pending confirmation (待确认) 状态的订阅:

1.    打开 Amazon SNS 控制台

2.    在导航窗格中,选择 Topics (主题),然后选择您的主题。

3.    选择订阅处于 Pending confirmation (待确认) 状态的主题,然后选择处于 Pending confirmation (待确认) 状态的订阅。

4.    选择 Request confirmation (请求确认)

将向端点发送订阅通知以确认订阅。

5.    复制通知中的订阅 URL。URL 应与以下类似:

https://sns.us-east-1.amazonaws.com/confirmation.html?TopicArn=arn:aws:sns:your-aws-region:your-account-number:your-topic-name&Token=your-token&Endpoint=your-endpoint

6.    在 Amazon SNS 的导航菜单选择 Subscriptions (订阅),然后选择您的订阅。

7.    选择 Confirm Subscription (确认订阅)

8.    将步骤 5 中的订阅 URL 粘贴至对话框,然后选择 Confirm subscription (确认订阅)

9.    选择您的订阅,然后选择 Delete (删除)

对于处于 Deleted (已删除) 状态的订阅:

检查选择取消订阅链接的端点。取消订阅后,端点会收到类似于以下内容的另一个通知:

Your subscription to the topic below has been deactivated:
arn:aws:sns:Your-AWS-Region:Your-Account-Number:Your-Topic-Name

If this was in error or you wish to resubscribe, click or visit the link below:
Resubscribe

Please click on the resubscribe link present in the notification. This will confirm the subscription. On success, please select the specific subscription and click on Delete button.

–或者–

等待三天删除订阅。默认情况下,Amazon SNS 会在三天内自动删除 PendingConfirmation (待确认) 订阅。 


这篇文章对您有帮助吗?


您是否需要账单或技术支持?