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

Object Storage Service:AppendObject

最終更新日:Apr 01, 2026

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

バージョン管理

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

  • データを追加できるのは、追加可能オブジェクトのカレントバージョンのみです。この操作中、OSS はオブジェクトの旧バージョンを作成しません。

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

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

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

注意事項

  • AppendObject 操作で作成されるオブジェクトのサイズは 5 GB を超えることはできません。

  • AppendObject 操作は、バケットレベルの保持ポリシーで保護されているオブジェクトではサポートされていません。

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

  • 追加可能オブジェクトのダウンロードパフォーマンスは、標準オブジェクトやマルチパートアップロードでアップロードされたオブジェクトよりも大幅に低くなります。追加可能オブジェクトを使用する前に、ビジネス要件を評価してください。

  • バケットでオブジェクトレベルの保持ポリシーが有効になっている場合、AppendObject 操作を使用してオブジェクトをアップロードすることはできません。

権限

デフォルトでは、Alibaba Cloud アカウント (root ユーザー) は完全な権限を持っています。Alibaba Cloud アカウント (root ユーザー) 配下の RAM ユーザーまたは RAM ロールは、デフォルトでは何の権限も持っていません。Alibaba Cloud アカウント (root ユーザー) またはアカウント管理者は、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

Web ブラウザーとプロキシによるオブジェクトのキャッシュ方法を指定します。詳細については、RFC2616 をご参照ください。

デフォルト値:none

Content-Disposition

String

いいえ

attachment;filename=oss_download.jpg

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

デフォルト値:none

Content-MD5

String

いいえ

ohhnqLBJFiKkPSBO1eNaUA==

Content-MD5 ヘッダーは、MD5 アルゴリズムを使用して生成される値です。このヘッダーは、メッセージ本文の整合性をチェックするために使用されます。

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

デフォルト値:none

制約:none

Expires

String

いいえ

Wed, 08 Jul 2015 16:57:01 GMT

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

デフォルト値:none

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

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

オブジェクトのアップロード時にこのヘッダーを指定すると、バケットのデフォルトのストレージクラスに関係なく、オブジェクトは指定されたストレージクラスに格納されます。たとえば、低頻度アクセス (IA) バケットにオブジェクトをアップロードする際に x-oss-storage-class を Standard に設定すると、オブジェクトは標準ストレージクラスに格納されます。

有効な値:

  • Standard:標準

  • IA:低頻度アクセス (IA)

  • Archive:アーカイブ

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

重要
  • このヘッダーは、オブジェクトの最初の追加操作にのみ適用されます。

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

x-oss-meta-*

String

いいえ

x-oss-meta-location

このヘッダーは、追加可能オブジェクトを作成するときにのみ追加でき、後続の追加リクエストでは追加できません。x-oss-meta-* プレフィックスを持つヘッダーは、オブジェクトメタデータと見なされます。

すべてのオブジェクトメタデータの合計サイズは 8 KB を超えることはできません。

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

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 リクエストの position の値が 0 で、content-length が 65536 の場合、2 番目の AppendObject リクエストの position の値は 65536 である必要があります。

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

  • position の値が有効な場合、既存の追加可能オブジェクトに 0 バイトのデータを追加しても、オブジェクトの状態は変わりません。

レスポンスヘッダー

レスポンスヘッダー

タイプ

説明

x-oss-next-append-position

64 ビット整数

1717

次の追加操作の位置。これはオブジェクトの現在のサイズです。

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

x-oss-hash-crc64ecma

64 ビット整数

3231342946509354535

ECMA-182 標準に基づいて計算された、オブジェクトの 64 ビット巡回冗長検査 (CRC) 値を示します。

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

CRC-64 の計算方法

次の方法を使用して 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 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: 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 で利用できます。

CLI (ossutil)

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

エラーコード

エラーコード

HTTP ステータスコード

説明

ObjectNotAppendable

409

追加可能でないオブジェクトに追加しようとしました。

PositionNotEqualToLength

409

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

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

  • position が 0 の場合、同じ名前のオブジェクトが存在しないか、長さが 0 の場合にのみリクエストは成功します。それ以外の場合、このエラーが返されます。

InvalidArgument

400

x-oss-storage-classx-oss-object-acl などのパラメーターに指定された値が無効です。

FileImmutable

409

保持ポリシーで保護されているバケット内のデータを変更しようとすると、このエラーが返されます。

KmsServiceNotEnabled

403

KMS 暗号化アルゴリズムを使用しようとしたときに、Key Management Service (KMS) が有効になっていない場合にこのエラーが発生します。