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

Object Storage Service:シンプルアップロード (Python SDK V1)

最終更新日:Nov 30, 2025

シンプルアップロードでは、put_object メソッドを使用して単一のファイル (オブジェクト) をアップロードします。シンプルアップロードには、文字列、バイト、Unicode 文字、ネットワークストリーム、ローカルファイルのアップロードが含まれます。

注意事項

  • このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。OSS と同じリージョンにある他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。OSS のリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

  • このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、「初期化」をご参照ください。

  • 同じ名前のファイルがバケットにすでに存在し、必要なアクセス権限がある場合、新しくアップロードされたファイルは既存のファイルを上書きします。

権限

デフォルトでは、Alibaba Cloud アカウントは完全な権限を持っています。Alibaba Cloud アカウント下の RAM ユーザーまたは RAM ロールは、デフォルトでは何の権限も持っていません。Alibaba Cloud アカウントまたはアカウント管理者は、RAM ポリシーまたはバケットポリシーを通じて操作権限を付与する必要があります。

共通パラメーター

次の表に、ファイルのアップロードに使用される共通パラメーターを示します。

パラメーター

説明

bucket_name

バケット名。

バケット名は、次のルールに従う必要があります。

  • 小文字、数字、ハイフン (-) のみを含めることができます。

  • 先頭と末尾は小文字または数字である必要があります。

  • 長さは 3~63 文字である必要があります。

object_name

オブジェクトの完全なパス。完全なパスにバケット名を含めることはできません。

オブジェクト名は、次のルールに従う必要があります。

  • UTF-8 でエンコードされている必要があります。

  • 長さは 1~1023 文字である必要があります。

  • スラッシュ (/) またはバックスラッシュ (\) で始めることはできません。

文字列のアップロード

次のコードは、文字列を examplebucket バケット内の exampleobject.txt ファイルにアップロードする方法の例を示しています。

# -*- 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"

# yourBucketName をバケット名に設定します。
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# ファイルをアップロードします。
# ファイルのアップロード時にストレージクラス (x-oss-storage-class) とアクセス権限 (x-oss-object-acl) を設定するには、put_object で関連するヘッダーを設定します。
# headers = dict()
# headers["x-oss-storage-class"] = "Standard"
# headers["x-oss-object-acl"] = oss2.OBJECT_ACL_PRIVATE
# オブジェクトの完全なパスと文字列を指定します。完全なパスにバケット名を含めることはできません。
# result = bucket.put_object('exampleobject.txt', 'Hello OSS', headers=headers)
result = bucket.put_object('exampleobject.txt', 'Hello OSS')

# HTTP ステータスコード。
print('http status: {0}'.format(result.status))
# リクエスト ID。このリクエストを一意に識別します。トラブルシューティングを容易にするために、このパラメーターをプログラムのログに追加します。
print('request_id: {0}'.format(result.request_id))
# ETag は put_object メソッドの戻り値に固有のプロパティです。オブジェクトのコンテンツを識別します。
print('ETag: {0}'.format(result.etag))
# HTTP レスポンスヘッダー。
print('date: {0}'.format(result.headers['date']))

バイトのアップロード

次のコードは、バイトを examplebucket バケット内の exampleobject.txt ファイルにアップロードする方法の例を示しています。

# -*- 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"

# yourBucketName をバケット名に設定します。
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# オブジェクトの完全なパスとバイトコンテンツを指定します。完全なパスにバケット名を含めることはできません。
bucket.put_object('exampleobject.txt', b'Hello OSS')

Unicode 文字のアップロード

次のコードは、Unicode 文字を examplebucket バケット内の exampleobject.txt ファイルにアップロードする方法の例を示しています。Unicode 文字をアップロードすると、OSS はアップロード前に自動的に UTF-8 エンコードされたバイトに変換します。

# -*- 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"

# yourBucketName をバケット名に設定します。
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# オブジェクトの完全なパスと Unicode 文字を指定します。完全なパスにバケット名を含めることはできません。
bucket.put_object('exampleobject.txt', u'Hello OSS')

