お知らせ:

当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。

オブジェクトのダウンロード

オブジェクトのダウンロード

このセクションのSDKを使用すると、特定のオブジェクトのダウンロード、複数のオブジェクト、またはオブジェクトのバージョンをダウンロードできます。以下のコードスニペットで使用されているBucketの参照は、コンポーネントインスタンスです。

ダウンロード操作の最初のステップは、バケットから必要なオブジェクトを取得するGET操作です。

オブジェクトをダウンロードするには、リクエスターがREADアクセス権限を持っている必要があります。ただし、バケットの所有者は、必要なレスポンスヘッダーを使用せずにオブジェクトをダウンロードできるように、ユーザーにREADアクセス権限を付与するオプションがあります。

バケットでバージョニングが有効な場合、オブジェクトの特定のバージョンをダウンロードするにはversionIdを渡す必要があります。versionIdが渡されない場合、デフォルトで最新バージョンのオブジェクトがダウンロードされます。

バケットのバージョニングが有効にされた後に無効にされた場合、デフォルトでは最初のプリンシパルオブジェクトがダウンロードされます。このオブジェクトの最新バージョンをダウンロードするには、versionIdパラメータに値「topVersion」を渡す必要があります。

copy
res = bucket.get_object("sam/out/sample.txt")
    # オブジェクトをローカルマシンにダウンロードする
file = open('file_path','wb')
file.write(res)

オブジェクトの一部をダウンロード

以下のSDKメソッドは、rangeパラメータとともに使用されます。rangeパラメータを使用すると、オブジェクトの特定のrangeのバイトをダウンロードできます。

copy
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メソッドを使用して事前に初期化したバケットインスタンスです。

以下のパッケージがインポートされていることを確認してください

copy
from zcatalyst_sdk.stratus.transfer_manager import TransferManager
copy
transfer_manager = TranferManager(bucket)

イテラブルオブジェクトの取得

イテラブルオブジェクトのパーツを返します。ユーザーはイテレーターを使用してこれらのパーツをローカルマシンに書き込むことができます。

注意: イテラブルパーツを返すため、オブジェクト全体ではなく、単一のファイルに書き込んでください。個別のファイルに書き込む場合は、それらを1つに結合する必要があります。
情報: part_sizeMb単位で指定してください。
copy
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関数を取得できます。これらの関数は昇順で返され、それぞれがオブジェクトの特定のパーツをダウンロードします。パーツは指定されたパーツサイズに基づいて決定されます。

copy
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の参照は、コンポーネントインスタンスです。

情報: このSDKメソッドを使用するには、Adminスコープで初期化する必要があります。この要件の詳細については、こちらのセクションをご覧ください。

使用するパラメータ

パラメータ名 データ型 定義
key String 必須パラメータです。オブジェクトのパスを含む完全な名前を保持します。
url_action Request Method 必須パラメータです。ダウンロード(GET)アクション用の署名付きURLを生成するためのパラメータです。
  • GET: オブジェクトをダウンロードする場合
expiry String 任意パラメータです。URLの有効期間(秒単位)です。
  • デフォルト値: 3600秒
  • 最小値: 30秒
  • 最大値: 7日間
active_from String 任意パラメータです。URLが有効になる時刻を保持します。最大値は7日間です。デフォルトでは、URLは生成されるとすぐに有効になります。
copy
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生成のレスポンス例

copy
{
  "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を使用したオブジェクトダウンロードのスニペット例

copy
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)

最終更新日 2026-03-30 13:40:30 +0530 IST