生命週期規則可針對首碼或對象標籤生效,您也可以同時指定兩者作為生命週期規則生效的條件。
說明
標籤條件中標籤的Key和Value必須同時匹配。同一個規則中,如果同時配置了首碼和多個對象標籤,則只有同時滿足首碼且匹配規則中所有對象標籤的對象(Object),才視為適用於該規則。
注意事項
本文以華東1(杭州)外網Endpoint為例。如果您希望通過與OSS同地區的其他阿里雲產品訪問OSS,請使用內網Endpoint。關於OSS支援的Region與Endpoint的對應關係,請參見OSS訪問網域名稱、資料中心、開放連接埠。
本文以OSS網域名稱建立OSSClient為例。如果您希望通過自訂網域名、STS等方式建立OSSClient,請參見初始化。
生命週期規則中添加標籤匹配規則
以下代碼用於在生命週期規則中添加標籤匹配規則。
# -*- coding: utf-8 -*-
import oss2
import datetime
from oss2.models import (LifecycleExpiration, LifecycleRule,
BucketLifecycle, AbortMultipartUpload,
TaggingRule, Tagging, StorageTransition)
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# 填寫Bucket所在地區對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# 填寫Endpoint對應的Region資訊,例如cn-hangzhou。注意,v4簽名下,必須填寫該參數
region = "cn-hangzhou"
# examplebucket填寫儲存空間名稱。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# 設定Object到期規則,距最後修改時間3天后到期。
# 設定到期規則名稱和Object的匹配首碼。
rule1 = LifecycleRule('rule1', 'tests/',
# 啟用到期規則。
status=LifecycleRule.ENABLED,
# 設定到期規則為距最後修改時間3天后到期。
expiration=LifecycleExpiration(days=3))
# 設定Object到期規則,指定日期之前建立的檔案到期。
# 設定到期規則名稱和Object的匹配首碼。
rule2 = LifecycleRule('rule2', 'logging-',
# 不啟用到期規則。
status=LifecycleRule.DISABLED,
# 設定到期規則為指定日期之前建立的檔案到期。
expiration=LifecycleExpiration(created_before_date=datetime.date(2018, 12, 12)))
# 設定分區到期規則,分區3天后到期。
rule3 = LifecycleRule('rule3', 'tests1/',
status=LifecycleRule.ENABLED,
abort_multipart_upload=AbortMultipartUpload(days=3))
# 設定分區到期規則,指定日期之前的分區到期。
rule4 = LifecycleRule('rule4', 'logging1-',
status=LifecycleRule.DISABLED,
abort_multipart_upload = AbortMultipartUpload(created_before_date=datetime.date(2018, 12, 12)))
# 設定Object的匹配標籤。
tagging_rule = TaggingRule()
tagging_rule.add('key1', 'value1')
tagging_rule.add('key2', 'value2')
tagging = Tagging(tagging_rule)
# 設定轉儲規則,最後修改時間超過365天后轉為Archive Storage(ARCHIVE)。
# rule5中指定了Object的匹配標籤,只有同時擁有key1=value1和key2=value2兩個標籤的Object才會匹配此規則。
rule5 = LifecycleRule('rule5', 'logging2-',
status=LifecycleRule.ENABLED,
storage_transitions=[StorageTransition(days=365, storage_class=oss2.BUCKET_STORAGE_CLASS_ARCHIVE)],
tagging = tagging)
lifecycle = BucketLifecycle([rule1, rule2, rule3, rule4, rule5])
bucket.put_bucket_lifecycle(lifecycle)
查看生命週期規則中匹配的標籤資訊
以下代碼用於查看生命週期規則中匹配的標籤資訊。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# 填寫Bucket所在地區對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# 填寫Endpoint對應的Region資訊,例如cn-hangzhou。注意,v4簽名下,必須填寫該參數
region = "cn-hangzhou"
# examplebucket填寫儲存空間名稱。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# 查看生命週期規則。
lifecycle = bucket.get_bucket_lifecycle()
for rule in lifecycle.rules:
# 查看分區到期規則。
if rule.abort_multipart_upload is not None:
print('id={0}, prefix={1}, tagging={2}, status={3}, days={4}, created_before_date={5}'
.format(rule.id, rule.prefix, rule.tagging, rule.status,
rule.abort_multipart_upload.days,
rule.abort_multipart_upload.created_before_date))
# 查看Object到期規則。
if rule.expiration is not None:
print('id={0}, prefix={1}, tagging={2}, status={3}, days={4}, created_before_date={5}'
.format(rule.id, rule.prefix, rule.tagging, rule.status,
rule.expiration.days,
rule.expiration.created_before_date))
# 查看轉儲規則。
if len(rule.storage_transitions) > 0:
storage_trans_info = ''
for storage_rule in rule.storage_transitions:
storage_trans_info += 'days={0}, created_before_date={1}, storage_class={2} **** '.format(
storage_rule.days, storage_rule.created_before_date, storage_rule.storage_class)
print('id={0}, prefix={1}, tagging={2}, status={3},, StorageTransition={4}'
.format(rule.id, rule.prefix, rule.tagging, rule.status, storage_trans_info))
相關文檔
關於生命週期規則的完整範例程式碼,請參見GitHub樣本。
關於設定生命週期規則的API介面說明,請參見PutBucketLifecycle。
關於查看生命週期規則的API介面說明,請參見GetBucketLifecycle。