ネットワークストリームのアップロード

次のコードは、ネットワークストリームを examplebucket バケット内の exampleobject.txt ファイルにアップロードする方法の例を示しています。OSS はネットワークストリームを反復可能オブジェクトとして扱い、チャンクエンコーディングを使用してアップロードします。

# -*- coding: utf-8 -*-
import oss2
import requests
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"

# yourBucketName をバケット名に設定します。
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# requests.get は反復可能オブジェクトを返します。Python SDK はその後、チャンクエンコーディングを使用してオブジェクトをアップロードします。
# ネットワークストリームの URL を指定します。
input = requests.get('http://www.aliyun.com')
# オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めることはできません。
bucket.put_object('exampleobject.txt', input)

ローカルファイルのアップロード

次のコードは、ローカルファイル examplefile.txt を examplebucket バケットにアップロードし、exampleobject.txt として保存する方法の例を示しています。

# -*- 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) を指定します。
bucketName = "examplebucket"
# バケットインスタンスを作成し、バケット名とリージョン情報を指定します。
bucket = oss2.Bucket(auth, endpoint, bucketName, region=region)

# ローカルファイルの完全なパス。
local_file_path = 'D:\\localpath\\examplefile.txt'  

# オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めることはできません。例: exampleobject.txt。
objectName = 'exampleobject.txt'

# put_object_from_file メソッドを使用してローカルファイルを OSS にアップロードします。
bucket.put_object_from_file(objectName, local_file_path)

特定のバイト位置からローカルファイルのアップロードを開始したい場合は、seek() メソッドを使用してターゲット位置にジャンプできます。次のコードは、1000 バイト目からアップロードを開始する方法の例を示しています。

# -*- coding: utf-8 -*-
import oss2
import os
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"

# yourBucketName をバケット名 (例: examplebucket) に設定します。
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# ファイルをバイナリモードで開きます。
# ローカルファイルの完全なパスを指定します。ローカルパスを指定しない場合、ファイルはサンプルプログラムを含むプロジェクトのローカルパスからアップロードされます。
with open('D:\\localpath\\examplefile.txt', 'rb') as fileobj:
    # seek() メソッドは、1000 バイト目から読み書きを開始するように指定します。アップロードは指定された 1000 バイト目から開始され、ファイルの末尾まで続行されます。
    fileobj.seek(1000, os.SEEK_SET)
    # tell() メソッドは現在の位置を返します。
    current = fileobj.tell()
    # オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めることはできません。
    bucket.put_object('exampleobject.txt', fileobj)

よくある質問

アップロード後にファイル URL を取得する方法

ソフトウェア開発キット (SDK) を使用してファイルをアップロードした後、結果にファイル URL は返されません。ファイル URL の取得方法の詳細については、「署名付き URL を使用したファイルのダウンロードまたはプレビュー」をご参照ください。

アップロードされたファイルサイズがローカルファイルサイズと同じであるかを確認する方法

  1. デフォルトでは、OSS はファイルのアップロードおよびダウンロード中にデータ整合性を確保するために、巡回冗長検査 (CRC) によるデータ検証を有効にします。アップロードされたファイルサイズがローカルファイルサイズと異なる場合、InconsistentError が報告されます。

  2. ただし、CRC データ検証プロセスには同時伝送と計算が含まれるため、アップロード速度が低下する可能性があります。ビジネスシナリオで高速伝送が優先される場合は、次のコードを使用して CRC 検証を無効にできます。

    # -*- coding: utf-8 -*-
    import oss2
    import os
    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"
    
    # yourBucketName をバケット名に設定し、enable_crc=False を設定して CRC データ検証を無効にします。
    bucket = oss2.Bucket(auth, endpoint, "yourBucketName", enable_crc=False, region=region)

関連ドキュメント

  • シンプルアップロードの完全なサンプルコードについては、GitHub の例をご参照ください。

  • シンプルアップロードの API 操作の詳細については、「PutObject」をご参照ください。