オブジェクトのダウンロード
オブジェクトのダウンロード
このセクションのSDKを使用すると、特定のオブジェクトのダウンロード、複数のオブジェクト、またはオブジェクトのバージョンをダウンロードできます。以下のコードスニペットで使用されているBucketの参照は、コンポーネントインスタンスです。
ダウンロード操作の最初のステップは、バケットから必要なオブジェクトを取得するGET操作です。
オブジェクトをダウンロードするには、リクエスターがREADアクセス権限を持っている必要があります。ただし、バケットの所有者は、必要なレスポンスヘッダーを使用せずにオブジェクトをダウンロードできるように、ユーザーにREADアクセス権限を付与するオプションがあります。
バケットでバージョニングが有効な場合、オブジェクトの特定のバージョンをダウンロードするにはversionIdを渡す必要があります。versionIdが渡されない場合、デフォルトで最新バージョンのオブジェクトがダウンロードされます。
バケットのバージョニングが有効にされた後に無効にされた場合、デフォルトでは最初のプリンシパルオブジェクトがダウンロードされます。このオブジェクトの最新バージョンをダウンロードするには、versionIdパラメータに値「topVersion」を渡す必要があります。
res = bucket.get_object("sam/out/sample.txt")
# オブジェクトをローカルマシンにダウンロードする
file = open('file_path','wb')
file.write(res)
オブジェクトの一部をダウンロード
以下のSDKメソッドは、rangeパラメータとともに使用されます。rangeパラメータを使用すると、オブジェクトの特定のrangeのバイトをダウンロードできます。
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メソッドを使用して事前に初期化したバケットインスタンスです。
以下のパッケージがインポートされていることを確認してください
from zcatalyst_sdk.stratus.transfer_manager import TransferManager
transfer_manager = TranferManager(bucket)
イテラブルオブジェクトの取得
イテラブルオブジェクトのパーツを返します。ユーザーはイテレーターを使用してこれらのパーツをローカルマシンに書き込むことができます。
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関数を取得できます。これらの関数は昇順で返され、それぞれがオブジェクトの特定のパーツをダウンロードします。パーツは指定されたパーツサイズに基づいて決定されます。
res = transfer_manager.generate_part_downloaders("sam/out/sample.txt",20)
file = open('file_path','wb')
for part in res:
file.write(part())
オブジェクトダウンロード用の署名付きURLの生成
署名付きURLは、認証済みユーザーが非認証ユーザーに共有できるセキュアなURLです。このURLは、非認証ユーザーにオブジェクトへのアクセスのための一時的な認可を提供します。以下のコードスニペットで使用されているBucketの参照は、コンポーネントインスタンスです。
使用するパラメータ
| パラメータ名 | データ型 | 定義 |
|---|---|---|
| key | String | 必須パラメータです。オブジェクトのパスを含む完全な名前を保持します。 |
| url_action | Request Method | 必須パラメータです。ダウンロード(GET)アクション用の署名付きURLを生成するためのパラメータです。
|
| expiry | String | 任意パラメータです。URLの有効期間(秒単位)です。
|
| active_from | String | 任意パラメータです。URLが有効になる時刻を保持します。最大値は7日間です。デフォルトでは、URLは生成されるとすぐに有効になります。 |
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生成のレスポンス例
{
"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を使用したオブジェクトダウンロードのスニペット例
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
Yes
No
Send your feedback to us