--- title: "オブジェクトのダウンロード" url: https://docs.catalyst.zoho.com/ja/sdk/python/v1/cloud-scale/stratus/download-object/ description: "このページでは、バケットからオブジェクトをダウンロードするためのPython SDKメソッドを説明します。" last_updated: 2026-03-30T08:10:30Z service: Cloud Scale type: general related_links: - name: "Stratusコンポーネントヘルプドキュメント" url: /ja/cloud-scale/help/stratus/introduction - name: "Java SDK" url: /ja/sdk/java/v1/cloud-scale/stratus/download-object/ - name: "Node.js SDK" url: /ja/sdk/nodejs/v2/cloud-scale/stratus/download-object/ - name: "Web SDK" url: /ja/sdk/web/v4/cloud-scale/stratus/download-object/ - name: "iOS SDK" url: /ja/sdk/ios/v2/cloud-scale/stratus/download-object/ - name: "Android SDK" url: /ja/sdk/android/v2/cloud-scale/stratus/download-object/ - name: "Flutter SDK" url: /ja/sdk/flutter/v2/cloud-scale/stratus/download-object/ - name: "REST API" url: /ja/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets --- # オブジェクトのダウンロード ### オブジェクトのダウンロード このセクションのSDKを使用すると、[特定のオブジェクトのダウンロード](https://docs.catalyst.zoho.com/ja/cloud-scale/help/stratus/objects/manage-object/download-object/)、複数のオブジェクト、またはオブジェクトのバージョンをダウンロードできます。以下のコードスニペットで使用されているBucketの参照は、[コンポーネントインスタンス](https://docs.catalyst.zoho.com/ja/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/)です。 ダウンロード操作の最初のステップは、バケットから必要なオブジェクトを取得する`GET`操作です。 オブジェクトをダウンロードするには、リクエスターが`READ`アクセス権限を持っている必要があります。ただし、バケットの所有者は、必要なレスポンスヘッダーを使用せずにオブジェクトをダウンロードできるように、ユーザーに`READ`アクセス権限を付与するオプションがあります。 バケットで[バージョニング](https://docs.catalyst.zoho.com/ja/cloud-scale/help/stratus/stratus-config/general-settings/#versioning)が有効な場合、オブジェクトの特定のバージョンをダウンロードするには`versionId`を渡す必要があります。`versionId`が渡されない場合、デフォルトで最新バージョンのオブジェクトがダウンロードされます。 バケットの*バージョニング*が有効にされた後に無効にされた場合、デフォルトでは最初のプリンシパルオブジェクトがダウンロードされます。このオブジェクトの最新バージョンをダウンロードするには、`versionId`パラメータに値「`topVersion`」を渡す必要があります。 ```python res = bucket.get_object("sam/out/sample.txt") # オブジェクトをローカルマシンにダウンロードする file = open('file_path','wb') file.write(res) ``` ### オブジェクトの一部をダウンロード 以下のSDKメソッドは、`range`パラメータとともに使用されます。rangeパラメータを使用すると、オブジェクトの特定の`range`のバイトをダウンロードできます。 ```python options = { 'version_id': '01hx66f1383jm48w9sa4z20kve', # 指定されたバージョンIDのオブジェクトをダウンロードする 'range': '0-200' # オブジェクトの開始と終了の範囲 } res = bucket.get_object('"sam/out/sample.txt", options) # オブジェクトをローカルマシンにダウンロードする file = open('file_path','wb') file.write(res) ``` ### Transfer Managerを使用したオブジェクトのダウンロード このセクションでは、**Transfer Manager**技術を使用してStratusからローカルシステムに大きなオブジェクトを正常にダウンロードするためのSDKメソッドについて説明します。Transfer Managerは、オブジェクトの開始バイトと終了バイトの範囲を使用して、大きなオブジェクトを複数のバイト範囲に分割する操作です。オブジェクトの各パーツはストリームとして返され、ローカルシステムにダウンロードされます。 #### Transfer Managerインスタンスの取得 Transfer Manager操作を実行するには、Transfer Managerオブジェクトインスタンスを取得する必要があります。Stratus内のバケットに保存されているオブジェクトに対するTransfer Manager操作を実行するさまざまなコードスニペットで、このコンポーネントインスタンスを参照します。 **使用するパラメータ** `bucket`: [こちらのSDKメソッド](https://docs.catalyst.zoho.com/ja/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/)を使用して事前に初期化したバケットインスタンスです。 **以下のパッケージがインポートされていることを確認してください** ```python from zcatalyst_sdk.stratus.transfer_manager import TransferManager ``` ```python transfer_manager = TranferManager(bucket) ``` #### イテラブルオブジェクトの取得 イテラブルオブジェクトのパーツを返します。ユーザーはイテレーターを使用してこれらのパーツをローカルマシンに書き込むことができます。 > **注意:** イテラブルパーツを返すため、オブジェクト全体ではなく、単一のファイルに書き込んでください。個別のファイルに書き込む場合は、それらを1つに結合する必要があります。 > **情報:** `part_size`は**Mb**単位で指定してください。 ```python res = transfer_manager.get_iterable_object("sam/out/sample.txt", 20) file = open('file_path','wb') # オブジェクトをローカルマシンに保存する for chunk in res: file.write(chunk) ``` #### オブジェクトパーツダウンローダーの生成 ユーザーが大きなファイル(例:10 GBのファイル)をダウンロードする必要がある場合、`get_object()`メソッドの使用は実用的ではありません。代わりに、ユーザーはこのSDKメソッドを選択できます。`generate_part_downloaders()`メソッドをパラメータ`key(str)`と`part_size(Long)`で呼び出すことにより、ユーザーはTransfer Manager関数を取得できます。これらの関数は昇順で返され、それぞれがオブジェクトの特定のパーツをダウンロードします。パーツは指定されたパーツサイズに基づいて決定されます。 ```python res = transfer_manager.generate_part_downloaders("sam/out/sample.txt",20) file = open('file_path','wb') for part in res: file.write(part()) ``` > **情報:** 部分ダウンロードを有効にするには、ファイルをAPIまたはSDK経由でアップロードする必要があります。part_sizeは5 MBより大きく100 MB未満である必要があります。 ### オブジェクトダウンロード用の署名付きURLの生成 署名付きURLは、認証済みユーザーが非認証ユーザーに共有できるセキュアなURLです。このURLは、非認証ユーザーにオブジェクトへのアクセスのための一時的な認可を提供します。以下のコードスニペットで使用されているBucketの参照は、[コンポーネントインスタンス](https://docs.catalyst.zoho.com/ja/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/)です。 > **情報:** このSDKメソッドを使用するには、**Admin**スコープで初期化する必要があります。この要件の詳細については、[こちらのセクション](https://docs.catalyst.zoho.com/ja/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes)をご覧ください。 **使用するパラメータ**
パラメータ名 データ型 定義
`key` **String** 必須パラメータです。オブジェクトの[パス](https://docs.catalyst.zoho.com/ja/cloud-scale/help/stratus/objects/introduction/#path)を含む完全な名前を保持します。
`url_action` **Request Method** 必須パラメータです。ダウンロード(GET)アクション用の署名付きURLを生成するためのパラメータです。
  • `GET`: オブジェクトをダウンロードする場合
`expiry` **String** 任意パラメータです。URLの有効期間(秒単位)です。
  • デフォルト値: **3600秒**
  • 最小値: **30秒**
  • 最大値: **7日間**
`active_from` **String** 任意パラメータです。URLが有効になる時刻を保持します。最大値は**7日間**です。デフォルトでは、URLは生成されるとすぐに有効になります。
```python pre_signed_url_res = bucket.generate_presigned_url("sam/out/sample.txt",url_action='GET',expiry_in_sec='300', active_from='1023453725828', version_id='jdery748tfge78') print(pre_signed_url_res) ``` **ダウンロード用署名付きURL生成のレスポンス例** ```json { "signature": "https://zcstratus123-development.zohostratus.com/_signed/sam/out/sample.txt?organizationId=83963316&stsCredential=74660608-83963316&stsDate=1726492859577&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=_G8mnq-03vKgPlnJPmqBvzEnT3Hk-SnECuG-cgURyDs", "expiry_in_seconds": "300", "active_from": "1726492859577" } ``` **署名付きURLを使用したオブジェクトダウンロードのスニペット例** ```python import requests #ファイルをダウンロードするための署名付きURL url = "https://sadi-development.zohostratus.com/_signed/code.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747899927592&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=-l10AlSsbZzkq6t8HHgDfNkEiiDWFaaU9M3-hPBz0M8" #ダウンロードしたファイルをローカルに保存するパス file_path = "file_path" # 実際のファイルパスに置き換える #GETリクエストを送信してファイルをダウンロードする response = requests.get(url, stream=True) #リクエストが成功したかどうかを確認する if response.status_code == 200: #バイナリ書き込みモードで保存先ファイルを開く with open(file_path, "wb") as f: #大きなファイルを処理するためにチャンク単位でデータを書き込む for chunk in response.iter_content(chunk_size=8192): if chunk: f.write(chunk) print("Download completed successfully.") else: print("Object download failed. Status code:", response.status_code) ```