Anda dapat menggunakan aturan siklus hidup berdasarkan waktu akses terakhir (LastAccessTime) untuk memantau pola akses data secara otomatis, mengidentifikasi data dingin, lalu memindahkannya ke kelas penyimpanan yang sesuai. Proses ini memungkinkan tiering penyimpanan otomatis dan membantu mengurangi biaya penyimpanan.
Skenario
Multimedia
Sebuah situs web menyimpan video dan gambar di Object Storage Service (OSS). Seiring waktu, data historis menjadi dingin. Anda mungkin perlu memindahkan data yang tidak diakses dalam jangka waktu lama ke kelas penyimpanan Infrequent Access (IA). Namun, beberapa data lama mungkin tetap populer dan harus tetap berada di kelas penyimpanan Standard. Dalam skenario ini, Anda dapat menggunakan aturan siklus hidup berdasarkan waktu akses terakhir untuk secara otomatis mengidentifikasi data panas dan dingin guna melakukan tiering penyimpanan, sehingga membantu mengurangi biaya penyimpanan.
Album foto atau cloud drive
Anda dapat memindahkan data dingin yang tidak diakses selama jumlah hari tertentu ke kelas penyimpanan IA. Proses ini secara otomatis memindahkan data sekaligus memastikan akses real-time.
Ilmu hayat
Sekuensing gen menghasilkan sejumlah besar data bisnis. Anda sering perlu menentukan apakah data tersebut panas atau dingin berdasarkan waktu akses terakhirnya, bukan waktu modifikasi terakhirnya. Sebelumnya, Anda harus mengelola tiering data secara manual melalui analisis log atau metode lainnya. Kini, Anda dapat menggunakan aturan siklus hidup berdasarkan waktu akses terakhir untuk secara otomatis mengidentifikasi data panas dan dingin serta melakukan tiering sesuai kebutuhan. Anda juga dapat menggabungkan kebijakan berdasarkan waktu akses terakhir dan waktu modifikasi terakhir dalam satu aturan siklus hidup yang sama guna manajemen data yang lebih fleksibel.
Batasan
Penghapusan data yang tidak didukung
Anda tidak dapat menggunakan aturan siklus hidup berdasarkan waktu akses terakhir untuk menghapus data.
Kondisi pencocokan
Aturan siklus hidup hanya mendukung pencocokan berdasarkan awalan dan tag. Pencocokan wildcard, pencocokan akhiran, dan pencocokan ekspresi reguler tidak didukung.
Batasan kedaluwarsa part
Anda tidak dapat mengonfigurasi dua aturan siklus hidup atau lebih yang berisi kebijakan siklus hidup part untuk objek yang namanya memiliki awalan tumpang tindih. Contoh:
Contoh 1
Jika Anda mengonfigurasi aturan siklus hidup yang berisi kebijakan part untuk sebuah bucket, Anda tidak dapat mengonfigurasi aturan siklus hidup lain yang berisi kebijakan part untuk objek apa pun di dalam bucket tersebut.
Contoh 2
Jika Anda mengonfigurasi aturan siklus hidup yang berisi kebijakan part untuk objek yang namanya mengandung awalan dir1 di dalam sebuah bucket, Anda tidak dapat mengonfigurasi aturan siklus hidup lain yang berisi kebijakan part untuk objek yang namanya mengandung awalan tumpang tindih, seperti dir1/dir2.
Catatan
Jumlah aturan
Sebuah bucket dapat memiliki hingga 1.000 aturan siklus hidup. Satu aturan siklus hidup dapat mencakup kebijakan berdasarkan waktu modifikasi terakhir dan kebijakan berdasarkan waktu akses terakhir.
Penagihan
Biaya manajemen pemantauan objek
Mengaktifkan pelacakan akses akan dikenai biaya manajemen pemantauan objek. Namun, OSS saat ini tidak membebankan biaya tersebut.
Biaya untuk objek IA yang disimpan kurang dari durasi minimum
Objek IA memiliki durasi penyimpanan minimum 30 hari. Jika suatu objek disimpan kurang dari durasi minimum ini, Anda akan dikenai biaya untuk sisa waktu tersebut. Contoh berikut menunjukkan cara menghitung biaya ini untuk aturan siklus hidup:
Contoh 1: Objek Standard dipindahkan ke kelas penyimpanan IA 10 hari setelah pembuatannya. Objek tersebut dipindahkan kembali ke kelas penyimpanan Standard 5 hari kemudian. Dalam kasus ini, biaya dikenakan untuk sisa 15 hari dari durasi penyimpanan minimum.
Contoh 2: Objek Standard dipindahkan ke kelas penyimpanan IA 10 hari setelah pembuatannya. Objek tersebut dihapus 15 hari kemudian. Dalam kasus ini, biaya dikenakan untuk sisa 5 hari dari durasi penyimpanan minimum.
Untuk informasi lebih lanjut, lihat Biaya penyimpanan.
Biaya pengambilan data untuk Infrequent Access
Biaya pengambilan data untuk kelas penyimpanan IA didasarkan pada volume data yang diambil. Untuk informasi lebih lanjut, lihat Biaya pemrosesan data.
Biaya permintaan
Biaya permintaan dikenakan ketika Anda menggunakan aturan siklus hidup untuk mengubah kelas penyimpanan suatu objek. Untuk informasi lebih lanjut, lihat Biaya permintaan.
Semantik penimpaan
Operasi PutBucketLifecycle menimpa konfigurasi aturan siklus hidup bucket yang ada. Misalnya, jika aturan siklus hidup bernama Rule1 telah dikonfigurasi untuk sebuah bucket dan Anda ingin menambahkan aturan siklus hidup lain bernama Rule2, lakukan langkah-langkah berikut:
Panggil operasi GetBucketLifecycle untuk mengkueri Rule1.
Tambahkan Rule1 dan Rule2 ke konfigurasi aturan siklus hidup.
Panggil operasi PutBucketLifecycle untuk menerapkan Rule1 dan Rule2 pada bucket tersebut.
Waktu berlaku
OSS memuat aturan siklus hidup baru dalam waktu 24 jam setelah dibuat. Setelah dimuat, OSS mulai mengeksekusinya setiap hari pukul 08.00 (UTC+8).
Waktu penyelesaian eksekusi
Setelah aturan siklus hidup berlaku, operasi seperti penghapusan objek, transisi kelas penyimpanan, dan kedaluwarsa part biasanya selesai dalam waktu 24 jam. Namun, ambang batas jumlah objek bervariasi berdasarkan wilayah. Di wilayah China (Hangzhou), China (Shanghai), China (Beijing), China (Zhangjiakou), China (Ulanqab), China (Shenzhen), dan Singapura, hal ini berlaku untuk beban kerja hingga 1 miliar objek. Di semua wilayah lainnya, hal ini berlaku untuk beban kerja hingga 100 juta objek.
Dalam kondisi tertentu, eksekusi tugas dapat mengalami penundaan signifikan—melebihi 24 jam hingga beberapa hari atau minggu—biasanya disebabkan oleh beban kerja yang berat, seperti jumlah objek yang berlebihan untuk dipindai atau diproses, jumlah tag yang tinggi, banyaknya versi objek, atau volume penulisan baru yang tinggi selama eksekusi tugas.
Kebijakan pembaruan waktu akses terakhir
Setelah Anda mengaktifkan pelacakan akses, OSS memperbarui waktu akses terakhir (LastAccessTime) suatu objek berdasarkan aturan berikut:
Inisialisasi: Saat pelacakan akses diaktifkan, LastAccessTime semua objek di dalam bucket diatur ke waktu saat pelacakan akses diaktifkan.
Aturan pembaruan: Selanjutnya, operasi seperti mengunduh atau menimpa objek akan memperbarui
LastAccessTimeobjek tersebut. Untuk informasi lebih lanjut tentang operasi spesifik yang memperbaruiLastAccessTimeobjek, lihat Dampak operasi umum terhadap LastAccessTime objek.Mekanisme pembaruan:
LastAccessTimediperbarui secara asinkron, biasanya dalam waktu 24 jam.Jika objek yang sama diakses beberapa kali dalam waktu 24 jam, OSS mencatat waktu permintaan akses pertama sebagai
LastAccessTimeobjek tersebut. Akses berikutnya dalam periode 24 jam tidak memicu pembaruan.
Jenis objek yang ditransisikan
Aturan siklus hidup berdasarkan waktu akses terakhir mendukung transisi objek dari kelas penyimpanan Standard ke kelas penyimpanan IA. Anda juga dapat memilih apakah akan secara otomatis memindahkan objek kembali ke kelas penyimpanan Standard saat diakses.
Aturan siklus hidup berdasarkan waktu akses terakhir mendukung transisi objek dari kelas penyimpanan Standard atau IA ke kelas penyimpanan Archive, Cold Archive, atau Deep Cold Archive. Anda juga dapat memindahkan objek dari kelas penyimpanan Archive ke kelas penyimpanan Cold Archive atau Deep Cold Archive. Untuk memindahkan objek dari kelas penyimpanan Standard atau IA ke kelas penyimpanan Archive, Cold Archive, atau Deep Cold Archive, submit a ticket untuk meminta izin. Setelah permintaan Anda disetujui, Anda harus menentukan kelas penyimpanan tujuan.
PentingSetelah tiket Anda disetujui, jika Anda menggunakan kebijakan berdasarkan waktu akses terakhir untuk memindahkan objek dari kelas penyimpanan Standard atau IA ke kelas penyimpanan Archive, Cold Archive, atau Deep Cold Archive, waktu akses terakhir objek tersebut secara default diatur ke waktu saat pelacakan akses diaktifkan untuk bucket tersebut.
Konfigurasi aturan siklus hidup di bucket dengan OSS-HDFS diaktifkan
Untuk mengonfigurasi atau memodifikasi aturan siklus hidup berdasarkan waktu akses terakhir agar berlaku untuk semua objek di bucket tempat OSS-HDFS diaktifkan, gunakan elemen NOT untuk mengecualikan objek yang disimpan di direktori .dlsdata/. Hal ini mencegah tindakan penghapusan objek atau konversi kelas penyimpanan yang dipicu oleh aturan siklus hidup diterapkan pada data OSS-HDFS dan akibatnya memengaruhi operasi baca dan tulis pada data tersebut.

