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

Object Storage Service:AppendObject

最終更新日:Feb 23, 2024

オブジェクトを既存のオブジェクトに追加してアップロードします。AppendObject操作を呼び出して作成されたオブジェクトは追加可能なオブジェクトです。 PutObject操作を呼び出してアップロードされたオブジェクトは通常のオブジェクトです。

バージョン管理

バージョン管理が有効または一時停止されているバケット内の追加可能オブジェクトに対してAppendObject操作を呼び出す場合は、次の項目に注意してください。

  • AppendObject操作は、現在のバージョンが追加可能オブジェクトであるオブジェクトに対してのみ呼び出すことができます。 この操作を呼び出すと、Object Storage Service (OSS) は追加可能オブジェクトの以前のバージョンを生成しません。

    現在のバージョンが追加可能オブジェクトであるオブジェクトに対してPutObjectまたはDeleteObject操作を呼び出すと、OSSはその追加可能オブジェクトを以前のバージョンとして保存します。 ただし、追加可能オブジェクトにコンテンツを追加することはできません。

  • AppendObject操作は、追加可能なオブジェクトに対してのみ呼び出すことができます。 通常のオブジェクトや削除マーカーなど、他のタイプのオブジェクトではAppendObject操作を呼び出すことはできません。

制限事項

  • AppendObject操作を使用して生成されるオブジェクトの最大サイズは5 GBです。

  • 保持ポリシーで保護されているオブジェクトに対してAppendObject操作を呼び出すことはできません。 詳細については、「保持ポリシー」をご参照ください。

  • OSSサーバーに保存されている追加可能なオブジェクトは、特定のカスタマーマスターキー (CMK) IDを使用して暗号化することはできません。

リクエスト構文

POST /ObjectName?append&position=ポジションHTTP/1.1
Content-Length: ContentLength
Content-Type: ContentType
ホスト: BucketName.oss.aliyuncs.com
日付: GMT日付
権限付与: SignatureValue 

リクエストヘッダー

重要

追加ヘッダーと位置ヘッダーは両方ともCanonicalizedResourceであり、AppendObjectリクエストの署名に含める必要があります。

ヘッダー

データ型

必須

説明

append

String

必須

N/A

リクエストがAppendObjectリクエストであることを指定します。 オブジェクトに対してAppendObject操作が呼び出されるたびに、オブジェクトが最後に変更された時刻が更新されます。

位置

String

必須

0

AppendObject操作の開始位置。 AppendObject操作が成功するたびに、次のAppendObject操作の開始位置を指定するために、x-oss-next-append-positionヘッダーがレスポンスに含まれます。

オブジェクトに対して呼び出される最初のAppendObject操作のpositionヘッダーの値は0でなければなりません。 オブジェクトに対して呼び出される後続のAppendObject操作でのpositionヘッダーの値は、オブジェクトの現在の長さです。 たとえば、最初のAppendObjectリクエストで指定されたpositionヘッダーの値が0で、Content-Lengthの値が65536の場合、2番目のAppendObjectリクエストのpositionヘッダーの値を65536に設定する必要があります。

  • AppendObjectリクエストのpositionヘッダーの値が0で、追加可能オブジェクトと同じ名前のオブジェクトが存在しない場合は、PutObjectリクエストと同じ方法で、AppendObjectリクエストにx-oss-server-side-encryptionなどのヘッダーを指定できます。 AppendObjectリクエストのx-oss-server-side-encryptionヘッダーに有効な値を指定した場合、リクエストに対するレスポンスにはx-oss-server-side-encryptionヘッダーが含まれます。 メタデータを変更する場合は、CopyObject操作を呼び出すことができます。

  • positionヘッダーの値が有効なAppendObjectリクエストを呼び出して、サイズが0 KBのオブジェクトを既存の追加可能オブジェクトに追加する場合、追加可能オブジェクトのステータスは変更されません。

