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 |
| この操作を呼び出して、既存のオブジェクトにオブジェクトを追加することでオブジェクトをアップロードできます。 |
| 既存のオブジェクトにオブジェクトを追加してアップロードする際に、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 | サーバー側暗号化の方法を指定します。 有効な値:
|
x-oss-object-acl | string | いいえ | private | オブジェクトのアクセス権限を指定します。 有効な値:
アクセス権限の詳細については、「オブジェクト ACL」をご参照ください。 |
x-oss-storage-class | string | いいえ | Standard | オブジェクトのストレージクラスを指定します。 どのストレージクラスのバケットでも、オブジェクトをアップロードする際にこのパラメーターを指定すると、アップロードされたオブジェクトは指定されたストレージクラスに保存されます。たとえば、低頻度アクセスバケットにオブジェクトをアップロードする際に x-oss-storage-class を Standard に設定すると、オブジェクトは標準として保存されます。 有効な値:
ストレージクラスの詳細については、「ストレージクラス」をご参照ください。 重要
|
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 | オブジェクトのタグをキーと値のペア形式で指定します。複数のタグを同時に指定できます。例: 重要
|
この操作の他の共通リクエストヘッダーの詳細については、「共通リクエストヘッダー」をご参照ください。
リクエストパラメーター
append および position パラメーターは CanonicalizedResource の一部であり、署名に含める必要があります。
名前 | タイプ | 必須 | 例 | 説明 |
append | string | はい | 該当なし | AppendObject 操作を指定します。各 AppendObject 操作は、オブジェクトの最終更新日時を更新します。 |
position | string | はい | 0 | データの追加を開始する位置を指定します。各操作が成功した後、x-oss-next-append-position レスポンスヘッダーが次の追加の位置を示します。 最初の追加操作の位置は 0 である必要があります。後続の追加操作の位置は、オブジェクトの現在のサイズです。たとえば、最初の AppendObject リクエストの位置が 0 で、content-length が 65536 の場合、2 番目の AppendObject リクエストの位置は 65536 である必要があります。
|
レスポンスヘッダー
レスポンスヘッダー | タイプ | 例 | 説明 |
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 操作を実行すると、追加可能オブジェクトは新しいオブジェクトで上書きされ、そのタイプは通常に変更されます。 | |
追加可能オブジェクトに対する HeadObject 操作は、x-oss-next-append-position、x-oss-hash-crc64ecma、および x-oss-object-type を返します。追加可能オブジェクトの x-oss-object-type は Appendable です。 | |
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 |
|
InvalidArgument | 400 | x-oss-storage-class や x-oss-object-acl などのパラメーターの値が無効です。 |
FileImmutable | 409 | 保護状態のバケット内のデータを削除または変更しようとすると、このエラーコードが返されます。 |
KmsServiceNotEnabled | 403 | KMS 暗号化アルゴリズムを使用する場合、コンソールで Key Management Service (KMS) が有効になっていません。 |