お知らせ:

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

オブジェクトのアップロード

このセクションに記載されているSDKメソッドを使用すると、さまざまな方法でオブジェクトをアップロードしてバケットに保存できます。オブジェクトは文字列またはストリームとしてアップロードできます。以下のコードスニペットで使用されているBucketの参照は、コンポーネントインスタンスです。

オブジェクトに対してバージョニングを有効にしていない場合、Stratusが同じオブジェクトに対して複数の書き込みリクエストを受け取ると、オブジェクトは継続的に上書きされます。最後にアップロードされたオブジェクトのみが保存されます。

ただし、バージョニングを有効にすると、各アップロードはオブジェクトのバージョンとして扱われ、すべてが一意のversion_idを持つバケットに保存されます。

注意: パスやオブジェクトを作成する際、スペースを含む以下の文字はサポートされていません:ダブルクォート、両方の山括弧、ハッシュタグ、バックスラッシュ、パイプ記号。

ストリームとしてオブジェクトをアップロード

このSDKメソッドを使用すると、ストリームとしてバケットにオブジェクトをアップロードできます。ストリームを変数に格納し、その変数をアップロードメソッドに渡します。

copy
file = open('file_path','rb')
res = bucket.put_object("sam/out/sample.txt",file)
print(res)

文字列としてオブジェクトをアップロード

このSDKメソッドを使用すると、文字列としてオブジェクトをアップロードできます。アップロードメソッドput_object()にオブジェクト名と、文字列形式で保存するデータを渡します。

copy
res = bucket.put_object("sam/out/sample.txt",'content of the file')
print(res)

オプション付きでオブジェクトをアップロード

このSDKメソッドを使用すると、オブジェクトをアップロードする際に以下のオプションを使用できます。

  • overwrite: バケットのバージョニングが有効になっていない場合に使用できるオプションです。バージョニングなしでリソースを上書きする場合は、このオプションを使用する必要があります。デフォルト値は「false」です。

  • ttl: オブジェクトのTime-to-Live(TTL)を秒単位で設定するために使用できるオプションです。値は60秒以上である必要があります。

  • meta_data: アップロードするオブジェクトのメタ詳細をアップロードするために使用できるオプションです。

  • content_type: オブジェクトのMIMEタイプを設定する必要がある場合に使用できるオプションです。

copy
options = {
    'overwrite': 'true',
    'ttl': '300', #有効期限を秒単位で指定する
    'meta_data': {
        'author': 'John'
    } 
}
file = open('file_path','rb')
res = bucket.put_object("sam/out/sample.txt",file, options)
print(res)

展開オプション付きでオブジェクトをアップロード

以下のメソッドを使用してzipファイルをアップロードすると、zipファイルが展開され、オブジェクトがバケットにアップロードされます。

copy
# extract_uploadを含むアップロードオプションを定義する
options = {
    # オブジェクトが既に存在する場合は上書きする
    'overwrite': 'true',
    # オブジェクトが期限切れになるまでの有効期間(秒)
    'ttl': '300',
    # ZIPファイルの内容を自動的に展開する
    'extract_upload': 'true',
    # オブジェクトのMIMEタイプ
    'content-type': 'application/zip',
    # オブジェクトに関連付けられたカスタムメタデータ
    'meta_data': {
        'author': 'Sam'
    }
}
#バイナリモードでファイルを開く
file = open('sam.zip', 'rb')
#ZIPの内容をアップロードして展開する
res = bucket.put_object('sam/sample.zip', file, options)

このSDKメソッドはtask_idを返します。このtask_idこちらのSDKメソッドで使用して、展開のステータスを確認できます。

レスポンス例

copy
{ 'task_id': '1234263749' }

マルチパートを使用したオブジェクトのアップロード

このセクションでは、Stratus内のバケットに大きなオブジェクトを正常にアップロードするためのSDKメソッドについて説明します。

マルチパートアップロード機能は、複数のHTTPSリクエストで大きなファイルをバケットにアップロードします。すべての個別パーツがアップロードされると、これらのリクエストはすべて単一のオブジェクトに統合されます。

注意: **100 MB以上**のオブジェクトをアップロードする場合は、マルチパートアップロードを推奨方法として検討することをお勧めします。

マルチパートアップロードの開始

マルチパート操作を実行するには、マルチパートオブジェクトインスタンスを取得する必要があります。Stratus内のバケットに保存されているオブジェクトに対するマルチパート操作を実行するさまざまなコードスニペットで、このコンポーネントインスタンスを参照します。

使用するパラメータ

bucket: こちらのSDKメソッドを使用して事前に初期化したバケットインスタンスです。

copy
init_res = bucket.initiate_multipart_upload(key="")
print(init_res)

