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

2 分钟阅读
0

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

解决方法

平台凭证错误

“InvalidParameter - 错误消息: 无效参数: 属性原因: 平台凭证无效”

**先决条件:**检查你的 Apple 开发者账户中的提供商证书类型并下载证书。

要解决平台凭证错误,请完成以下步骤:

  1. 打开 Amazon SNS 控制台
  2. 在导航窗格上,选择 Push notifications(推送通知)。
  3. 选择 Create platform application(创建平台应用程序)。
  4. 对于 Application name(应用程序名称),输入应用程序的名称。
  5. 对于 Push notification platform(推送通知平台),选择 Apple iOS/VoIP/Mac
  6. 仅对于沙盒证书类型,在 Apple Credentials(Apple 凭据)部分中,选择 Used for development in sandbox(用于沙盒开发)。
    重要事项:如果您使用沙盒和生产证书类型,则不要选择 Used for development in sandbox(用于沙盒开发)。否则,您会收到错误。
  7. 对于 Push certificate type(推送证书类型),选择您的证书类型。
  8. 选择 Choose file(选择文件),然后选择要从中加载凭证的证书。
  9. 选择 Create platform application(创建平台应用程序)。

FIFO 错误

“消息: 无效参数: 对于 FIFO 主题,MessageGroupID 参数是必需的”

即使您提供了 MessageID,也可能会看到前面的错误。确认您使用的是用于浏览器的 AWS SDK for JavaScript 或用于 Node.js 中的 AWS SDK for JavaScript 版本 2.777.0 或更高版本。

即使您在 API 请求中提供了相应的 ID,您仍可能会因无效的 MessageGroupIdMessageDeduplicationId 而收到 Amazon SNS FIFO 错误。Amazon SNS FIFO 属性仅适用于较新的 SDK 版本。有关更多信息,请参阅 GitHub 网站上AWS SDK for JavaScript 更新日志

短信 (SMS) 错误

“无法设置短信属性。错误代码: InvalidParameter - 错误消息: 无效参数:”

要解决短信错误,请完成以下步骤:

  1. 打开 Amazon SNS 控制台
  2. 在导航窗格上,选择 Text messaging (SMS)(短信)。
  3. 对于 Text messaging preferences(短信首选项),选择 Edit(编辑)。
  4. 对于 Account spend limit - Optional Parameter(账户支出限额 – 可选参数),输入数值 1
    **注意:**默认情况下,每个 Amazon SNS 账户在每个 AWS 区域的每月支出配额为 $1 美元。当您超过默认值时,您会收到一个错误。要增加账户每月支出配额,请申请增加账户支出配额。
  5. 选择 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 状态的订阅,请完成以下步骤:

  1. 打开 Amazon SNS 控制台

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

  3. 选择订阅处于 PendingConfirmation 状态的主题和处于 PendingConfirmation 状态的订阅。

  4. 选择 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
  5. 在导航窗格中,选择 Subscriptions(订阅),然后选择您的订阅。

  6. 选择 Confirm subscription(确认订阅)。

  7. 在对话框中输入订阅通知中的订阅 URL,然后选择 Confirm subscription(确认订阅)。

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

或者,等待默认 3 天,让 Amazon SNS 删除处于 PendingConfirmation 状态的订阅。

Deleted 状态

对于状态为 Deleted 的订阅,您可能会收到错误。

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

“您对以下主题的订阅已停用:arn:aws:sns:Your-AWS-Region:Your-Account-Number:Your-Topic-Name
如果出现错误或者您想重新订阅,请点击或访问以下链接:
重新订阅
请点击通知中的重新订阅链接。这将确认订阅。成功后,请选择特定的订阅并点击 Delete 按钮。”

AWS 官方
AWS 官方已更新 4 个月前