Resource Access Management (RAM) ユーザーおよびロールを使用して API 操作を呼び出す際の権限判定の複雑さを軽減し、権限管理エクスペリエンスを向上させるため、Alibaba Cloud Elastic Compute Service (ECS) は、2025 年 12 月 20 日 (UTC + 08:00) にクエリ (Describe) API 操作の認証メカニズムをアップグレードします。このアップグレードにより、SDK、CLI、Terraform の呼び出しメソッドを含む (ただしこれらに限定されない) API 呼び出しに権限がない場合の戻り値が標準化されます。
有効期間
2025 年 12 月 20 日 (UTC + 08:00)
影響を受けるリージョン
すべてのリージョン
調整内容
RAM ユーザーまたはロールを使用して、必要な権限なしで ECS クエリ (Describe) API 操作を呼び出した場合の応答がアップグレードされます。アップグレード前は、操作は HttpCode:200 (OK) で空のリソースリストを返します。アップグレード後は、操作は認証の失敗を示す HttpCode:403 (Forbidden) のエラー応答を返します。
アップグレード前後の比較
比較項目 | アップグレード前 | アップグレード後 |
戻り値 | 空のリソースリスト (HTTP 200) | 認証失敗 (HTTP 403) |
エラーコード | なし |
|
エラーメッセージ | なし |
|
診断情報 | なし |
|
この例では、DescribeInstances 操作が使用されます。ecs:DescribeInstances 権限なしで操作を呼び出すと、アップグレード前と後で次の応答が返されます。
アップグレード前 | アップグレード後 |
| |
影響を受ける API 操作
サービス | API バージョン | 操作 |
ECS | 2014-05-26 | |
ECS | 2014-05-26 |
SDK 呼び出しの適応
コードで権限エラー (Exception) をキャプチャし、それに応じて処理します。Exception 要素には、権限エラーの詳細な理由を説明する AccessDeniedDetail フィールドが含まれています。getAccessDeniedDetail() 関数を使用してフィールドを取得できます。Java の例:
SDK V1.0 for Java の例:
// SDK リクエストを生成します。
DescribeXXXRequest request = new DescribeXXXRequest();
try {
DescribeXXXResponse response = client.getAcsResponse(request);
} catch (ServerException e) {
// エラーコードを表示します。
System.out.println(e.getErrCode());
} catch (ClientException e) {
// エラーコードを表示します。権限エラーの場合、Forbidden.RAM が返されます。
System.out.println(e.getErrCode());
// 権限エラーの詳細な理由を取得します。
System.out.println(e.getAccessDeniedDetail());
}SDK V2.0 for Java の例:
DescribeXXXRequest request = new DescribeXXXRequest();
try {
client.describeXXX(request);
} catch (TeaException e) {
// エラーコードを表示します。権限エラーの場合、Forbidden.RAM が返されます。
System.out.println(e.getErrCode());
// 権限エラーの詳細な理由を取得します。
System.out.println(e.getAccessDeniedDetail());
}次の表に、他の言語とバージョンの SDK 呼び出しの適応について説明します。
言語 | バージョン | 適応ドキュメントリンク |
Python | V1.0 | |
V2.0 | ||
PHP | V1.0 | |
V2.0 | ||
Node.js | V1.0 | |
V2.0 | ||
.NET | V1.0 | |
V2.0 | ||
Go | V2.0 |
Alibaba Cloud SDK V1.0 for Go のサポートは終了しました。詳細については、「2025 年 3 月 1 日の Alibaba Cloud SDK V1.0 for Golang のサポート終了」をご参照ください。Alibaba Cloud SDK V2.0 for Go の使用を推奨します。
ソリューションとサポート
権限の診断とトラブルシューティング
権限エラーが発生すると、応答には権限拒否に関する詳細情報を提供する AccessDeniedDetail フィールドが含まれます。次のいずれかの方法でこの情報を解析できます。
RAM の DecodeDiagnosticMessage 操作を呼び出します。
OpenAPI トラブルシューティング ページでリクエスト ID (
RequestId) を入力して、権限エラーの詳細とソリューションを取得します。RAM コンソールの トラブルシューティング ページを使用します。
詳細については、「アクセス拒否エラーのトラブルシューティング方法」をご参照ください。
権限設定の提案
必要な操作権限の付与
操作に AuthAction 権限が必要であることを確認した場合、診断結果に基づいて、Alibaba Cloud アカウントのオーナーまたは権限管理者に連絡して、RAM ユーザーに権限を付与するか、RAM ロールに権限を付与してください。
互換性の処理
エラー応答をキャプチャして識別するには、try...catch を使用して対応する例外をキャッチし、エラーコードが Forbidden.RAM であるかどうかを確認します。これは、RAM ユーザーに必要な RAM 権限がないことを示します。