すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:例外の処理 (Python SDK V1)

最終更新日:Nov 29, 2025

OSS Python SDK の例外 (`OssError`) は、`ClientError`、`RequestError`、`ServerError` の 3 つのカテゴリに分類されます。これらの例外は `oss2.exceptions` サブモジュールで定義されています。

次の表に、例外の変数と型を示します。

変数

説明

status

int

  • `ServerError` 例外の場合、`status` は HTTP ステータスコードです。

  • `ClientError` および `RequestError` 例外の場合、`status` は静的フィールドです。

request_id

str

  • `ServerError` 例外の場合、OSS サーバーはリクエスト ID を返します。

  • `ClientError` および `RequestError` 例外の場合、`request_id` は空の文字列です。

code and message

str

OSS エラー応答フォーマットの `Code` および `Message` XML タグのテキストです。

例外処理の例

次のコードは、存在しないファイルをダウンロードする際の例外を処理する方法を示しています。エラーメッセージから HTTP ステータスコードとリクエスト ID を出力します。

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# 環境変数からアクセス認証情報を取得します。このサンプルコードを実行する前に、環境変数 OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# バケットが配置されているリージョンのエンドポイントを設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントに対応するリージョン (例: cn-hangzhou) を設定します。 注意: このパラメーターは V4 署名に必要です。
region = "cn-hangzhou"

# "examplebucket" を実際のバケット名に置き換えます。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

try:
    # ダウンロードするファイルの名前 (例: exampleobject.txt) を設定します。
    stream = bucket.get_object('exampleobject.txt')
except oss2.exceptions.NoSuchKey as e:
    print('status={0}, request_id={1}'.format(e.status, e.request_id))            

ClientError

`ClientError` は、無効なクライアント入力によって発生します。たとえば、`bucket.batch_delete_objects` メソッドに空のファイルリストを指定した場合に、この例外がスローされます。`ClientError` の `status` 値は `oss2.exceptions.OSS_CLIENT_ERROR_STATUS` です。

RequestError

HTTP ライブラリが例外をスローすると、Python SDK はそれを `RequestError` に変換します。`RequestError` の `status` 値は `oss2.exceptions.OSS_REQUEST_ERROR_STATUS` です。

ServerError

OSS サーバーが HTTP エラーコードを返すと、Python SDK はそれを `ServerError` に変換します。`ServerError` には、HTTP ステータスコードと OSS エラーコードから派生した複数の子クラスがあります。たとえば、`NotFound` 子クラスはすべての 404 例外に対応し、`Conflict` 子クラスはすべての 409 例外に対応します。

次の表に、一般的なエラーコードを示します。

例外クラス

HTTP ステータスコード

OSS エラーコード

説明

NotModified

304

Empty

条件付きダウンロードを使用する際、`If-Modified-Since` パラメーターで指定された時刻が、オブジェクトの実際の変更時刻より後である場合に発生します。

InvalidArgument

400

InvalidArgument

マルチパートアップロード中に `x-oss-complete-all:yes` も指定されている場合、本文を指定することはできません。指定した場合、エラーが発生します。

AccessDenied

403

AccessDenied

必要なアクセス権限がありません。

NoSuchBucket

404

NoSuchBucket

バケットが存在しません。

NoSuchKey

404

NoSuchKey

ファイルが存在しません。

NoSuchUpload

404

NoSuchUpload

マルチパートアップロードまたは再開可能なアップロード中に、一部のパートは正常にアップロードされましたが、アップロードが完了していません。

NoSuchWebsite

404

NoSuchWebsiteConfiguration

バケットに静的 Web サイトホスティングが設定されていません。

NoSuchLifecycle

404

NoSuchLifecycle

バケットにライフサイクルルールが設定されていません。

NoSuchCors

404

NoSuchCORSConfiguration

バケットにオリジン間リソース共有 (CORS) が設定されていません。

BucketNotEmpty

409

BucketNotEmpty

削除しようとしているバケットに、オブジェクト、未完了のマルチパートアップロードタスク、または削除されていない `LiveChannels` が含まれています。

PositionNotEqualToLength

409

PositionNotEqualToLength

`Position` の値が現在のオブジェクトの長さと一致しません。

ObjectNotAppendable

409

ObjectNotAppendable

現在のファイルは追加可能オブジェクトではありません。