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

Object Storage Service:AppendObject

最終更新日:Dec 07, 2025

AppendObject 操作を呼び出して、データを追加することでオブジェクトをアップロードできます。AppendObject 操作を使用して作成されたオブジェクトは追加可能オブジェクトです。PutObject 操作を使用してアップロードされたオブジェクトは通常オブジェクトです。

バージョン管理

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

  • オブジェクトの現在のバージョンが追加可能オブジェクトである場合にのみ、データを追加できます。OSS は、この追加可能オブジェクトの旧バージョンを作成しません。

    追加可能オブジェクトの現在のバージョンに対して PutObject または DeleteObject 操作を実行すると、OSS は追加可能オブジェクトを旧バージョンとして保存します。ただし、このオブジェクトにデータを追加することはできなくなります。

  • 通常オブジェクトや削除マーカーなど、追加可能でないオブジェクトに対して AppendObject 操作を実行することはできません。

  • オブジェクトが存在しない場合、または最新バージョンが削除マーカーである場合にのみ、新しい追加可能バージョンを作成できます。そのためには、AppendObject を呼び出し、position パラメーターを 0 に設定します。

制限事項

  • AppendObject を使用して作成されたオブジェクトの最終的なサイズは 5 GB を超えることはできません。

  • 保持ポリシーによって保護されているオブジェクトに対して AppendObject 操作を使用することはできません。

  • 追加可能オブジェクトに対して、CMK ID を指定して Key Management Service (KMS) によるサーバー側暗号化を有効にすることはできません。

  • 追加可能オブジェクトのダウンロードパフォーマンスは、通常オブジェクトやマルチパートオブジェクトよりも大幅に低くなります。ビジネスシナリオに基づいてこれを評価する必要があります。

権限

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

API

アクション

定義

AppendObject

oss:PutObject

この操作を呼び出して、既存のオブジェクトにオブジェクトを追加することでオブジェクトをアップロードできます。

oss:PutObjectTagging

既存のオブジェクトにオブジェクトを追加してアップロードする際に、x-oss-tagging を通じてオブジェクトタグを指定する場合、この権限が必要です。

リクエスト構文

POST /ObjectName?append&position=Position HTTP/1.1
Content-Length: ContentLength
Content-Type: ContentType
Host: BucketName.oss.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue

リクエストヘッダー

名前

タイプ

必須

説明

Cache-control

string

いいえ

no-cache

オブジェクトのウェブページのキャッシュ動作を指定します。詳細については、RFC2616 をご参照ください。

デフォルト:なし

Content-Disposition

string

いいえ

attachment;filename=oss_download.jpg

オブジェクトがダウンロードされるときの名前を指定します。詳細については、RFC2616 をご参照ください。

デフォルト:なし

Content-MD5

string

いいえ

ohhnqLBJFiKkPSBO1eNaUA==

Content-MD5 ヘッダーは、MD5 アルゴリズムによって生成された値です。このヘッダーは、メッセージの内容が送信された内容と同じであるかどうかを確認するために使用されます。

Content-MD5 値を取得するには、メッセージ本文 (ヘッダーを除く) に対して MD5 アルゴリズムを実行して 128 ビットの数値を取得し、その数値を Base64 エンコードします。

デフォルト:なし

制約:なし

Expires

string

いいえ

Wed, 08 Jul 2015 16:57:01 GMT

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

デフォルト:なし

x-oss-server-side-encryption

string

いいえ

AES256

サーバー側暗号化の方法を指定します。

有効な値:

  • AES256:OSS が完全に管理するキーを使用して暗号化と復号を行います (SSE-OSS)。

  • KMS:KMS が管理するキーを使用して暗号化と復号を行います。

x-oss-object-acl

string

いいえ

private

オブジェクトのアクセス権限を指定します。

有効な値:

  • default (デフォルト):オブジェクトはバケットのアクセス権限を継承します。

  • private:オブジェクトは非公開リソースです。オブジェクト所有者と承認されたユーザーのみがオブジェクトに対する読み書き権限を持ちます。他のユーザーはオブジェクトにアクセスできません。

  • public-read:オブジェクトは公開読み取りリソースです。オブジェクト所有者と承認されたユーザーのみがオブジェクトに対する読み書き権限を持ちます。他のユーザーは読み取り権限のみを持ちます。この権限は慎重に使用してください。

  • public-read-write:オブジェクトは公開読み書きリソースです。すべてのユーザーがオブジェクトに対する読み書き権限を持ちます。この権限は慎重に使用してください。

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

x-oss-storage-class

string

いいえ

Standard

オブジェクトのストレージクラスを指定します。

どのストレージクラスのバケットでも、オブジェクトをアップロードする際にこのパラメーターを指定すると、アップロードされたオブジェクトは指定されたストレージクラスに保存されます。たとえば、低頻度アクセスバケットにオブジェクトをアップロードする際に x-oss-storage-class を Standard に設定すると、オブジェクトは標準として保存されます。

有効な値:

  • Standard:標準

  • IA:低頻度アクセス

  • Archive:アーカイブストレージ

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

重要
  • このリクエストヘッダーは、最初の追加操作でのみ有効です。後続の追加操作では有効になりません。

  • 追加可能タイプのオブジェクトは、いかなる方法でもコールドアーカイブまたはディープコールドアーカイブストレージクラスに変換することはできません。