Panduan
Gunakan Konsol OSS
Masuk ke Konsol OSS.
Di panel navigasi sebelah kiri, klik Buckets. Di halaman Buckets, temukan dan klik bucket yang diinginkan.
Di panel navigasi sebelah kiri, pilih Data Management > Lifecycle.
Di halaman Lifecycle, aktifkan sakelar Enable Access Tracking, lalu klik Create Rule.
Di panel Create Lifecycle Rule, konfigurasikan aturan siklus hidup seperti yang dijelaskan dalam tabel berikut.
Versi bucket tidak diaktifkan.
Area
Item Konfigurasi
Deskripsi
Basic Settings
Status
Atur status aturan siklus hidup. Nilai yang valid: Enable dan Disable.
Jika Anda mengaktifkan aturan siklus hidup, kelas penyimpanan data akan ditransisikan berdasarkan aturan tersebut.
Jika Anda menonaktifkan aturan siklus hidup, tugas siklus hidup akan dihentikan.
Applied To
Pilih objek yang akan diterapkan aturan siklus hidup. Anda dapat memilih Match By Prefix atau Whole Bucket.
Allow Overlapped Prefixes
Secara default, OSS memeriksa apakah awalan dari aturan siklus hidup yang berbeda tumpang tindih. Misalnya, Anda menetapkan dua aturan siklus hidup berikut dengan awalan tumpang tindih:
Rule 1
Menentukan bahwa semua objek dengan awalan dir1/ di dalam bucket ditransisikan ke kelas penyimpanan IA 180 hari setelah terakhir diakses.
Rule 2
Menentukan bahwa semua objek dengan awalan dir1/dir2/ di dalam bucket ditransisikan ke kelas penyimpanan Archive Storage 30 hari setelah terakhir diakses.
Jika opsi ini tidak dipilih, OSS menolak kedua aturan siklus hidup karena mendeteksi bahwa objek di direktori dir1/dir2/ cocok dengan kedua aturan transisi.
Jika opsi ini dipilih, objek di direktori dir1/dir2/ ditransisikan ke kelas penyimpanan Archive Storage setelah 30 hari. Objek lain di direktori dir1/ ditransisikan ke kelas penyimpanan IA setelah 180 hari.
Prefix
Masukkan awalan nama objek yang harus dicocokkan oleh aturan.
Jika Anda mengatur Prefix ke img, aturan tersebut cocok dengan semua objek yang namanya dimulai dengan img, seperti imgtest.png dan img/example.jpg.
Jika Anda mengatur Prefix ke img/, aturan tersebut cocok dengan semua objek yang namanya dimulai dengan img/, seperti img/example.jpg dan img/test.jpg.
Tag
Aturan siklus hidup hanya berlaku untuk objek dengan tag tertentu. Misalnya, jika Anda memilih Match By Prefix, mengatur awalan ke img, dan mengatur kunci tag ke a serta nilai ke 1, aturan tersebut cocok dengan semua objek yang namanya dimulai dengan img dan memiliki tag a=1. Untuk informasi lebih lanjut tentang tag objek, lihat Object tagging.
NOT
Gunakan opsi NOT untuk mencegah aturan siklus hidup diterapkan pada objek dengan awalan dan tag tertentu.
PentingSaat Anda mengaktifkan opsi NOT, Anda harus menentukan setidaknya awalan atau tag. Anda dapat menentukan keduanya (awalan dan tag), atau hanya awalan atau tag saja.
Kunci tag yang didefinisikan dalam semantik NOT tidak boleh sama dengan kunci yang didefinisikan dalam item konfigurasi Tag.
Jika Anda mengaktifkan opsi NOT, Anda tidak dapat mengatur kebijakan kedaluwarsa part.
Object Size
Tentukan ukuran file yang akan diterapkan aturan siklus hidup.
Minimum Size: Aturan siklus hidup berlaku untuk file yang lebih besar dari nilai ini. Nilainya harus lebih besar dari 0 B dan kurang dari 5 TB.
Maximum Size: Aturan siklus hidup berlaku untuk file yang lebih kecil dari nilai ini. Nilainya harus lebih besar dari 0 B dan kurang dari atau sama dengan 5 TB.
PentingJika Anda menentukan ukuran file minimum dan maksimum dalam aturan siklus hidup yang sama:
Pastikan ukuran file maksimum lebih besar dari ukuran file minimum.
Anda tidak dapat mengonfigurasi kebijakan eksekusi part.
Anda tidak dapat mengonfigurasi kebijakan untuk menghapus delete marker.
Policy for Objects
Object Lifecycle
Pilih kebijakan kedaluwarsa untuk objek. Nilai yang valid: Specify Days, Specify Date, dan Disabled. Jika Anda memilih Disabled, kebijakan kedaluwarsa file tidak berlaku.
Lifecycle-based Rules
Konfigurasikan aturan untuk mentransisikan kelas penyimpanan objek. Data dapat ditransisikan ke kelas penyimpanan berikut:
Infrequent Access (data Remains In The IA Storage Class After Being Accessed)
Infrequent Access (data Is Transitioned Back To The Standard Storage Class After Being Accessed)
Archive Storage
Cold Archive
Deep Cold Archive
Sebagai contoh, jika Anda memilih kebijakan Last Access Time, mengatur Specify Days ke 30, dan menentukan bahwa data secara otomatis ditransisikan ke Infrequent Access (data Remains In The IA Storage Class After Being Accessed) setelah jumlah hari yang ditentukan, objek yang terakhir diakses pada 1 September 2021 akan ditransisikan ke kelas penyimpanan yang ditentukan pada 1 Oktober 2021.
Policy for Parts
Part Lifecycle
Tentukan tindakan yang akan dilakukan pada part yang kedaluwarsa. Jika Anda memilih Tag, Anda tidak dapat mengonfigurasi opsi ini. Anda dapat memilih Specify Days atau Specify Date untuk kebijakan kedaluwarsa part, atau Anda dapat memilih Disabled untuk menonaktifkan kebijakan kedaluwarsa part. Jika Anda memilih Disabled, kebijakan kedaluwarsa part tidak berlaku.
PentingAturan siklus hidup harus mencakup setidaknya kebijakan kedaluwarsa file atau kebijakan kedaluwarsa part.
Rules for Parts
Tentukan kapan part kedaluwarsa berdasarkan jumlah hari atau tanggal yang dipilih untuk kebijakan kedaluwarsa part. Part yang kedaluwarsa akan dihapus secara otomatis dan tidak dapat dipulihkan.
Versi diaktifkan pada bucket.
Jika versioning diaktifkan, item konfigurasi di area Basic Settings dan Policy for Parts sama seperti saat versioning dinonaktifkan. Tabel berikut hanya menjelaskan item konfigurasi yang berbeda saat versioning diaktifkan.
Area
Item Konfigurasi
Deskripsi
Policy for Current Versions
Clear Delete Markers
Jika versioning diaktifkan, opsi Clear Delete Markers ditambahkan ke kebijakan pembersihan. Opsi lainnya sama seperti saat versioning dinonaktifkan.
Jika Anda memilih opsi ini dan objek saat ini hanya memiliki satu versi yang merupakan penanda hapus, OSS akan menghapus penanda hapus objek yang kedaluwarsa tersebut. Jika objek saat ini memiliki beberapa versi dan versi terbaru adalah penanda hapus, OSS akan menyimpan penanda hapus tersebut. Untuk informasi lebih lanjut tentang penanda hapus, lihat Delete markers.
Policy for Previous Versions
Object Lifecycle
Tentukan kebijakan kedaluwarsa untuk versi sebelumnya dari file. Nilai yang valid: Specify Days dan Disabled. Jika Anda memilih Disabled, kebijakan kedaluwarsa file tidak berlaku.
Lifecycle-based Rules
Tentukan jumlah hari (N) setelah versi sebelumnya dari objek ditransisikan ke kelas penyimpanan yang berbeda. Misalnya, jika Anda mengatur nilainya ke 30, versi sebelumnya dari objek yang diakses pada 1 September 2021 akan ditransisikan ke kelas penyimpanan yang ditentukan pada 1 Oktober 2021.
Klik OK.
Setelah aturan siklus hidup disimpan, Anda dapat melihatnya di daftar kebijakan.
Gunakan Alibaba Cloud SDK
Hanya Java SDK dan Go SDK yang mendukung pembuatan aturan siklus hidup berdasarkan waktu akses terakhir. Sebelum membuat aturan tersebut, Anda harus mengaktifkan pelacakan akses untuk bucket yang ditentukan. Untuk contoh kode, lihat Ikhtisar SDK.
Java
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.util.ArrayList;
import java.util.List;
public class Demo {
public static void main(String[] args) throws Exception {
// Endpoint China (Hangzhou) digunakan sebagai contoh. Ganti dengan endpoint aktual.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan nama bucket, misalnya examplebucket.
String bucketName = "examplebucket";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou.
String region = "cn-hangzhou";
// Buat instance OSSClient.
// Setelah instance OSSClient tidak digunakan lagi, panggil metode shutdown untuk melepaskan sumber daya.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
ossClient.putBucketAccessMonitor(bucketName, AccessMonitor.AccessMonitorStatus.Enabled.toString());
// Tentukan aturan siklus hidup 1. Aturan ini menentukan bahwa semua objek yang memiliki awalan logs dan berukuran 64 KB atau lebih kecil ditransisikan ke kelas penyimpanan Infrequent Access 30 hari setelah waktu akses terakhirnya. Saat objek-objek ini diakses kembali, mereka tetap berada di kelas penyimpanan Infrequent Access.
LifecycleRule lifecycleRule = new LifecycleRule("rule1", "logs", LifecycleRule.RuleStatus.Enabled);
List<LifecycleRule> lifecycleRuleList = new ArrayList<LifecycleRule>();
SetBucketLifecycleRequest setBucketLifecycleRequest = new SetBucketLifecycleRequest(bucketName);
LifecycleRule.StorageTransition storageTransition = new LifecycleRule.StorageTransition();
storageTransition.setStorageClass(StorageClass.IA);
storageTransition.setExpirationDays(30);
storageTransition.setIsAccessTime(true);
storageTransition.setReturnToStdWhenVisit(false);
storageTransition.setAllowSmallFile(true);
List<LifecycleRule.StorageTransition> storageTransitionList = new ArrayList<LifecycleRule.StorageTransition>();
storageTransitionList.add(storageTransition);
lifecycleRule.setStorageTransition(storageTransitionList);
lifecycleRuleList.add(lifecycleRule);
// Tentukan aturan siklus hidup 2. Aturan ini menentukan bahwa semua versi non-saat ini dari objek yang memiliki awalan dir dan berukuran lebih besar dari 64 KB ditransisikan ke kelas penyimpanan Infrequent Access 10 hari setelah waktu akses terakhirnya. Saat objek-objek ini diakses kembali, mereka ditransisikan ke kelas penyimpanan Standard.
LifecycleRule lifecycleRule2 = new LifecycleRule("rule2", "dir", LifecycleRule.RuleStatus.Enabled);
LifecycleRule.NoncurrentVersionStorageTransition noncurrentVersionStorageTransition = new LifecycleRule.NoncurrentVersionStorageTransition();
noncurrentVersionStorageTransition.setStorageClass(StorageClass.IA);
noncurrentVersionStorageTransition.setNoncurrentDays(10);
noncurrentVersionStorageTransition.setIsAccessTime(true);
noncurrentVersionStorageTransition.setReturnToStdWhenVisit(true);
noncurrentVersionStorageTransition.setAllowSmallFile(false);
List<LifecycleRule.NoncurrentVersionStorageTransition> noncurrentVersionStorageTransitionList = new ArrayList<LifecycleRule.NoncurrentVersionStorageTransition>();
noncurrentVersionStorageTransitionList.add(noncurrentVersionStorageTransition);
lifecycleRule2.setNoncurrentVersionStorageTransitions(noncurrentVersionStorageTransitionList);
lifecycleRuleList.add(lifecycleRule2);
setBucketLifecycleRequest.setLifecycleRules(lifecycleRuleList);
// Tetapkan aturan siklus hidup.
ossClient.setBucketLifecycle(setBucketLifecycleRequest);
} catch (OSSException oe) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "but was rejected with an error response for some reason.");
System.out.println("Error Message:" + oe.getErrorMessage());
System.out.println("Error Code:" + oe.getErrorCode());
System.out.println("Request ID:" + oe.getRequestId());
System.out.println("Host ID:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ "such as not being able to access the network.");
System.out.println("Error Message:" + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}Python
import argparse
import datetime
import alibabacloud_oss_v2 as oss
# Buat parser argumen baris perintah untuk menerima parameter yang dimasukkan pengguna.
parser = argparse.ArgumentParser(description="put bucket lifecycle sample")
# Tambahkan argumen baris perintah --region, yang menentukan wilayah tempat bucket berada. Argumen ini wajib.
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
# Tambahkan argumen baris perintah --bucket, yang menentukan nama bucket. Argumen ini wajib.
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
# Tambahkan argumen baris perintah --endpoint, yang menentukan nama domain yang dapat digunakan layanan lain untuk mengakses OSS. Argumen ini opsional.
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
def main():
# Urai argumen baris perintah.
args = parser.parse_args()
# Muat kredensial (ID AccessKey dan rahasia AccessKey) dari variabel lingkungan.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Muat konfigurasi default SDK.
cfg = oss.config.load_default()
# Atur penyedia kredensial.
cfg.credentials_provider = credentials_provider
# Atur wilayah tempat bucket berada.
cfg.region = args.region
# Jika pengguna memberikan titik akhir kustom, atur dalam konfigurasi.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# Inisialisasi klien OSS menggunakan objek konfigurasi.
client = oss.Client(cfg)
result = client.put_bucket_lifecycle(oss.PutBucketLifecycleRequest(
bucket=args.bucket,
lifecycle_configuration=oss.LifecycleConfiguration(
rules=[oss.LifecycleRule(
# Dalam aturan siklus hidup rule1, semua objek yang memiliki awalan data/ dikonversi ke kelas penyimpanan Infrequent Access (IA) 200 hari setelah terakhir diakses. Saat objek-objek ini diakses kembali, mereka tetap berada di kelas IA.
id='rule1',
status='Enabled',
prefix='data/',
transitions=[oss.LifecycleRuleTransition(
days=200,
storage_class=oss.StorageClassType.IA,
is_access_time=True, # Atur ke true, yang menunjukkan bahwa kebijakan berdasarkan waktu akses terakhir.
return_to_std_when_visit=False
)],
), oss.LifecycleRule(
# Dalam aturan siklus hidup rule2, semua objek yang memiliki awalan log/ dikonversi ke kelas penyimpanan Infrequent Access (IA) 120 hari setelah terakhir diakses. Saat objek-objek ini diakses kembali, mereka tetap berada di kelas IA.
# Dalam aturan yang sama, semua objek yang memiliki awalan log/ dikonversi ke kelas penyimpanan Archive 250 hari setelah terakhir diakses.
id='rule2',
status='Enabled',
prefix='log/',
transitions=[oss.LifecycleRuleTransition(
days=120,
storage_class=oss.StorageClassType.IA,
is_access_time=True, # Atur ke true, yang menunjukkan bahwa kebijakan berdasarkan waktu akses terakhir.
return_to_std_when_visit=False
), oss.LifecycleRuleTransition(
days=250,
storage_class=oss.StorageClassType.ARCHIVE,
is_access_time=True, # Atur ke true, yang menunjukkan bahwa kebijakan berdasarkan waktu akses terakhir.
return_to_std_when_visit=False
)],
)]
),
))
# Cetak kode status dan ID permintaan operasi.
print(f'status code: {result.status_code}, ' # Kode status HTTP, yang menunjukkan apakah permintaan berhasil.
f'request id: {result.request_id}') # ID permintaan, yang digunakan untuk melacak log permintaan dan debugging.
if __name__ == "__main__":
# Titik masuk program yang memanggil fungsi main untuk mengeksekusi logika.
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"
)
// Definisikan variabel global.
var (
region string // Wilayah tempat bucket berada.
bucketName string // Nama bucket.
)
// Fungsi init digunakan untuk menginisialisasi parameter baris perintah.
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() {
// Urai parameter baris perintah.
flag.Parse()
// Periksa apakah nama bucket kosong.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// Periksa apakah wilayah kosong.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// Muat konfigurasi default dan atur penyedia kredensial serta wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Buat klien OSS.
client := oss.NewClient(cfg)
// Buat permintaan untuk mengatur aturan siklus hidup bucket.
request := &oss.PutBucketLifecycleRequest{
Bucket: oss.Ptr(bucketName), // Nama bucket.
LifecycleConfiguration: &oss.LifecycleConfiguration{
Rules: []oss.LifecycleRule{
{
// Dalam aturan siklus hidup 1, tentukan bahwa semua file dengan awalan data/ dikonversi ke kelas penyimpanan Infrequent Access 200 hari setelah terakhir diakses. Saat file dengan awalan data/ diakses kembali, mereka tetap berada di kelas penyimpanan Infrequent Access.
ID: oss.Ptr("rule1"),
Status: oss.Ptr("Enabled"),
Prefix: oss.Ptr("data/"),
Transitions: []oss.LifecycleRuleTransition{
{
Days: oss.Ptr(int32(200)),
StorageClass: oss.StorageClassIA,
IsAccessTime: oss.Ptr(true), // Atur nilai ke true. Kebijakan berdasarkan waktu akses terakhir.
ReturnToStdWhenVisit: oss.Ptr(false),
},
},
},
{
// Dalam aturan siklus hidup 2, tentukan bahwa semua file dengan awalan log/ dikonversi ke kelas penyimpanan Infrequent Access 120 hari setelah terakhir diakses. Saat file dengan awalan log/ diakses kembali, mereka tetap berada di kelas penyimpanan Infrequent Access.
// Dalam aturan yang sama, tentukan bahwa semua file dengan awalan log/ dikonversi ke kelas penyimpanan Archive 250 hari setelah terakhir diakses.
ID: oss.Ptr("rule2"),
Status: oss.Ptr("Enabled"),
Prefix: oss.Ptr("log/"),
Transitions: []oss.LifecycleRuleTransition{
{
Days: oss.Ptr(int32(120)),
StorageClass: oss.StorageClassIA,
IsAccessTime: oss.Ptr(true), // Atur nilai ke true. Kebijakan berdasarkan waktu akses terakhir.
ReturnToStdWhenVisit: oss.Ptr(false),
},
{
Days: oss.Ptr(int32(250)),
StorageClass: oss.StorageClassArchive,
IsAccessTime: oss.Ptr(true),
ReturnToStdWhenVisit: oss.Ptr(false),
},
},
},
},
},
}
// Atur aturan siklus hidup bucket.
result, err := client.PutBucketLifecycle(context.TODO(), request)
if err != nil {
log.Fatalf("failed to put bucket lifecycle %v", err)
}
// Cetak hasil pengaturan aturan siklus hidup bucket.
log.Printf("put bucket lifecycle result:%#v\n", result)
}
PHP
<?php
// Sertakan file autoload untuk memuat dependensi
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
use AlibabaCloud\Oss\V2\Models\LifecycleConfiguration;
// Tentukan deskripsi untuk parameter baris perintah
$optsdesc = [
"region" => ['help' => 'The region in which the bucket is located', 'required' => True], // (Wajib) Tentukan wilayah tempat bucket berada.
"endpoint" => ['help' => 'The domain names that other services can use to access OSS', 'required' => False], // (Opsional) Tentukan titik akhir yang dapat digunakan layanan lain untuk mengakses OSS.
"bucket" => ['help' => 'The name of the bucket', 'required' => True], // (Wajib) Tentukan nama bucket.
];
// Hasilkan daftar opsi panjang untuk mengurai parameter baris perintah
$longopts = \array_map(function ($key) {
return "$key:"; // Tambahkan titik dua setelah setiap parameter untuk menunjukkan bahwa nilai diperlukan
}, array_keys($optsdesc));
// Urai parameter baris perintah
$options = getopt("", $longopts);
// Periksa apakah parameter wajib hilang
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help'];
echo "Error: the following arguments are required: --$key, $help"; // Beri tahu pengguna tentang parameter wajib yang hilang
exit(1);
}
}
// Dapatkan nilai parameter baris perintah
$region = $options["region"]; // Wilayah tempat bucket berada
$bucket = $options["bucket"]; // Nama bucket
// Gunakan variabel lingkungan untuk memuat ID AccessKey dan rahasia AccessKey
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default SDK
$cfg = Oss\Config::loadDefault();
// Tentukan penyedia kredensial
$cfg->setCredentialsProvider($credentialsProvider);
// Tentukan wilayah
$cfg->setRegion($region);
// Tentukan titik akhir jika titik akhir disediakan
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]);
}
// Buat instance OSSClient
$client = new Oss\Client($cfg);
// Definisikan aturan siklus hidup untuk mengonversi objek yang namanya mengandung awalan log/ ke kelas penyimpanan IA setelah 30 hari
$lifecycleRule = new Oss\Models\LifecycleRule(
prefix: 'log/', // Awalan objek
transitions: array(
new Oss\Models\LifecycleRuleTransition(
days: 30, // Waktu konversi adalah 30 hari
storageClass: 'IA', // Kelas penyimpanan target adalah IA
IsAccessTime: 'true', // Apakah akan memicu konversi berdasarkan waktu akses
ReturnToStdWhenVisit: 'false' // Tetap sebagai penyimpanan IA saat diakses kembali
)
),
id: 'rule', // ID aturan
status: 'Enabled' // Status aturan diaktifkan
);
// Buat objek konfigurasi siklus hidup dan tambahkan aturan siklus hidup
$lifecycleConfiguration = new LifecycleConfiguration(
rules: array($lifecycleRule)
);
// Buat objek permintaan untuk mengatur siklus hidup bucket dan masukkan konfigurasi siklus hidup
$request = new Oss\Models\PutBucketLifecycleRequest(
bucket: $bucket,
lifecycleConfiguration: $lifecycleConfiguration
);
// Panggil metode putBucketLifecycle untuk mengatur aturan siklus hidup bucket
$result = $client->putBucketLifecycle($request);
// Tampilkan hasil yang dikembalikan
printf(
'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP
'request id:' . $result->requestId . PHP_EOL // Pengidentifikasi unik permintaan
);
Gunakan ossutil
Anda dapat menggunakan tool antarmuka baris perintah (CLI) ossutil untuk mengatur aturan siklus hidup. Untuk menginstal ossutil, lihat Instal ossutil.
Contoh berikut menunjukkan cara mengatur informasi siklus hidup untuk bucket examplebucket.
ossutil api put-bucket-lifecycle --bucket examplebucket--lifecycle-configuration "{\"Rule\":{\"ID\":\"rule1\",\"Prefix\":\"tmp/\",\"Status\":\"Enabled\",\"Expiration\":{\"Days\":\"10\"},\"Transition\":{\"Days\":\"5\",\"StorageClass\":\"IA\",\"IsAccessTime\":true,\"ReturnToStdWhenVisit\":true},\"AbortMultipartUpload\":{\"Days\":\"10\"}}}"Untuk informasi lebih lanjut tentang perintah ini, lihat put-bucket-lifecycle.
Operasi API terkait
Metode di atas didasarkan pada operasi API. Jika Anda memiliki persyaratan kustomisasi lanjutan, Anda dapat langsung mengirim permintaan REST API. Hal ini mengharuskan Anda menulis kode secara manual untuk menghitung tanda tangan. Untuk informasi lebih lanjut, lihat PutBucketLifecycle.
FAQ
Apa yang terjadi jika saya membuat dua aturan siklus hidup untuk objek dengan awalan yang sama di sebuah bucket, di mana satu aturan berdasarkan waktu modifikasi terakhir dan yang lain berdasarkan waktu akses terakhir?
Sebagai contoh, Anda membuat dua aturan siklus hidup untuk bucket target `examplebucket`. Rule 1 menentukan bahwa semua objek dengan awalan `doc` dihapus 30 hari setelah terakhir dimodifikasi. Rule 2 menentukan bahwa semua objek dengan awalan `doc` ditransisikan ke kelas penyimpanan IA 30 hari setelah terakhir diakses.
OSS mengeksekusi aturan siklus hidup berdasarkan prinsip meminimalkan biaya pengguna. Oleh karena itu, hanya Rule 1 yang berlaku. Hal ini karena Rule 1 menentukan bahwa objek yang cocok dihapus setelah 30 hari, sehingga tidak ada biaya tambahan lagi. Rule 2, yang mentransisikan objek ke kelas penyimpanan IA, masih akan menimbulkan biaya penyimpanan atau biaya pengambilan data.
Kapan aturan siklus hidup yang dimodifikasi berlaku, dan bagaimana penanganan data yang cocok dengan aturan asli?
Sebagai contoh, Anda memiliki aturan siklus hidup untuk objek dengan awalan er. Aturan tersebut dikonfigurasi untuk mentransisikan objek-objek ini ke kelas penyimpanan IA 30 hari setelah terakhir diakses, lalu mentransisikannya kembali ke kelas penyimpanan Standard jika diakses lagi. Namun, 35 hari setelah akses terakhir, Anda mengubah awalan dalam aturan siklus hidup dari er menjadi re. Dalam kasus ini, objek asli ditransisikan ke kelas penyimpanan IA, tetapi tindakan untuk mentransisikannya kembali ke kelas penyimpanan Standard tidak berlaku karena aturan tersebut tidak lagi cocok. Waktu akses terakhir untuk objek yang cocok dengan aturan yang dimodifikasi dihitung dari waktu saat pelacakan akses diaktifkan untuk bucket tersebut.
Bagaimana distribusi versi objek yang berbeda di berbagai tier penyimpanan saat Intelligent Tiering diaktifkan untuk Bucket yang mengaktifkan versioning?
Setiap objek di bucket yang mengaktifkan versioning memiliki ID versi unik, dan versi yang berbeda bersifat independen satu sama lain. Oleh karena itu, versi sebelumnya dari suatu objek mungkin berada di kelas penyimpanan IA, sedangkan versi saat ini berada di kelas penyimpanan Standard.
Apakah saya dapat menonaktifkan pelacakan akses?
Ya, Anda dapat melakukannya, asalkan bucket tidak memiliki aturan siklus hidup berdasarkan waktu akses terakhir. Setelah Anda menonaktifkan pelacakan akses, sistem berhenti melacak waktu akses terakhir objek. Saat Anda mengaktifkan kembali pelacakan akses, waktu akses terakhir semua objek diperbarui.
Referensi
LastAccessTime (waktu akses terakhir) adalah atribut penting objek OSS. Atribut ini digunakan dalam skenario seperti penagihan dan aturan siklus hidup. Setelah pelacakan akses diaktifkan untuk sebuah bucket, beberapa operasi pada objek dapat memperbarui LastAccessTime objek tersebut. Untuk informasi lebih lanjut, lihat Dampak operasi umum terhadap LastAccessTime objek.