キャッシュ制御

String

任意

no-cache

オブジェクトのwebページのキャッシュ動作。 詳細については、RFC 2616をご参照ください。

このヘッダーはデフォルトでは空です。

コンテンツ処理

String

任意

attachment;filename=oss_download.jpg

オブジェクトがダウンロードされたときのオブジェクトの名前。 詳細については、RFC 2616をご参照ください。

このヘッダーはデフォルトでは空です。

コンテンツエンコーディング

String

任意

utf-8

オブジェクトのエンコード形式。 詳細については、RFC 2616をご参照ください。

このヘッダーはデフォルトでは空です。

コンテンツ-MD5

String

任意

ohhnqLBJFiKkPSBO1eNaUA==

MD5アルゴリズムを使用して計算されたMD5ハッシュ。 このヘッダは、受信されたメッセージの内容が送信されたメッセージの内容と同じであるかどうかをチェックするために使用される。

Content-MD5ヘッダーの値を取得するには、ヘッダー以外のメッセージの内容に基づいて128ビットの数値を計算し、その数値をBase64-encodeします。

このヘッダーはデフォルトでは空です。

制限: なし。

有効期限

GMT

任意

7月8日水曜日2015 16:57:01 GMT

有効期限です。 詳細については、RFC 2616をご参照ください。

このヘッダーはデフォルトでは空です。

x-oss-server-side-encryption

String

任意

AES256

OSSサーバー上のオブジェクトを暗号化するために使用されるメソッド。

有効な値:

  • AES256: OSSによって管理されるキーは、暗号化と復号化 (SSE-OSS) に使用されます。

  • KMS: Key Management Service (KMS) によって管理されるCMKは、暗号化と復号化に使用されます。

x-oss-object-acl

String

任意

非公開

オブジェクトのアクセス制御リスト (ACL) 。

有効な値:

  • default (デフォルト): オブジェクトのACLは、オブジェクトが格納されているバケットのACLと同じです。

  • private: オブジェクトのACLがprivateです。 オブジェクトの読み取りおよび書き込み権限を持つのは、オブジェクトの所有者および許可されたユーザーのみです。

  • public-read: オブジェクトのACLはpublic-readです。 オブジェクトの読み取りおよび書き込み権限を持つのは、オブジェクトの所有者および許可されたユーザーのみです。 他のユーザーには、オブジェクトに対する読み取り権限のみがあります。 オブジェクトのACLをこの値に設定する場合は注意してください。

  • public-read-write: オブジェクトのACLはpublic-read-writeです。 すべてのユーザーは、オブジェクトに対する読み取りおよび書き込み権限を持っています。 オブジェクトのACLをこの値に設定する場合は注意してください。

詳細については、「オブジェクトACL」をご参照ください。

x-oss-storage-class

String

任意

標準

オブジェクトのストレージクラス。

オブジェクトをアップロードするときにx-oss-storage-classヘッダーを指定した場合、オブジェクトがアップロードされるバケットのストレージクラスに関係なく、アップロードされたオブジェクトのストレージクラスは指定された値になります。 たとえば、低頻度アクセス (IA) バケットにオブジェクトをアップロードするときにx-oss-storage-classヘッダーを標準に設定すると、オブジェクトは標準オブジェクトとして保存されます。

有効な値:

  • 標準

  • IA

  • アーカイブ

ストレージクラスの詳細については、「概要」をご参照ください。

重要
  • このヘッダーは、オブジェクトに対してAppendObject操作を最初に呼び出したときにのみ有効になります。

  • 追加可能オブジェクトのストレージクラスは、コールドアーカイブまたはディープコールドアーカイブに変換できません。

x-oss-meta-*

String

任意

x-oss-meta-location

