Veri ekleyerek bir nesne yükler. AppendObject ile oluşturulan nesneler Eklenebilir (Appendable) türündedir; PutObject ile yüklenen nesneler ise Normal türdedir.
Sürüm Oluşturma
Bir paket için sürüm oluşturma etkinleştirildiğinde veya askıya alındığında, Eklenebilir nesnelerin davranışıyla ilgili aşağıdaki hususlara dikkat edin:
-
Bir Eklenebilir nesneye yalnızca mevcut sürümüne veri ekleyebilirsiniz. OSS bu nesne için önceki sürümler oluşturmaz.
Mevcut sürüm üzerinde PutObject veya DeleteObject işlemi uygulamak, Eklenebilir nesneyi önceki bir sürüm olarak kaydeder. Nesneye artık veri eklenemez.
Normal nesneler veya silme işaretçileri gibi Eklenebilir olmayan nesnelerde AppendObject işlemi uygulanamaz.
Yeni bir Eklenebilir sürüm, yalnızca nesne mevcut değilse veya en son sürüm bir silme işaretçisiyse oluşturulabilir. Bu durumda
positionparametresini 0 olarak ayarlayın.
Sınırlamalar
Bir Eklenebilir nesnenin maksimum boyutu 5 GB'tır.
Bir bekletme ilkesi ile korunan nesnelerde AppendObject işlemini kullanamazsınız.
Eklenebilir nesneler, KMS üzerinden CMK Kimliği ile sunucu tarafı şifrelemeyi desteklemez.
Eklenebilir nesnelerin indirme performansı, Normal veya Çok Parçalı nesnelere kıyasla önemli ölçüde daha düşüktür. Bu durumun gereksinimlerinizi karşılayıp karşılamadığını değerlendirin.
İzinler
Varsayılan olarak bir Alibaba Cloud hesabı tam izinlere sahiptir. Bir Alibaba Cloud hesabı altındaki RAM kullanıcıları veya RAM rolleri varsayılan olarak herhangi bir izne sahip değildir. Alibaba Cloud hesabı veya hesap yöneticisi, işlem izinlerini RAM ilkeleri veya Paket İlkesi aracılığıyla vermelidir.
|
API |
Eylem |
Açıklama |
|
AppendObject |
|
Bu işlemi çağırarak, mevcut bir nesneye ekleyerek bir nesne yükleyebilirsiniz. |
|
|
Mevcut bir nesneye ekleyerek nesne yüklerken, x-oss-tagging aracılığıyla nesne etiketleri belirtiyorsanız bu izin gerekir. |
İstek sözdizimi
POST /ObjectName?append&position=Position HTTP/1.1
Content-Length: ContentLength
Content-Type: ContentType
Host: BucketName.oss.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue
İstek üst bilgileri
|
Ad |
Tür |
Gerekli |
Örnek |
Açıklama |
|
Cache-control |
string |
Hayır |
no-cache |
Nesne için web sayfası önbelleğe alma davranışı. RFC2616 içinde tanımlanmıştır. Varsayılan: yok |
|
Content-Disposition |
string |
Hayır |
attachment;filename=oss_download.jpg |
İndirildiğinde nesnenin adı. RFC2616 içinde tanımlanmıştır. Varsayılan: yok |
|
Content-MD5 |
string |
Hayır |
ohhnqLBJFiKkPSBO1eNaUA== |
Mesaj gövdesinin bütünlüğünü doğrulamak için kullanılan Base64 kodlamalı MD5 karma değeri. Mesaj gövdesinin (üst bilgiler hariç) MD5 karmasını hesaplayarak 128 bitlik bir değer üretin ve ardından bunu Base64 ile kodlayın. Varsayılan: yok Kısıtlamalar: yok |
|
Expires |
string |
Hayır |
Wed, 08 Jul 2015 16:57:01 GMT |
Son kullanma zamanı. RFC2616 içinde tanımlanmıştır. Varsayılan: yok |
|
x-oss-server-side-encryption |
string |
Hayır |
AES256 |
Sunucu tarafı şifreleme yöntemi. Geçerli değerler:
|
|
x-oss-object-acl |
string |
Hayır |
private |
Nesnenin Erişim Kontrol Listesi (ACL). Geçerli değerler:
Erişim izinleri Nesne ACL bölümünde açıklanmıştır. |
|
x-oss-storage-class |
string |
Hayır |
Standard |
Nesnenin depolama sınıfı. Belirtildiğinde, nesne paketin depolama sınıfından bağımsız olarak bu sınıfta depolanır. Örneğin, Seyrek Erişimli (IA) bir pakette x-oss-storage-class değerini Standard olarak ayarlamak, nesnenin Standard olarak depolanmasını sağlar. Geçerli değerler:
Ayrıntılar için bkz. Depolama sınıfları. Önemli
|
|
x-oss-meta-* |
string |
Hayır |
x-oss-meta-location |
Özel meta veri üst bilgileri. Yalnızca ilk ekleme işlemi için geçerlidir. x-oss-meta-* ön ekiyle başlayan parametreler nesne meta verisi olarak depolanır. Boyut sınırı: Toplam meta veri 8 KB'yi aşamaz. Adlandırma kuralları: Yalnızca tire (-), rakamlar ve küçük harfler (a-z) kullanılabilir. Büyük harfler küçük harfe dönüştürülür. Alt çizgi (_) desteklenmez. |
|
x-oss-tagging |
string |
Hayır |
TagA=A |
Anahtar-değer biçiminde nesne etiketleri. Birden çok etiket ampersan (&) ile ayrılır, örneğin Önemli
|
Bu işlem ayrıca Ortak istek üst bilgilerini da destekler.
İstek parametreleri
append ve position parametreleri CanonicalizedResource öğesinin bir parçasıdır ve imzaya dahil edilmelidir.
|
Ad |
Tür |
Gerekli |
Örnek |
Açıklama |
|
append |
string |
Evet |
Uygulanamaz |
Bir AppendObject işlemini gösterir. Her çağrı, nesnenin son değiştirilme zamanını günceller. |
|
position |
string |
Evet |
0 |
Veri eklemeye başlanacak bayt ofseti. Her başarılı işlemden sonra x-oss-next-append-position bir sonraki konumu belirtir. İlk ekleme işlemi için position değeri 0 olarak ayarlanmalıdır. Sonraki eklemeler için position değeri mevcut nesne boyutuna eşit olmalıdır. Örneğin, ilk ekleme işleminin content-length değeri 65536 ise, ikinci ekleme işleminde position değeri 65536 olarak ayarlanmalıdır.
|
Yanıt üst bilgileri
|
|
|
|
|
|
|
|
|
Bir sonraki ekleme konumu; mevcut nesne boyutuna eşittir. Başarı durumunda veya konum uyuşmazlığı nedeniyle 409 hatası oluştuğunda döndürülür. |
|
|
|
|
|
Bu işlem ayrıca Ortak yanıt üst bilgilerini da destekler.
CRC-64 hesaplama
Desteklenen hesaplama yöntemleri:
-
Boost CRC modülü kullanılarak hesaplama
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 kullanılarak hesaplama
import crcmod do_crc64 = crcmod.mkCrcFun(0x142F0E1EBA9EA3693, initCrc=0, xorOut=0xffffffffffffffff, rev=True) print(do_crc64(b"123456789"))
İlgili işlemler
|
|
|
|
|
|
|
|
|
|
|
Örnekler
-
İstek örneği
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]Yanıt örneği
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**** -
Sürüm oluşturma istek örneği
Sürüm oluşturma etkinleştirildiğinde, AppendObject yanıtı mevcut nesnenin sürüm kimliğini belirten x-oss-version-id üst bilgisini içerir.
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=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218eYanıt örneği
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'ler
Bu işlem için SDK'ler:
ossutil komut satırı arayüzü
ossutil içindeki append-object komutunu kullanın.
Hata kodları
|
Hata kodu |
HTTP durum kodu |
Açıklama |
|
ObjectNotAppendable |
409 |
AppendObject, Eklenebilir olmayan bir nesne üzerinde çağrıldı. |
|
PositionNotEqualToLength |
409 |
|
|
InvalidArgument |
400 |
x-oss-storage-class ve x-oss-object-acl gibi parametrelerin değerleri geçersiz. |
|
FileImmutable |
409 |
Paket korumalı bir durumda ve silme veya değiştirmeye izin vermiyor. |
|
KmsServiceNotEnabled |
403 |
KMS şifrelemesi belirtildi ancak konsolda Key Management Service (KMS) etkinleştirilmedi. |