レスポンス例

copy
{
  bucket: 'zcstratus123-development',
  key: 'objectName.txt',
  upload_id: '01j7xbm4vm5750zbedxqgc4q6m',
  status: 'PENDING'
}

オブジェクトのパーツのアップロード

以下のSDKメソッドでは、オブジェクトの個々のパーツのアップロードを実行します。各パーツには1から1000の範囲の固有のpartNumberがあります。これはパーツの順序を表しますが、これらのパーツは必ずしも順番にアップロードされるわけではありません。すべてのパーツのアップロードが完了すると、これらのパーツは順序通りに統合されます。

copy
upload_res = bucket.upload_part(key="",upload_id="", part_number=3, body=open('file_path','rb'))
print(upload_res)

マルチパートアップロードのサマリー取得

以下のSDKメソッドを使用すると、アップロードされたすべてのパーツの操作サマリーを取得できます。サマリーを表示するには、get_multipart_upload_summary()メソッドを使用します。

copy
summary_res = bucket.get_multipart_upload_summary(key="", upload_id="")
print(summary_res)

レスポンス例

copy
{
    "bucket": "zcstratus12345-development",
    "key": "sasm.txt",
    "upload_id": "01hyfyeazrrstmt7k5fa7ej726",
    "status": "PENDING",
    "parts": [
        {
            "part_number": 1,
            "size": 0,
            "uploaded_at": 1716374678999
        },
        {
            "part_number": 2,
            "size": 2797094,
            "uploaded_at": 1716374678576
        },
        {
            "part_number": 4,
            "size": 0,
            "uploaded_at": 1716374679136
        }
    ]
}

オブジェクトのマルチパートアップロードの完了

以下のメソッドを使用すると、すべてのパーツが正常にアップロードされた後にマルチパートプロセスを終了できます。プロセスを完了するには、complete_multipart_upload()メソッドにuploadIdを渡します。

copy
complete_res = bucket.complete_multipart_upload(key="", upload_id="")
print(complete_res)

SDK実装例

Package Imports
copy
from concurrent.futures import ThreadPoolExecutor
import zcatalyst_sdk
copy
def handler(request: Request):
    app = zcatalyst_sdk.initialize()
    if request.path == "/":
        # Stratusインスタンス
        stratus = app.stratus()
        # バケットインスタンス
        bucket = stratus.bucket('bucket_name')
        # マルチパートアップロード
        key = "sam/out/sample.txt"
        file_path = '/sam/smple.mp4'
        initiate_res = bucket.initiate_multipart_upload(key)
        part_number = 1
        part_size = 50 * 1024 * 1024
        futures = []
        try:
            with open(file_path, 'rb') as file:
                with ThreadPoolExecutor(max_workers=3) as executor:
                    while True:
                        chunk = file.read(part_size)
                        if not chunk:
                            break
                        futures.append(executor.submit(
      	bucket.upload_part,
      	key,
      	initiate_res['upload_id'],
      	chunk, part_number
     	)
       )
                        part_number += 1
            for future in futures:
                future.result()
         except Exception as err:
            raise err
         multipart_upload_res = bucket.complete_multipart_upload(key, initiate_res['upload_id'])
	return multipart_upload_res
	else:
 	response = make_response('Unknown path')
 	response.status_code = 400
 	return response

Transfer Managerを使用したオブジェクトのアップロード

アップロードするオブジェクトが大きすぎてアップロードできない場合、Transfer Manager操作を実行できます。Transfer Manager操作はオブジェクトを複数のパーツに分割し、より高速なアップロードを実行します。このSDKセクションでは、Transfer Managerを使用してStratusにオブジェクトをアップロードするために利用可能なすべてのSDKメソッドについて説明します。

Transfer Managerインスタンスの取得

Transfer Manager操作を実行するには、Transfer Managerオブジェクトインスタンスを取得する必要があります。Stratus内のバケットに保存されているオブジェクトに対するTransfer Manager操作を実行するさまざまなコードスニペットで、このコンポーネントインスタンスを参照します。

使用するパラメータ

bucket: こちらのSDKメソッドを使用して事前に初期化したバケットインスタンスです。

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

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

Transfer Managerを使用したオブジェクトのアップロード

このセクションでは、Stratus内のバケットに大きなオブジェクトを正常にアップロードするためのSDKメソッドについて説明します。

マルチパートアップロード機能は、複数のHTTPSリクエストで大きなファイルをバケットにアップロードします。すべての個別パーツがアップロードされると、これらのリクエストはすべて単一のオブジェクトに統合されます。

注意: **100 MB以上**のオブジェクトをアップロードする場合は、マルチパートアップロードを推奨方法として検討することをお勧めします。

マルチパートインスタンスの作成

