我在进行 API 调用时在 Amazon Simple Notification Service (Amazon SNS) 中收到一条参数无效的错误消息。
解决方法
平台凭证错误
“InvalidParameter - 错误消息: 无效参数: 属性原因: 平台凭证无效”
**先决条件:**检查你的 Apple 开发者账户中的提供商证书类型并下载证书。
要解决平台凭证错误,请完成以下步骤:
- 打开 Amazon SNS 控制台。
- 在导航窗格上,选择 Push notifications(推送通知)。
- 选择 Create platform application(创建平台应用程序)。
- 对于 Application name(应用程序名称),输入应用程序的名称。
- 对于 Push notification platform(推送通知平台),选择 Apple iOS/VoIP/Mac。
- 仅对于沙盒证书类型,在 Apple Credentials(Apple 凭据)部分中,选择 Used for development in sandbox(用于沙盒开发)。
重要事项:如果您使用沙盒和生产证书类型,则不要选择 Used for development in sandbox(用于沙盒开发)。否则,您会收到错误。
- 对于 Push certificate type(推送证书类型),选择您的证书类型。
- 选择 Choose file(选择文件),然后选择要从中加载凭证的证书。
- 选择 Create platform application(创建平台应用程序)。
FIFO 错误
“消息: 无效参数: 对于 FIFO 主题,MessageGroupID 参数是必需的”
即使您提供了 MessageID,也可能会看到前面的错误。确认您使用的是用于浏览器的 AWS SDK for JavaScript 或用于 Node.js 中的 AWS SDK for JavaScript 版本 2.777.0 或更高版本。
即使您在 API 请求中提供了相应的 ID,您仍可能会因无效的 MessageGroupId 或 MessageDeduplicationId 而收到 Amazon SNS FIFO 错误。Amazon SNS FIFO 属性仅适用于较新的 SDK 版本。有关更多信息,请参阅 GitHub 网站上AWS SDK for JavaScript 更新日志。
短信 (SMS) 错误
“无法设置短信属性。错误代码: InvalidParameter - 错误消息: 无效参数:”
要解决短信错误,请完成以下步骤:
- 打开 Amazon SNS 控制台。
- 在导航窗格上,选择 Text messaging (SMS)(短信)。
- 对于 Text messaging preferences(短信首选项),选择 Edit(编辑)。
- 对于 Account spend limit - Optional Parameter(账户支出限额 – 可选参数),输入数值 1。
**注意:**默认情况下,每个 Amazon SNS 账户在每个 AWS 区域的每月支出配额为 $1 美元。当您超过默认值时,您会收到一个错误。要增加账户每月支出配额,请申请增加账户支出配额。
- 选择 Save changes(保存更改)。
如果目的地国家/地区需要专用的长码、短码或 SenderID,请在注册后使用该代码。有关更多信息,请参阅AWS 终端用户消息发送 SMS 服务所支持的国家和地区。
**注意:**注册的发件人身份或 SenderID 因国家/地区而异。要使用其他国家/地区的发件号码或 SenderID,您必须单独注册每个其他目的地国家/地区的发件号码或 SenderID。有关更多信息,请参阅为 AWS 终端用户消息发送 SMS 服务选择电话号码或 SenderID。
订阅删除错误
“无法删除订阅。错误代码: InvalidParameter - 错误消息: Invalid parameter: SubscriptionArn Reason: ARN 必须至少有 6 个元素,而不是 1 个”
PendingConfirmation 状态
当您尝试删除处于 PendingConfirmation 状态的订阅时,可能会收到此错误。当您使用 Unsubscribe API 删除订阅时,API 调用需要 SubscriptionARN。如果您使用 Amazon SNS 控制台删除订阅,则 Amazon SNS 会自动选择 SubscriptionARN。
对于处于 PendingSubscription 状态的订阅,控制台不会显示 SubscriptionId。因此,控制台会使用 PendingConfirmation 作为 SubscriptionId。然后,API 调用失败并返回错误。
要解决处于 PendingConfirmation 状态的订阅,请完成以下步骤:
-
打开 Amazon SNS 控制台。
-
在导航窗格上,选择 Topics(主题),然后选择您的主题。
-
选择订阅处于 PendingConfirmation 状态的主题和处于 PendingConfirmation 状态的订阅。
-
选择 Request confirmation(请求确认)。订阅通知将发送到端点以确认订阅。该通知包含一个与以下示例类似的链接:
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
-
在导航窗格中,选择 Subscriptions(订阅),然后选择您的订阅。
-
选择 Confirm subscription(确认订阅)。
-
在对话框中输入订阅通知中的订阅 URL,然后选择 Confirm subscription(确认订阅)。
-
选择您的订阅,然后选择 Delete(删除)。
或者,等待默认 3 天,让 Amazon SNS 删除处于 PendingConfirmation 状态的订阅。
Deleted 状态
对于状态为 Deleted 的订阅,您可能会收到错误。
检查从中选择取消订阅链接的端点。在您取消订阅后,端点会收到另一条类似于以下内容的通知:
“您对以下主题的订阅已停用:arn:aws:sns:Your-AWS-Region:Your-Account-Number:Your-Topic-Name
如果出现错误或者您想重新订阅,请点击或访问以下链接:
重新订阅
请点击通知中的重新订阅链接。这将确认订阅。成功后,请选择特定的订阅并点击 Delete 按钮。”