x-oss-meta-*

string

いいえ

x-oss-meta-location

追加可能オブジェクトを作成する際に x-oss-meta-* を追加できます。後続の追加操作にこのパラメーターを含めることはできません。x-oss-meta-* プレフィックスで始まるパラメーターを設定すると、そのパラメーターはメタデータとして扱われます。

メタデータのサイズ制限:1 つのオブジェクトに複数のメタデータレコードを持つことができますが、すべてのメタデータの合計サイズは 8 KB を超えることはできません。

メタデータの命名規則:メタデータ名には、ハイフン (-)、数字、小文字 (a-z) を含めることができます。大文字は小文字に変換されます。アンダースコア (_) を含む他の文字はサポートされていません。

x-oss-tagging

string

いいえ

TagA=A

オブジェクトのタグをキーと値のペア形式で指定します。複数のタグを同時に指定できます。例:TagA=A&TagB=B

重要
  • このリクエストヘッダーは、最初の追加操作でのみ有効です。後続の追加操作では有効になりません。

  • キーと値は URL エンコードする必要があります。キーは必須ですが、値はオプションです。たとえば、オブジェクトタグを TagA&TagB=B に設定できます。

この操作の他の共通リクエストヘッダーの詳細については、「共通リクエストヘッダー」をご参照ください。

リクエストパラメーター

重要

append および position パラメーターは CanonicalizedResource の一部であり、署名に含める必要があります。

名前

タイプ

必須

説明

append

string

はい

該当なし

AppendObject 操作を指定します。各 AppendObject 操作は、オブジェクトの最終更新日時を更新します。

position

string

はい

0

データの追加を開始する位置を指定します。各操作が成功した後、x-oss-next-append-position レスポンスヘッダーが次の追加の位置を示します。

最初の追加操作の位置は 0 である必要があります。後続の追加操作の位置は、オブジェクトの現在のサイズです。たとえば、最初の AppendObject リクエストの位置が 0 で、content-length が 65536 の場合、2 番目の AppendObject リクエストの位置は 65536 である必要があります。

  • 位置が 0 で、同じ名前のオブジェクトが存在しない場合、AppendObject リクエストは PutObject リクエストに似ています。これは、x-oss-server-side-encryption などのリクエストヘッダーを設定できることを意味します。有効な x-oss-server-side-encryption ヘッダーを追加すると、後続の AppendObject レスポンスにも x-oss-server-side-encryption ヘッダーが含まれます。後でメタデータを変更するには、CopyObject 操作を使用します。

  • 位置が正しく、サイズ 0 のコンテンツを既存の追加可能オブジェクトに追加しても、オブジェクトの状態は変わりません。

レスポンスヘッダー

レスポンスヘッダー

タイプ

説明

x-oss-next-append-position

64 ビット整数

1717

次のリクエストの位置。これはオブジェクトの現在のサイズです。

このヘッダーは、AppendObject 操作が成功した場合、または位置がオブジェクトサイズと一致しないために 409 エラーが発生した場合に返されます。

x-oss-hash-crc64ecma

64 ビット整数

3231342946509354535

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

この操作の他の共通レスポンスヘッダーの詳細については、「共通レスポンスヘッダー」をご参照ください。

CRC-64 の計算方法

次の方法を使用して計算を実行できます。

  • 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 を使用した計算

    import crcmod
    do_crc64 = crcmod.mkCrcFun(0x142F0E1EBA9EA3693, initCrc=0, xorOut=0xffffffffffffffff, rev=True)
    print(do_crc64(b"123456789"))

他の操作との関連性

他の操作

関連性の説明

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 リクエストへのレスポンスでは、追加可能オブジェクトの 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 
    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: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-disposition;content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e  
    [1717 バイトのオブジェクトデータ]

    レスポンス例

    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: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e

    レスポンス例

    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

この操作の SDK は、次の言語で利用できます。

ossutil コマンドラインインターフェイス

ossutil を使用してこの操作を実行するには、「append-object」コマンドをご参照ください。

エラーコード

エラーコード

HTTP ステータスコード

説明

ObjectNotAppendable

409

追加可能でないオブジェクトに対して AppendObject 操作が実行されました。

PositionNotEqualToLength

409

  • position の値がオブジェクトの現在の長さと一致しません。

    x-oss-next-append-position レスポンスヘッダーから次のリクエストの位置を取得し、リクエストを再試行できます。同時実行性の問題により、position を x-oss-next-append-position の値に設定しても、PositionNotEqualToLength エラーでリクエストが失敗する可能性があります。

  • position が 0 の場合、同じ名前の追加可能オブジェクトが存在しないか、同じ名前の追加可能オブジェクトの長さが 0 であれば、リクエストは成功します。それ以外の場合、position はオブジェクトの長さと一致しないと見なされ、このエラーコードが返されます。

InvalidArgument

400

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

FileImmutable

409

保護状態のバケット内のデータを削除または変更しようとすると、このエラーコードが返されます。

KmsServiceNotEnabled

403

KMS 暗号化アルゴリズムを使用する場合、コンソールで Key Management Service (KMS) が有効になっていません。