以下のSDKメソッドを使用して、upload_idを生成します。このIDを使用して、オブジェクトに対するマルチパート操作を実行できるインスタンスを作成して返します。

copy
init_ins = transfer_manager.create_multipart_instance(key="")

既に初期化されたマルチパートアップロード操作のインスタンスを作成する必要がある場合は、以下のコードスニペットをコピーして使用してください。

copy
init_ins = transfer_manager.create_multipart_instance(key="", upload_id="")

オブジェクトのパーツのマルチパートアップロードの実行

以下のSDKメソッドでは、オブジェクトの個々のパーツのアップロードを実行します。各パーツには1から1000の範囲の固有のpart_numberがあります。これはパーツの順序を表しますが、これらのパーツは必ずしも順番にアップロードされるわけではありません。すべてのパーツのアップロードが完了すると、これらのパーツは順序通りに統合されます。

使用するパラメータ

  • part_number: アップロードされるパーツの順序を保持します。
  • body: オブジェクトのデータ/コンテンツを保持します。
copy
upload_res = init_ins.upload_part(body=open('file_path','rb'), part_number=3)
print(upload_res)

マルチパートアップロードのサマリー取得

以下のSDKメソッドを使用すると、アップロードされたすべてのパーツの操作サマリーを取得できます。サマリーを表示するには、get_upload_summary()メソッドを使用します。

copy
summary_res = init_ins.get_upload_summary()
print(summary_res)

オブジェクトのマルチパートアップロードの完了

以下のメソッドを使用すると、すべてのパーツが正常にアップロードされた後にマルチパートプロセスを終了できます。プロセスを完了するには、complete_upload()メソッドにupload_idを渡します。

copy
complete_res = init_ins.complete_upload()
print(complete_res)

Transfer Managerの全機能をラップしたオブジェクトのアップロード

以下のSDKメソッドはラッパーとして機能し、Transfer Managerのアップロード操作全体を複数のステップを使用せずに実行します。このメソッドを使用すると、オブジェクトが複数のパーツに分割され、複数のパーツでバケットにアップロードされ、すべてのパーツがアップロードされると統合されます。

注意: **2GBを超える**オブジェクトの場合は、マルチパートアップロード操作を正常に実行するために、個別のSDKメソッドを使用することをお勧めします。

copy
upload_res = transfer_res.put_object_as_parts(key='', body=open('file_path', 'rb'), part_size=50)
print(upload_res)

オブジェクトアップロード用の署名付きURLの生成

署名付きURLは、認証済みユーザーが非認証ユーザーに共有できるセキュアなURLです。このURLは、非認証ユーザーにオブジェクトへのアクセスのための一時的な認可を提供します。以下のコードスニペットで使用されているBucketの参照は、コンポーネントインスタンスです。

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

使用するパラメータ

パラメータ名 データ型 定義
key String 必須パラメータです。オブジェクトのパスを含む完全な名前を保持します。
url_action Request Method 必須パラメータです。アップロード(PUT)アクション用の署名付きURLを生成するためのパラメータです。
  • PUT: オブジェクトをアップロードする場合
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='PUT',expiry_in_sec='300', active_from='1023453725828')
print(pre_signed_url_res)

アップロード用署名付きURL生成のレスポンス例

copy
{
  "signature": "https://sadi-development.zohostratus.com/_signed/code.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747899245773&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=YBPoNE9txCIUWWX3ntdgVd95VTt1jGFlSuvnTRFbCMQ"
file_path = "/Users/ranjitha-18338/Documents/Pyhton-SDK/filestore2.0/output.txt",
  "expiry_in_seconds": "300",
  "active_from": "1726492859577"
}

署名付きURLを使用したオブジェクトアップロードのスニペット例

Package Imports
copy
import requests
copy
#実際の署名付きURLに置き換える
url = "https://sadi-development.zohostratus.com/_signed/code.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747899245773&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=YBPoNE9txCIUWWX3ntdgVd95VTt1jGFlSuvnTRFbCMQ"
#アップロードするローカルファイルのパス
file_path = "file_path"
#必須ヘッダーを設定する
headers = {
    # 'Content-Type': 'text/plain',  # ファイルのコンテンツタイプを指定する
    # 'overwrite': 'true',           # 上書きを示すオプションのカスタムヘッダー(サーバーで必要な場合)
}
#バイナリ読み取りモードでファイルを開き、PUTリクエストを送信してアップロードする
with open(file_path, 'rb') as f:
    files = {'file': f}  #ファイルペイロードを作成する
    response = requests.put(url, headers=headers, files=files)
    #レスポンスステータスを確認する
    if response.status == 200:
        print('Object uploaded successfully')
    else:
        print('Object upload failed')

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