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

Object Storage Service:簡易アップロード

最終更新日:Feb 26, 2024

put_objectメソッドを使用して、1つのオブジェクトをアップロードできます。 この方法はシンプルアップロードと呼ばれます。 シンプルアップロードを使用して、文字列、バイト、Unicode文字、ネットワークストリーム、およびローカルファイルのデータをアップロードできます。

使用上の注意

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

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

  • 簡単なアップロードを実行するには、oss:PutObject権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。

使用上の注意

既存のオブジェクトと同じ名前のオブジェクトをアップロードすると、既存のオブジェクトはアップロードされたオブジェクトによって上書きされます。

次の表に、オブジェクトをアップロードするときに設定する必要がある一般的なパラメーターを示します。

パラメーター

説明

bucket_name

バケットの名前です。

バケットの名前は、次の命名規則に準拠している必要があります。

  • 名前には、小文字、数字、ハイフン (-) のみを使用できます。

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

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

object_name

アップロードするオブジェクトのフルパス。 バケット名をフルパスに含めないでください。

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

  • オブジェクト名はUTF-8でエンコードする必要があります。

  • 名前は1 ~ 1,023文字である必要があります。

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

文字列のアップロード

次のコードは、examplebucketという名前のバケット内のexampleobject.txtという名前のオブジェクトに文字列をアップロードする方法の例を示しています。

# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート

# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
# バケットの名前を指定します。 
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')

# オブジェクトをアップロードします。 
# put_objectのx-oss-storage-classヘッダーとx-oss-object-aclヘッダーを設定して、アップロードするオブジェクトのストレージクラスとアクセス制御リスト (ACL) を指定できます。 
# 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を表示します。 リクエストIDは、リクエストを一意に識別する。 このパラメーターをログに追加することを推奨します。 
print('request_id: {0}'.format(result.request_id))
# put_objectメソッドによって返されるETag値を表示します。 オブジェクトのETag値は、オブジェクトのコンテンツを識別するために使用されます。 
print('ETag: {0}'.format(result.etag))
# HTTPレスポンスヘッダーを表示します。 
print('date: {0}'.format(result.headers['date'])) 

バイトのアップロード

次のコードは、examplebucketという名前のバケット内のexampleobject.txtという名前のオブジェクトにバイトをアップロードする方法の例を示しています。

# -*-コーディング: utf-8 -*-

oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート

# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
# バケットの名前を指定します。 
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')

# オブジェクトのフルパスとアップロードするバイトを指定します。 バケット名をフルパスに含めないでください。 
bucket.put_object ('exampleobject.txt '、b'Hello OSS') 

Unicode文字のアップロード

次のコードでは、examplebucketという名前のバケット内のexampleobject.txtという名前のオブジェクトにUnicode文字をアップロードする方法の例を示します。 Unicode文字をアップロードすると、OSSは文字をUTF-8-encodedバイトに変換します。

# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート

# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
# バケットの名前を指定します。 
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')

# オブジェクトのフルパスとアップロードするUnicode文字を指定します。 バケット名をフルパスに含めないでください。 
bucket.put_object ('exampleobject.txt '、u'Hello OSS') 

Upload a network stream

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

# -*-コーディング: utf-8 -*-
oss2のインポート
インポートリクエスト
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート

# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
# バケットの名前を指定します。 
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')

# requests.getメソッドはiterableオブジェクトを返します。 OSS SDK for Pythonは、チャンクエンコーディングを使用してオブジェクトをアップロードします。 
# ネットワークストリームのアドレスを指定します。 
input = requests.get('http:// www.aliyun.com ')
# オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 
bucket.put_object ('exampleobject.txt '、入力) 

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

次のコードは、examplefile.txtという名前のローカルファイルをexamplebucketという名前のバケットにアップロードする方法の例を示しています。 アップロードされたファイルは、OSSにexampleobject.txtという名前のオブジェクトとして保存されます。 OSSはローカルファイルをファイルオブジェクトとしてアップロードします。 アップロード中、OSSはrbモードなどのバイナリモードでファイルを開きます。

# -*-コーディング: utf-8 -*-
oss2のインポート
osのインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート

# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
# バケットの名前を指定します。 
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')

# ファイルはバイナリモードで開く必要があります。 
# ローカルファイルのフルパスを指定します。 デフォルトでは、ローカルファイルのフルパスを指定しない場合、サンプルプログラムが属するプロジェクトのパスからローカルファイルがアップロードされます。 
fileobjとしてオープン ('D :\\ localpath\\examplefile.txt '、'rb') を持つ:
    # seekメソッドを使用して、ファイルのバイト1,000からデータを読み取ります。 データは、バイト1000からローカルファイルの最後のバイトまでアップロードされます。 
    fileobj.seek(1000, os.SEEK_SET)
    # tellメソッドを使用して、現在の位置を取得します。 
    current = fileobj.tell()
    # オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 
    bucket.put_object ('exampleobject.txt ', fileobj) 

OSS SDK for Pythonは、ローカルファイルをアップロードするためのより便利な方法も提供します。 次のコードは、このメソッドを使用してローカルファイルをアップロードする方法の例を示しています。

# オブジェクトのフルパスとローカルファイルのフルパスを指定します。 オブジェクトのフルパスにバケット名を含めないでください。 
# ローカルファイルのパスが指定されていない場合は、サンプルプログラムが属するプロジェクトのパスにアップロードされます。 
bucket.put_object_from_file ('exampleobject.txt ', 'D :\\ localpath\\examplefile.txt') 

よくある質問

オブジェクトのアップロード後にオブジェクトURLを取得するにはどうすればよいですか。

OSS SDKを使用してオブジェクトをアップロードする場合、オブジェクトのURLは応答に含まれません。 オブジェクトURLの取得方法の詳細については、「オブジェクトとオブジェクトURLの共有」をご参照ください。

アップロードされたオブジェクトのサイズがローカルファイルのサイズと同じかどうかを確認するにはどうすればよいですか?

オブジェクトをアップロードまたはダウンロードすると、データの整合性を確保するためにCRCがデフォルトで有効になります。 アップロードされたオブジェクトのサイズがローカルファイルのサイズと異なる場合、エラーInconsistentErrorが返されます。

参考資料

  • 簡単なアップロードの実行に使用する完全なサンプルコードについては、『GitHub』をご参照ください。

  • シンプルアップロードを実行するために呼び出すことができるAPI操作の詳細については、「PutObject」をご参照ください。