オブジェクトを既存のオブジェクトに追加してアップロードします。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サーバー上のオブジェクトを暗号化するために使用されるメソッド。 有効な値:
|
x-oss-object-acl | String | 任意 | 非公開 | オブジェクトのアクセス制御リスト (ACL) 。 有効な値:
詳細については、「オブジェクトACL」をご参照ください。 |
x-oss-storage-class | String | 任意 | 標準 | オブジェクトのストレージクラス。 オブジェクトをアップロードするときにx-oss-storage-classヘッダーを指定した場合、オブジェクトがアップロードされるバケットのストレージクラスに関係なく、アップロードされたオブジェクトのストレージクラスは指定された値になります。 たとえば、低頻度アクセス (IA) バケットにオブジェクトをアップロードするときにx-oss-storage-classヘッダーを標準に設定すると、オブジェクトは標準オブジェクトとして保存されます。 有効な値:
ストレージクラスの詳細については、「概要」をご参照ください。 重要
|
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 | キーと値のペアでオブジェクトに指定されているタグ。 オブジェクトに複数のタグを指定できます。 例: 重要
|
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に設定する必要があります。
|
レスポンスヘッダー
ヘッダー | タイプ | 例 | 説明 |
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操作を呼び出すと、追加可能オブジェクトは通常のオブジェクトに変換されます。 | |
既存の追加可能オブジェクトに対してHeadObject操作を呼び出すと、x-oss-next-append-position、x-oss-hash-crc64ecma、およびx-oss-object-typeヘッダーが返されます。 追加可能なオブジェクトのx-oss-object-typeの値はappendableです。 | |
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 |
|
InvalidArgument | 400 | x-oss-storage-classやx-oss-object-aclなどのパラメーターの値が無効です。 |
FileImmutable | 409 | 削除または変更するデータは、保持ポリシーによって保護されます。 |
KmsServiceNotEnabled | 403 | サーバー側の暗号化方式としてKMSが指定されていますが、コンソールではKMSはアクティブ化されません。 |