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

Object Storage Service:AppendObject

最終更新日:Dec 16, 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=Position HTTP/1.1
Content-Length: ContentLength
Content-Type: ContentType
Host: BucketName.oss.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue

リクエストヘッダー

ヘッダー

必須 / 任意

説明

キャッシュ制御

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ヘッダーを標準に設定すると、オブジェクトは標準オブジェクトとして保存されます。

有効な値:

  • Standard

  • 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リクエストに含まれる共通リクエストヘッダーの詳細については、「共通リクエストヘッダー」をご参照ください。

リクエスト内のパラメータ

重要

追加パラメーターと位置パラメーターはどちらもCanonicalizedResourceであり、AppendObjectリクエストの署名に含める必要があります。

パラメーター

必須 / 任意

説明

append

String

対象

非該当

リクエストが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のオブジェクトを既存の追加可能オブジェクトに追加する場合、追加可能オブジェクトのステータスは変更されません。

レスポンスヘッダー

ヘッダー

タイプ

説明

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, 0xffffffffffffffffULL, 0xffffffffffffffffULL, true, true> boost_ecma;
    uint64_t do_boost_crc(const char* buffer, int length)
    {
        boost_ecma crc;
        crc.process_bytes(buffer, length);
        return crc.checksum();
    }
  • Pythonでcrcmod関数を使用する

    do_crc64 = crcmod.mkCrcFun(0x142F0E1EBA9EA3693L, initCrc=0L, xorOut=0xffffffffffffffffL, rev=True)
    print 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です。

  • リクエストの例

    POST /oss.jpg?append&position=0 HTTP/1.1 
    Host: oss-example.oss.aliyuncs.com 
    Cache-control: no-cache 
    Expires: Wed, 08 Jul 2015 16:57:01 GMT 
    Content-Encoding: utf-8 
    x-oss-storage-class: Archive
    Content-Disposition: attachment;filename=oss_download.jpg 
    Date: Wed, 08 Jul 2015 06:57:01 GMT 
    Content-Type: image/jpg 
    Content-Length: 1717 
    Authorization: OSS qn6q**************:77Dv****************  
    [1717 bytes of object data]

    通常のレスポンス例

    HTTP/1.1 200 OK
    Date: Wed, 08 Jul 2015 06:57:01 GMT
    ETag: "0F7230CAA4BE94CCBDC99C550000****"
    Connection: keep-alive
    Content-Length: 0  
    Server: 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 
    Host: versioning-append.oss.aliyuncs.com 
    Date: Tue, 09 Apr 2019 03:59:33 GMT
    Content-Length: 3
    Content-Type: application/octet-stream
    Authorization: OSS qn6q**************:77Dv****************

    通常のレスポンス例

    HTTP/1.1 200 OK
    Date: Tue, 09 Apr 2019 03:59:33 GMT
    ETag: "2776271A4A09D82CA518AC5C0000****"
    Connection: keep-alive
    Content-Length: 0  
    Server: AliyunOSS
    x-oss-version-id: CAEQGhiBgIC_k6aV5RgiIGI3YTY2ZmMzYWJlMzQ3YjM4YTljOTk5YjUyZGF****
    x-oss-hash-crc64ecma: 3231342946509354535
    x-oss-next-append-position: 47
    x-oss-request-id: 5CAC18A5B7AEADE01700****

SDK

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

エラーコード

エラーコード

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はアクティブ化されません。