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

2 分钟阅读
0

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

简短描述

如果您收到以下错误:

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 开发者账户中的提供商证书类型。然后,下载证书。

1.    打开 Amazon SNS 控制台

2.    在导航窗格上,选择推送通知

3.    选择创建平台应用程序

4.    在应用程序名称中,输入应用程序的名称。

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

6.    如果您使用的是沙盒类型的证书,请在 Apple 凭证部分中,选中用于沙盒中的开发复选框。

重要信息:如果您使用的是沙盒和生产类型的证书,则不能选中此复选框。否则,您会收到错误。

7.    对于推送证书类型,选择您的证书类型。

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

9.    选择创建平台应用程序

解决 FIFO 错误

确认您使用的是“用于浏览器中的 JavaScript 的 AWS SDK”或“适用于 Node.js 中的 JavaScript 的 AWS SDK”版本 2.777.0 或更高版本。

尽管 API 请求中提供了 ID,您还是会收到与无效的 MessageGroupId 或无效的 MessageDeduplicationId 相关的 Amazon SNS FIFO 错误。Amazon SNS FIFO 属性仅适用于较新的 SDK 版本。有关更多信息,请参阅适用于 JavaScript 的 AWS SDK 的更改日志

解决文本消息(SMS)错误

1.    打开 Amazon SNS 控制台

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

3.    在短信首选项中,选择编辑

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

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

5.    选择保存更改

解决订阅删除错误

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

对于处于待确认状态的订阅:

1.    打开 Amazon SNS 控制台

2.    在导航窗格上,选择主题,然后选择您的主题。

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

4.    选择请求确认

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

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 的导航菜单上,选择订阅,然后选择您的订阅。

7.    选择确认订阅

8.    步骤 5 中的订阅 URL 粘贴到对话框中,然后选择确认订阅

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

对于状态为已删除的订阅:

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

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 状态的订阅。

AWS 官方
AWS 官方已更新 3 年前