追加可能なオブジェクトを作成するときにAppendObjectリクエストに追加できるパラメーター。 パラメーターには、x-oss-meta-プレフィックスを含める必要があります。 既存の追加可能オブジェクトにオブジェクトを追加する場合、これらのパラメーターをリクエストに含めることはできません。 x-oss-meta-* プレフィックスを含むパラメータは、オブジェクトのメタデータと見なされます。

オブジェクトのx-oss-meta-プレフィックスを含む複数のパラメーターを指定できます。 メタデータの合計サイズは8 KBを超えることはできません。

x-oss-meta-プレフィックスを含むパラメーターの名前には、ハイフン (-) 、数字、および文字を含めることができます。 大文字は小文字に変換されます。 アンダースコア (_) などの他の文字はサポートされていません。

x-oss-tagging

String

任意

TagA=A

キーと値のペアでオブジェクトに指定されているタグ。 オブジェクトに複数のタグを指定できます。 例: TagA=A&TagB=B

重要
  • このヘッダーは、オブジェクトに対してAppendObject操作を最初に呼び出したときにのみ有効になります。

  • タグキーとタグ値はURLエンコードされている必要があります。 オブジェクトにタグを指定する場合、タグキーのみが必要で、タグ値はオプションです。 例: TagA&TagB=B

AppendObjectリクエストに含まれる共通リクエストヘッダーの詳細については、「共通リクエストヘッダー」をご参照ください。

レスポンスヘッダー

ヘッダー

データ型

説明

x-oss-next-append-position

64-bit integer

1717

次の追加操作の開始位置 (オブジェクトの長さ) 。

このヘッダーは、AppendObjectリクエストが成功した場合、または位置とオブジェクトの長さが一致しないためにHTTPステータスコード409が返された場合に返されます。

x-oss-hash-crc64ecma

64-bit integer

3231342946509354535

オブジェクトの64ビットCRC値。 この値は、ECMA-182 標準に基づいて計算されます。

AppendObjectリクエストに対するレスポンスの共通レスポンスヘッダーの詳細については、「共通レスポンスヘッダー」をご参照ください。

64ビットCRC値の計算方法

追加可能なオブジェクトのCRC値は、ECMA-182標準に基づいて計算されます。 次のいずれかの方法を使用して、オブジェクトの64ビットCRC値を計算できます。

  • Boost CRCモジュールを使用する

    typedef boost::crc_optimal<64、0x42F0E1EBA9EA3693ULL、0 xffffffffffffULL、0 xffffffffffffULL、0 xffffffffffULL、true、true> boost_ecma;
    uint64_t do_boost_crc(const char * buffer, int length)
    {
        boost_ecma crc;
        crc.process_bytes(buffer, length);
        crc.checksum() を返します。} 
  • Pythonでcrcmod関数を使用する

    do_crc64 = crcmod.mkCrcFun(0x142F0E1EBA9EA3693L、initCrc=0L、xorOut=0 xffffffffffL、rev=True)
    プリントdo_crc64("123456789") 

その他の操作との関係

API 操作

関係

PutObject

既存の追加可能オブジェクトに対してPutObject操作を呼び出すと、追加可能オブジェクトは通常のオブジェクトに変換されます。

HeadObject

既存の追加可能オブジェクトに対してHeadObject操作を呼び出すと、x-oss-next-append-position、x-oss-hash-crc64ecma、およびx-oss-object-typeヘッダーが返されます。 追加可能なオブジェクトのx-oss-object-typeの値はappendableです。

GetBucket (ListObjects)

GetBucketリクエストへの応答では、追加可能オブジェクトのx-oss-object-type値はappendableです。

