API操作を呼び出したり、SDKを使用してSimple Message Queue(旧称MNS)にアクセスしたりすると、次のエラーメッセージが表示されます。HTTPステータスコード:403、エラーコード:AccessDenied、エラーメッセージ:The OwnerId that your Access Key Id identified to is forbidden for this operation. この問題は、次のいずれかの原因で発生する可能性があります。1. 他のリージョンのキューにアクセスしようとしています。2. 指定されたオーナーIDが無効です。3. RAMユーザーにアタッチされている権限ポリシーが無効です。
問題
SMQ SDKを使用するか、SMQ API操作を呼び出すと、次のエラーメッセージが表示されます。
[Error Code]:403 AccessDenied [Message]:The OwnerId that your Access Key Id associated to is forbidden for this operation. // [エラーコード]:403 AccessDenied [メッセージ]:この操作に対して、アクセスキーIDに関連付けられているオーナーIDが禁止されています。原因
次の原因が考えられます。
アクセスしようとしている SMQ キューが、SMQ がアクティブになっているリージョンとは異なるリージョンにあります。
プライベートキューエンドポイントを使用する場合、メッセージのプロデューサーとコンシューマーは、同じリージョンのElastic Compute Service(ECS)インスタンスにデプロイする必要があります。そうでない場合、この問題が発生します。
パブリックキューエンドポイントを使用する場合、メッセージのプロデューサーとコンシューマーは、インターネットアクセスが有効になっている同じリージョンのオンプレミスサーバーまたはECSインスタンスにデプロイできます。
OwnerIdパラメーターの値が無効です。OwnerIdパラメーターは、Alibaba CloudアカウントのIDを指定します。MNS コンソール にログインし、右側のアバターにマウスを合わせると、表示されるポップアップウィンドウからアカウントIDを取得できます。

RAMユーザーが無効であるか、RAMユーザーの権限が無効です。
HTTPベースのAPI操作を呼び出すときに、指定されたリクエストURLがリクエストヘッダーの構文と一致しません。詳細については、「参照」をご参照ください。
サードパーティSDKが使用されています。
解決策
この問題をトラブルシューティングするには、次の手順を実行します。
MNS コンソール にログインします。使用したい SMQ キューがあるリージョンを選択し、[キュー] をクリックします。[キュー] ページで、キューを見つけます。[アクション] 列で、[詳細] をクリックします。[キューの詳細] ページの [エンドポイント] セクションで、必要な SMQ エンドポイントに関する情報を表示します。
説明SMQ エンドポイントでは、数字で始まるサブストリングが OwnerId パラメーターの値です。


プロデューサーとコンシューマーが使用する SMQ エンドポイントと OwnerId パラメーターの値が有効かどうかを確認します。
プロデューサーとコンシューマーが次の条件を満たしているかどうかを確認します。満たしていない場合は、プロデューサーとコンシューマーの構成を変更する必要があります。
プライベートキューエンドポイントを使用する場合、メッセージのプロデューサーとコンシューマーは、同じリージョンのElastic Compute Service(ECS)インスタンスにデプロイする必要があります。
パブリックキューエンドポイントを使用する場合、メッセージのプロデューサーとコンシューマーは、インターネットアクセスが有効になっている同じリージョンのオンプレミスサーバーまたはECSインスタンスにデプロイできます。
RAMユーザーを使用して SMQ キューにアクセスする場合は、対応するAlibaba CloudアカウントのRAMユーザーの構成が有効かどうかを確認します。たとえば、次のポリシーがAlibaba CloudアカウントのRAMユーザーにアタッチされています。
/queues/busi-msn/messages// キュー/busi-msn/メッセージ にアクセスするためにRAMユーザーを使用したいとします。この場合、アクセスしたいリソースに対する権限がないため、問題が発生します。RAMユーザーの構成方法の詳細については、「RAMユーザーの作成」をご参照ください。"Resource": [ "acs:mns:*:*:/queues", // "リソース": [ "acs:mns:*:*:/queues", "acs:mns:*:*:/queues/busi-test", // "acs:mns:*:*:/queues/busi-test", "acs:mns:*:*:/queues/busi-test/*" // "acs:mns:*:*:/queues/busi-test/*"上記の手順を実行しても問題が解決しない場合は、サードパーティSDKが使用されているか、HTTPベースのAPI操作を呼び出すときに指定されたリクエストURLがリクエストヘッダーの構文と一致しないことが原因である可能性があります。詳細については、「参照」をご参照ください。
参照
SMQ は、サービスが商用化される前はMQSという名前でした。サービスの商用化前後のエンドポイントは異なります。例:
SMQ が商用化される前は、エンドポイントは
http://y9g.mqs-cn-beijing.aliyuncs.com/となります。SMQ が商用化された後は、エンドポイントは
http://44404.mns.cn-beijing.aliyuncs.com/となります。
上記のエンドポイントは例として使用されています。実際のエンドポイントを表示するには、SMQ コンソールにアクセスしてください。以下のセクションでは、http://y9g.mqs-cn-beijing.aliyuncs.com/ を古いエンドポイント、http://44404.mns.cn-beijing.aliyuncs.com/ を新しいエンドポイントと呼びます。
SMQ が商用化された後、SMQ は最新のAPIバージョンをサポートし、以前のAPIバージョンとも互換性があります。x-mns-version HTTPヘッダーは、SMQ がAPIバージョンを識別するために使用されます。
リクエストに x-mns-version: 2015-06-06 ヘッダーが含まれている場合、SMQ は最新のAPIバージョンの構文に基づいてリクエストを処理します。
リクエストに
x-mqs-version: xxxx-xx-xx形式のヘッダーが含まれている場合、SMQ は以前のAPIバージョンの構文に基づいてリクエストを処理します。
SMQ を使用する場合、次のルールに従う必要があります。
HTTPベースのAPI操作を呼び出すときは、APIバージョンに基づいてリクエストURLを指定する必要があります。新しいエンドポイントを使用し、ヘッダーが
x-mqs-version: xxxx-xx-xx形式の場合、エラーが発生します。サードパーティSDKを使用する場合、SDKは古いエンドポイントと新しいエンドポイントを区別できない場合があります。新しいエンドポイントを使用すると、エラーが発生する可能性があります。サードパーティSDKと比較して、公式SDKはより信頼性が高くなります。公式SDKは、メッセージ処理においても高パフォーマンスを提供します。たとえば、BatchSendMessage操作とBatchReceiveMessage操作を使用して、複数のメッセージを一度に管理できます。既存のコードを変更したくない、推奨されていないサードパーティSDKを使用したい場合は、Alibaba Cloudテクニカルサポートに連絡して古いエンドポイントを取得することをお勧めします。