Kebijakan retensi tingkat objek (ObjectWorm) menyediakan retensi kepatuhan WORM (Write Once, Read Many) pada tingkat objek. Berbeda dengan kebijakan retensi tingkat bucket (BucketWorm), yang menerapkan kebijakan seragam ke semua objek dalam suatu bucket, ObjectWorm memungkinkan Anda menetapkan mode retensi dan tanggal retensi unik untuk setiap objek. Kemampuan ini sangat ideal untuk memenuhi persyaratan penyimpanan kepatuhan granular di industri seperti keuangan dan kesehatan.
Fitur ini saat ini hanya tersedia berdasarkan undangan. Untuk meminta akses, hubungi technical support.
Ikhtisar
Setelah Anda mengaktifkan ObjectWorm untuk suatu bucket, Anda dapat secara otomatis menerapkan kebijakan retensi default ke objek baru atau menetapkan kebijakan retensi terpisah untuk objek yang sudah ada. Kebijakan tingkat objek memiliki prioritas lebih tinggi daripada kebijakan default bucket.
Saat ini, hanya mode compliance yang didukung. Dalam mode compliance, tidak ada pengguna, termasuk root user, yang dapat menghapus atau menimpa versi objek yang dilindungi selama periode retensinya. Tanggal retensi hanya dapat diperpanjang, tidak dipersingkat.
BucketWorm vs. ObjectWorm
Item | BucketWorm | ObjectWorm |
Ruang lingkup perlindungan | Semua objek dalam bucket. | Objek individual. |
Metode konfigurasi | Sakelar tingkat bucket yang diterapkan secara seragam ke semua objek (baik yang sudah ada maupun baru) dalam bucket. | Objek baru mewarisi kebijakan default, tetapi Anda dapat mengonfigurasi kebijakan terpisah dengan prioritas lebih tinggi untuk objek individual. |
Waktu retensi | Periode relatif dalam hari, ditambahkan ke waktu modifikasi terakhir objek. | Tanggal retensi absolut, akurat hingga detik. |
Saling eksklusif | BucketWorm dan ObjectWorm saling eksklusif. | |
Prasyarat
Pengendalian versi harus diaktifkan pada bucket. Setelah ObjectWorm diaktifkan, Anda tidak dapat menonaktifkan pengendalian versi.
Kebijakan retensi tingkat bucket (BucketWorm) tidak boleh diaktifkan pada bucket. ObjectWorm dan BucketWorm saling eksklusif.
Aktifkan ObjectWorm dan konfigurasikan kebijakan retensi
Aktifkan kebijakan retensi tingkat objek pada bucket untuk mencegah objek tertentu dihapus atau ditimpa selama periode tertentu. Setelah fitur diaktifkan, Anda dapat mengonfigurasi kebijakan retensi terpisah untuk setiap objek baru atau yang sudah ada, sehingga memberikan fleksibilitas lebih besar.
Tindakan ini tidak dapat dibatalkan. Setelah Anda mengaktifkan ObjectWorm, Anda tidak dapat menonaktifkannya atau menonaktifkan pengendalian versi untuk bucket tersebut. Lanjutkan dengan hati-hati.
Konsol
Masuk ke Konsol OSS.
Di panel navigasi sebelah kiri, klik Buckets, lalu klik nama bucket target.
Di panel navigasi sebelah kiri, pilih Data Protection > Object-Level Retention Policy.
Klik Enable.
Dalam pengaturan kebijakan retensi default, konfigurasikan parameter berikut sesuai kebutuhan:
Not Set: Kebijakan retensi default tidak diterapkan. Objek yang diunggah ke bucket tidak dilindungi secara otomatis.
Compliance Mode: Dalam mode compliance, tidak ada pengguna, termasuk root user, yang dapat menghapus atau menimpa objek yang dilindungi selama periode retensi.
Retention Period: Masukkan durasi retensi dan pilih Days atau Year sebagai satuan.
Klik Save, lalu masukkan pesan konfirmasi di kotak dialog untuk menyelesaikan proses.
ossutil
Aktifkan kebijakan retensi tingkat objek untuk bucket examplebucket dan konfigurasikan kebijakan retensi default dalam mode compliance selama 1 hari.
Menggunakan file konfigurasi XML bernama object-worm-configuration.xml dengan konten berikut:
<?xml version="1.0" encoding="UTF-8"?>
<ObjectWormConfiguration>
<ObjectWormEnabled>Enabled</ObjectWormEnabled>
<Rule>
<DefaultRetention>
<Mode>COMPLIANCE</Mode>
<Days>1</Days>
</DefaultRetention>
</Rule>
</ObjectWormConfiguration>Contoh perintah:
ossutil api put-bucket-object-worm-configuration --bucket examplebucket --object-worm-configuration file://object-worm-configuration.xmlSDK
Contoh kode berikut menunjukkan cara mengaktifkan ObjectWorm dan mengonfigurasi kebijakan retensi default menggunakan SDK.
Python
import argparse
import alibabacloud_oss_v2 as oss
parser = argparse.ArgumentParser(description="put bucket object worm configuration sample")
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
parser.add_argument('--endpoint', help='The OSS endpoint. If not specified, the SDK determines the endpoint based on the region.')
parser.add_argument('--mode', help='The retention mode. Valid values: GOVERNANCE, COMPLIANCE', default='GOVERNANCE')
parser.add_argument('--days', help='Object-level retention policy days (max 36500)', type=int)
parser.add_argument('--years', help='Bucket object level retention policy years (max 100)', type=int)
def main():
args = parser.parse_args()
# Loading credentials from the environment variables
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Using the SDK's default configuration
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
cfg.region = args.region
if args.endpoint is not None:
cfg.endpoint = args.endpoint
client = oss.Client(cfg)
# Create a default retention rule
default_retention = oss.ObjectWormConfigurationRuleDefaultRetention(
mode=args.mode,
days=args.days,
# Specify either days or years, but not both.
# years=args.years,
)
# Create the rule
rule = oss.ObjectWormConfigurationRule(
default_retention=default_retention,
)
# Create the WORM configuration
config = oss.ObjectWormConfiguration(
object_worm_enabled='Enabled',
rule=rule,
)
result = client.put_bucket_object_worm_configuration(oss.PutBucketObjectWormConfigurationRequest(
bucket=args.bucket,
object_worm_configuration=config,
))
print(f'status code: {result.status_code},'
f' request id: {result.request_id},'
)
if __name__ == "__main__":
main()Go
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
var (
region string
bucketName string
)
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}
func main() {
flag.Parse()
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg)
request := &oss.PutBucketObjectWormConfigurationRequest{
Bucket: oss.Ptr(bucketName),
ObjectWormConfiguration: &oss.ObjectWormConfiguration{
ObjectWormEnabled: oss.Ptr("Enabled"),
Rule: &oss.ObjectWormRule{
DefaultRetention: &oss.ObjectWormDefaultRetention{
Mode: oss.Ptr("COMPLIANCE"),
Days: oss.Ptr(int32(1)),
},
},
},
}
result, err := client.PutBucketObjectWormConfiguration(context.TODO(), request)
if err != nil {
log.Fatalf("Failed to put bucket Object WORM configuration: %v", err)
}
log.Printf("Put bucket Object WORM configuration result: %#v\n", result)
}Java
import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.OSSClientBuilder;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider;
import com.aliyun.sdk.service.oss2.models.*;
public class PutBucketObjectWormConfigurationDemo {
public static void main(String[] args) {
CredentialsProvider provider = new EnvironmentVariableCredentialsProvider();
OSSClient client = OSSClient.newBuilder()
.credentialsProvider(provider)
.region("cn-hangzhou")
.build();
try {
ObjectWormConfigurationDefaultRetention defaultRetention = ObjectWormConfigurationDefaultRetention.newBuilder()
.mode("COMPLIANCE")
.days(1)
.build();
ObjectWormConfigurationRule rule = ObjectWormConfigurationRule.newBuilder()
.defaultRetention(defaultRetention)
.build();
ObjectWormConfiguration objectWormConfiguration = ObjectWormConfiguration.newBuilder()
.objectWormEnabled("Enabled")
.rule(rule)
.build();
PutBucketObjectWormConfigurationRequest request = PutBucketObjectWormConfigurationRequest.newBuilder()
.bucket("examplebucket")
.objectWormConfiguration(objectWormConfiguration)
.build();
PutBucketObjectWormConfigurationResult result = client.putBucketObjectWormConfiguration(request);
System.out.printf("Status code:%d, request id:%s%n",
result.statusCode(), result.requestId());
} catch (Exception e) {
System.out.printf("error: %s%n", e);
} finally {
client.close();
}
}
}API
Panggil operasi PutBucketObjectWormConfiguration untuk mengaktifkan ObjectWorm. Contoh badan permintaan berikut mengaktifkan ObjectWorm untuk bucket dan menetapkan kebijakan retensi default ke mode compliance dengan periode retensi 1 hari.
PUT /?objectWorm HTTP/1.1
Date: Thu, 17 Mar 2026 11:18:32 GMT
Content-Length: 188
Content-Type: application/xml
Content-MD5: B2M2Y8AsgTpgAmY7PhC****
Host: examplebucket.oss-cn-hangzhou.aliyuncs.com
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20260317/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d****
<?xml version="1.0" encoding="UTF-8"?>
<ObjectWormConfiguration>
<ObjectWormEnabled>Enabled</ObjectWormEnabled>
<Rule>
<DefaultRetention>
<Mode>COMPLIANCE</Mode>
<Days>1</Days>
</DefaultRetention>
</Rule>
</ObjectWormConfiguration>Konfigurasikan kebijakan retensi objek
Konfigurasikan kebijakan retensi terpisah, termasuk mode retensi dan tanggal retensi, untuk versi objek tertentu. Kebijakan tingkat objek memiliki prioritas lebih tinggi daripada kebijakan retensi default bucket.
Konsol
Anda dapat mengonfigurasi kebijakan retensi untuk objek yang sudah ada dari daftar file atau halaman detail file.
Masuk ke Konsol OSS.
Di panel navigasi sebelah kiri, klik Buckets, lalu klik nama bucket target.
Di panel navigasi sebelah kiri, klik Object Management, lalu temukan objek target.
Di sebelah kanan objek target, pilih .
Di panel pengaturan yang muncul, konfigurasikan Default Retention Mode dan Retention Period, lalu klik OK.
Dalam mode compliance, Anda hanya dapat memperpanjang periode retensi untuk objek yang sudah memiliki kebijakan retensi. Anda tidak dapat mempersingkatnya.
ossutil
Konfigurasikan kebijakan retensi dalam mode compliance untuk objek exampleobject di bucket examplebucket, dengan tanggal retensi 2026-12-31T00:00:00.000Z.
Menggunakan file konfigurasi XML bernama retention.xml dengan konten berikut:
<?xml version="1.0" encoding="UTF-8"?>
<Retention>
<Mode>COMPLIANCE</Mode>
<RetainUntilDate>2026-12-31T00:00:00.000Z</RetainUntilDate>
</Retention>Contoh perintah:
ossutil api put-object-retention --bucket examplebucket --key exampleobject --retention file://retention.xmlSDK
Contoh kode berikut menunjukkan cara mengonfigurasi kebijakan retensi untuk objek menggunakan SDK.
Python
import argparse
import alibabacloud_oss_v2 as oss
from datetime import datetime, timedelta, timezone
parser = argparse.ArgumentParser(description="put object retention sample")
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
parser.add_argument('--endpoint', help='The OSS endpoint. If not specified, the SDK determines the endpoint based on the region.')
parser.add_argument('--key', help='The object key.', required=True)
def main():
args = parser.parse_args()
# Loading credentials from the environment variables
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Using the SDK's default configuration
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
cfg.region = args.region
if args.endpoint is not None:
cfg.endpoint = args.endpoint
client = oss.Client(cfg)
# Calculate retain until date (1 day from now) in ISO 8601 format
# Use UTC time (recommended for OSS)
retain_until_date = datetime.now(timezone.utc) + timedelta(days=1)
retain_until_iso = retain_until_date.strftime('%Y-%m-%dT%H:%M:%S.000Z')
# Create retention configuration
retention_config = oss.Retention(
mode=oss.ObjectRetentionModeType.COMPLIANCE,
retain_until_date=retain_until_iso,
)
# Set object retention
result = client.put_object_retention(oss.PutObjectRetentionRequest(
bucket=args.bucket,
key=args.key,
retention=retention_config,
))
print(f'status code: {result.status_code},'
f' request id: {result.request_id}')
if __name__ == "__main__":
main()Go
package main
import (
"context"
"flag"
"log"
"time"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
var (
region string
bucketName string
objectName string
)
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
flag.StringVar(&objectName, "object", "", "The name of the object.")
}
func main() {
flag.Parse()
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
if len(objectName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, object name required")
}
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg)
date := time.Now().UTC().Add(5 * time.Hour).Format("2006-01-02T15:04:05.000Z")
putRequest := &oss.PutObjectRetentionRequest{
Bucket: oss.Ptr(bucketName),
Key: oss.Ptr(objectName),
Retention: &oss.ObjectWormRetention{
Mode: oss.Ptr("COMPLIANCE"),
RetainUntilDate: oss.Ptr(date),
},
}
putResult, err := client.PutObjectRetention(context.TODO(), putRequest)
if err != nil {
log.Fatalf("Failed to put object retention policy: %v", err)
}
log.Printf("Put object retention policy result: %#v\n", putResult)
}Java
import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.OSSClientBuilder;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider;
import com.aliyun.sdk.service.oss2.models.*;
public class PutObjectRetentionDemo {
public static void main(String[] args) {
CredentialsProvider provider = new EnvironmentVariableCredentialsProvider();
OSSClient client = OSSClient.newBuilder()
.credentialsProvider(provider)
.region("cn-hangzhou")
.build();
try {
Retention retention = Retention.newBuilder()
.mode("COMPLIANCE")
.retainUntilDate("2026-12-31T00:00:00.000Z")
.build();
PutObjectRetentionRequest request = PutObjectRetentionRequest.newBuilder()
.bucket("examplebucket")
.key("exampleobject")
.retention(retention)
.build();
PutObjectRetentionResult result = client.putObjectRetention(request);
System.out.printf("Status code:%d, request id:%s%n",
result.statusCode(), result.requestId());
} catch (Exception e) {
System.out.printf("error: %s%n", e);
} finally {
client.close();
}
}
}API
Panggil operasi PutObjectRetention untuk mengonfigurasi kebijakan retensi untuk objek. Kode berikut menyediakan contoh permintaan.
PUT /exampleobject?retention&versionId=CAEQNhiBgMDJgZCA0BYiIDc4MGZj**** HTTP/1.1
Date: Thu, 17 Mar 2026 11:18:32 GMT
Content-MD5: B2M2Y8AsgTpgAmY7PhC****
Content-Type: application/xml
Content-Length: 162
Host: examplebucket.oss-cn-hangzhou.aliyuncs.com
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20260317/cn-hangzhou/oss/aliyun_v4_request,Signature=****
<Retention>
<Mode>COMPLIANCE</Mode>
<RetainUntilDate>2026-10-11T00:00:00.000Z</RetainUntilDate>
</Retention>Konfigurasikan retensi saat upload
Anda dapat mengonfigurasi kebijakan retensi langsung di header permintaan saat mengupload objek. Hal ini menghilangkan kebutuhan panggilan terpisah ke operasi PutObjectRetention. Ini didukung untuk operasi PutObject, CopyObject, dan InitiateMultipartUpload.
Konsol
Masuk ke Konsol OSS dan buka halaman Object Management bucket target.
Klik Upload Object.
Di panel Upload, perluas Advanced Settings dan temukan pengaturan Default Retention Policy.
Pilih {policyType}, konfigurasikan Retention Mode dan Retention Period, lalu upload file tersebut.
CatatanJika Anda memilih {policyType}, objek yang diupload secara otomatis mewarisi kebijakan retensi default bucket.
ossutil
Saat mengupload file menggunakan perintah API-level put-object dari ossutil, gunakan parameter --object-worm-mode dan --object-worm-retain-until-date untuk menentukan kebijakan retensi.
ossutil api put-object --bucket examplebucket --key exampleobject --body file://localfile.txt --object-worm-mode COMPLIANCE --object-worm-retain-until-date 2026-10-11T00:00:00.000ZSDK
Contoh kode berikut menunjukkan cara mengonfigurasi kebijakan retensi saat memanggil operasi PutObject untuk mengupload objek.
import alibabacloud_oss_v2 as oss
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
cfg.region = 'cn-hangzhou'
client = oss.Client(cfg)
# Upload the object and set a retention policy: compliance mode, retain until October 11, 2026.
result = client.put_object(oss.PutObjectRequest(
bucket='examplebucket',
key='exampleobject',
body='Hello OSS',
object_worm_mode='COMPLIANCE',
object_worm_retain_until_date='2026-10-11T00:00:00.000Z',
))
print(f'status code: {result.status_code}')import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider;
import com.aliyun.sdk.service.oss2.models.*;
import com.aliyun.sdk.service.oss2.transport.BinaryData;
public class UploadWithRetention {
public static void main(String[] args) {
OSSClient client = OSSClient.newBuilder()
.credentialsProvider(new EnvironmentVariableCredentialsProvider())
.region("cn-hangzhou")
.build();
try {
// Upload the object and set a retention policy: compliance mode, retain until October 11, 2026.
PutObjectResult result = client.putObject(PutObjectRequest.newBuilder()
.bucket("examplebucket")
.key("exampleobject")
.body(BinaryData.fromString("Hello OSS"))
.header("x-oss-object-worm-mode", "COMPLIANCE")
.header("x-oss-object-worm-retain-until-date", "2026-10-11T00:00:00.000Z")
.build());
System.out.printf("status code: %d%n", result.statusCode());
} finally {
client.close();
}
}
}package main
import (
"context"
"fmt"
"strings"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func main() {
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion("cn-hangzhou")
client := oss.NewClient(cfg)
// Upload the object and set a retention policy: compliance mode, retain until October 11, 2026.
request := &oss.PutObjectRequest{
Bucket: oss.Ptr("examplebucket"),
Key: oss.Ptr("exampleobject"),
Body: strings.NewReader("Hello OSS"),
RequestCommon: oss.RequestCommon{
Headers: map[string]string{
"x-oss-object-worm-mode": "COMPLIANCE",
"x-oss-object-worm-retain-until-date": "2026-10-11T00:00:00.000Z",
},
},
}
_, err := client.PutObject(context.TODO(), request)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println("Object uploaded with retention successfully")
}API
Panggil operasi PutObject untuk mengupload objek dan mengonfigurasi kebijakan retensinya di header permintaan.
PUT /exampleobject HTTP/1.1
Host: examplebucket.oss-cn-hangzhou.aliyuncs.com
x-oss-object-worm-mode: COMPLIANCE
x-oss-object-worm-retain-until-date: 2026-10-11T00:00:00.000Z
Content-MD5: B2M2Y8AsgTpgAmY7PhC****
Authorization: SignatureValue
[Object Content]Catatan penggunaan
Batasan header: Saat ObjectWorm tidak diaktifkan untuk bucket, permintaan API tidak boleh berisi header berikut:
x-oss-bypass-governance-retentionataux-amz-bypass-governance-retention.Fitur tidak dapat dibatalkan: Setelah Anda mengaktifkan ObjectWorm untuk bucket, Anda tidak dapat menonaktifkannya. Evaluasi kebutuhan bisnis Anda dengan cermat sebelum mengaktifkan fitur ini.
Lingkup kebijakan default: Kebijakan retensi default hanya berlaku untuk objek baru yang diupload ke bucket, bukan untuk objek yang sudah ada. Untuk menetapkan kebijakan retensi untuk objek yang sudah ada, Anda harus memanggil operasi PutObjectRetention untuk mengonfigurasinya secara individual.
Prioritas kebijakan objek: Jika objek memiliki kebijakan retensinya sendiri, kebijakan tersebut memiliki prioritas lebih tinggi daripada kebijakan retensi default bucket.
Perpanjangan periode retensi: Dalam mode compliance, tanggal retensi yang sudah ada hanya dapat diperpanjang. Tidak dapat dipersingkat.
Penghapusan objek: Objek yang dilindungi tidak dapat dihapus selama periode retensinya.
Penanda hapus: ObjectWorm tidak melindungi delete markers, sehingga penanda tersebut dapat dibuat dan dihapus seperti biasa. Namun, Anda tidak dapat menghapus versi objek yang masih dalam periode retensinya.
Bagian: ObjectWorm tidak melindungi bagian (parts) yang dihasilkan dari unggah multi-bagian.
Replikasi data: Replikasi tidak menyalin pengaturan ObjectWorm objek. Objek tujuan mengikuti pengaturan ObjectWorm bucket tujuan, yang harus dikonfigurasi secara terpisah.
Manajemen siklus hidup: Saat ObjectWorm diaktifkan, aturan manajemen siklus hidup masih dapat memindahkan objek ke kelas penyimpanan lain. Namun, objek dalam periode retensinya tidak akan dihapus secara otomatis oleh aturan kedaluwarsa.
Pengiriman log: Hindari mengirimkan file log ke bucket yang telah mengaktifkan ObjectWorm. File log lama mungkin dikunci oleh kebijakan retensi dan tidak dapat dihapus secara otomatis, sehingga menyebabkan peningkatan biaya penyimpanan.
Append Object: Anda tidak dapat menggunakan operasi Append Object pada bucket dengan kebijakan retensi tingkat objek default karena operasi ini tidak mendukung pengaturan ObjectWorm.
ACL objek: Anda tidak dapat menetapkan ACL objek untuk objek yang sedang dalam periode retensi ObjectWorm-nya.