CopyObject

  • CopyObject操作を呼び出して、追加可能オブジェクトのユーザーメタデータを変更できます。

  • CopyObject操作を呼び出して追加可能なオブジェクトをコピーすることはできません。

  • CopyObject操作を呼び出して、追加可能オブジェクトのサーバー側暗号化メソッドを変更することはできません。

  • リクエストの例

    POST /oss.jpg?append&position=0 HTTP/1.1
    ホスト: oss-example.oss.aliyuncs.com
    Cache-control: no-cache
    有効期限: 7月8日水曜日2015 16:57:01 GMT
    コンテンツエンコード: utf-8
    x-oss-storage-class: アーカイブ
    Content-Disposition: attachment;filename=oss_download.jpg
    日付: 7月8日水曜日2015 06:57:01 GMT
    コンテンツタイプ: image/jpg
    コンテンツ-長さ: 1717
    承認: OSS qn6qrrqxo2oawuk53otf ****:kZoYNv66bsmc10 + dcGKw5x2P ****
    [1717バイトのオブジェクトデータ] 

    通常のレスポンス例

    HTTP/1.1 200 OK
    日付: 7月8日水曜日2015 06:57:01 GMT
    ETag: "0F7230CAA4BE94CCBDC99C550000 ****"
    接続: キープアライブ
    コンテンツ長: 0
    サーバー: AliyunOSS
    x-oss-hash-crc64ecma: 14741617095266562575
    x-oss-next-append-position: 1717
    x-oss-request-id: 559CC9BDC755F95A6448 **** 
  • バージョン管理されたバケットのサンプルリクエスト

    バージョン管理が有効になっているバケット内のオブジェクトに対してAppendObject操作を呼び出すと、x-oss-version-idヘッダーがレスポンスに含まれ、その値はオブジェクトの現在のバージョンIDになります。

    POST /example?append&position=0 HTTP/1.1
    ホスト: versioning-append.oss.aliyuncs.com
    日付: 4月2019日火曜日03:59:33 GMT
    コンテンツ-長さ: 3
    Content-Type: application/octet-stream
    承認: OSS bwo4j5l8d3j ****:MCY5nnfgfJU/f3Xe0odqBtG5 **** 

    通常のレスポンス例

    HTTP/1.1 200 OK
    日付: 4月2019日火曜日03:59:33 GMT
    ETag: "2776271A4A09D82CA518AC5C0000 ****"
    接続: キープアライブ
    コンテンツ長: 0
    サーバー: AliyunOSS
    x-oss-version-id: CAEQGhiBgIC_k6aV5RgiIGI3YTY2ZmMzYWJlMzQ3YjM4YTljOTk5YjUyZGF ****
    x-oss-hash-crc64ecma: 3231342946509354535
    x-oss-next-append-position: 47
    x-oss-request-id: 5CAC18A5B7AEADE01700 **** 

OSS SDK

次のプログラミング言語のOSS SDKを使用して、AppendObject操作を呼び出すことができます。

エラーコード

エラーコード

HTTPステータスコード

説明

ObjectNotAppendable

409

追加できないオブジェクトに対してAppendObject操作を呼び出しました。

PositionNotEqualToLength

409

  • ポジションヘッダーの値が現在のオブジェクトの長さと一致しません。

    現在のリクエストに対するレスポンスのx-oss-next-append-positionヘッダーの値に基づいて、次のAppendObject操作の開始位置を取得できます。 複数の要求を同時に送ることができる。 したがって、x-oss-next-append-positionヘッダーの値をリクエストのpositionヘッダーの値に設定しても、値がすぐに更新されないため、リクエストが失敗することがあります。

  • ポジションヘッダーの値が0で、同じ名前の追加可能オブジェクトの長さが0の場合、または同じ名前の追加可能オブジェクトが存在しない場合、リクエストは成功します。 それ以外の場合として、オブジェクトの位置と長さが一致しないと、このエラー コードが返されます。

InvalidArgument

400

x-oss-storage-classx-oss-object-aclなどのパラメーターの値が無効です。

FileImmutable

409

削除または変更するデータは、保持ポリシーによって保護されます。

KmsServiceNotEnabled

403

サーバー側の暗号化方式としてKMSが指定されていますが、コンソールではKMSはアクティブ化されません。