我在 API 呼叫時,Amazon Simple Notification Service (Amazon SNS) 中收到無效參數錯誤。
解決方法
平台憑證錯誤
「InvalidParameter - 錯誤訊息: 無效的參數: 屬性原因: 平台憑證無效」
先決條件: 檢查 Apple 開發人員帳戶中的提供者憑證類型,然後下載憑證。
若要解決平台憑證錯誤,請完成下列步驟:
- 開啟 Amazon SNS console (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 錯誤
「message: 無效的參數: FIFO 主題必須有 MessageGroupId 參數」
即使您提供 MessageID,您也可能會看到先前的錯誤。確認您使用適用於瀏覽器中的 JavaScript 的 AWS SDK,或適用於 JavaScript in Node.js 的 AWS SDK 2.777.0 版或更新版本。
即使已在 API 請求中提供 ID,您可能會收到無效 MessageGroupId 或 MessageDeduplicationId 的 Amazon SNS FIFO 錯誤。Amazon SNS FIFO 屬性僅適用於較新的 SDK 版本。如需詳細資訊,請參閱 GitHub 網站上的適用於 JavaScript 的 AWS SDK 變更記錄。
簡訊 (SMS) 錯誤
「無法設定文字訊息屬性。錯誤代碼: InvalidParameter - 錯誤訊息: 無效的參數。」
若要解決文字訊息錯誤,請完成下列步驟:
- 開啟 Amazon SNS console (Amazon SNS 主控台)。
- 在導覽窗格中,選擇 Text messaging (SMS) (簡訊 (SMS))。
- 對於 Text messaging preferences (簡訊偏好設定),選擇 Edit (編輯)。
- 對於 Account spend limit - Optional Parameter (帳戶支出限制 - 可選參數) 中,輸入數字值 1。
注意: 預設情況下,每個 Amazon SNS 帳戶在每個 AWS 區域的每月支出配額為 1 美元。當您超過預設值時,會收到錯誤。若要增加帳戶每月支出配額,請要求增加帳戶支出配額。
- 選擇 Save changes (儲存變更)。
如果目的地國家需要專用的長碼、短碼或 SenderID,請在註冊後使用該代碼。如需詳細資訊,請參閱使用 AWS 終端用戶訊息 SMS 服務的 SMS 傳訊支援國家和地區。
注意: 已註冊的來源身份或寄件者 ID 為國家/地區專用。若要在其他國家/地區使用源身份或寄件者 ID,您必須為每個其他目的地國家/地區分別註冊源身份或寄件者 ID 。如需詳細資訊,請參閱為 AWS 終端用戶訊息 SMS 服務選擇電話號碼或寄件者 ID。
訂閱刪除錯誤
「無法刪除訂閱。錯誤代碼: InvalidParameter - 錯誤訊息: 無效的參數: SubscriptionArn 原因: ARN 必須至少含有 6 個元素,不能僅有 1 個元素」
PendingConfirmation 狀態
當您嘗試移除處於 PendingConfirmation 狀態的訂閱時,可能會收到此錯誤。當您使用取消訂閱 API 來刪除訂閱時,API 呼叫需要 SubscriptionARN。如果您使用 Amazon SNS 主控台來刪除訂閱,則 Amazon SNS 會自動選取 SubscriptionARN。
對於處於 PendingSubscription 狀態的訂閱,主控台不會顯示 SubscriptionId。因此,主控台使用 PendingConfirmation 作為 SubscriptionId。接著,API 呼叫失敗並傳回錯誤。
若要解決處於 Pending confirmation 狀態的訂閱,請完成下列步驟:
-
開啟 Amazon SNS console (Amazon SNS 主控台)。
-
在導覽窗格中,選擇 Topics(主題),然後選擇您的主題。
-
選取訂閱處於 Pending confirmation (待定確認) 狀態的主題,然後選取處於 Pending confirmation (待定確認) 狀態的訂閱。
-
選擇 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 (確認訂閱)。
-
在對話方塊中輸入訂閱通知的訂閱網址,然後選擇 Confirm subscription (確認訂閱)。
-
選取您的訂閱,然後選擇 Delete (刪除)。
或者,等待預設 3 天,讓 Amazon SNS 移除處於 PendingConfirmation 狀態的訂閱。
「Deleted」狀態
您可能會收到處於 Deleted 狀態的訂閱錯誤訊息。
檢查選擇取消訂閱連結的端點。取消訂閱後,端點會收到另一個類似下列通知:
「您對以下主題的訂閱已停用:arn:aws:sns:Your-AWS-Region:Your-Account-Number:Your-Topic-Name
如果此為錯誤或您想重新訂閱,請按一下或訪問下列連結:
重新訂閱
請按一下通知中的重新訂閱連結。這將確認訂閱。成功後,請選取特定的訂閱,然後按一下「Delete」(刪除) 按鈕。」