全部產品
Search
文件中心

Object Storage Service:Python儲存空間標籤

更新時間:Nov 09, 2024

您可以通過儲存空間(Bucket)的標籤功能,對Bucket進行分類管理,例如ListBucket時只顯示帶有指定標籤的Bucket。

注意事項

  • 本文以華東1(杭州)外網Endpoint為例。如果您希望通過與OSS同地區的其他阿里雲產品訪問OSS,請使用內網Endpoint。關於OSS支援的Region與Endpoint的對應關係,請參見OSS地區和訪問網域名稱

  • 本文以從環境變數讀取存取憑證為例。如何配置訪問憑證,請參見配置訪問憑證

  • 本文以OSS網域名稱建立OSSClient為例。如果您希望通過自訂網域名、STS等方式建立OSSClient,請參見初始化

  • 只有Bucket擁有者及授予oss:PutBucketTagging許可權的使用者才能為Bucket設定標籤,否則返回403 Forbidden錯誤,錯誤碼為AccessDenied

  • 每個Bucket最多可設定20對標籤(Key-Value對)。

  • Key和Value必須為UTF-8編碼。

  • Key最大長度為64字元,區分大小寫,不可為空。Key不支援以http://https://Aliyun為首碼(不區分大小寫)。

  • Value最大長度為128字元,可以為空白。

設定Bucket標籤

以下代碼用於為儲存空間examplebucket設定標籤。

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from oss2.models import Tagging, TaggingRule

# 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數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"

# yourBucketName填寫儲存空間名稱。
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# 建立標籤規則。
rule = TaggingRule()
rule.add('key1', 'value1')
rule.add('key2', 'value2')

# 建立標籤。
tagging = Tagging(rule)
# 設定Bucket標籤。
result = bucket.put_bucket_tagging(tagging)
# 查看HTTP返回碼。
print('http status:', result.status)

擷取Bucket標籤

以下代碼用於擷取儲存空間examplebucket的標籤。

# -*- 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"

# yourBucketName填寫儲存空間名稱。
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# 擷取Bucket標籤資訊。
result = bucket.get_bucket_tagging()
# 查看擷取到的標籤規則。
tag_rule = result.tag_set.tagging_rule
print('tag rule:', tag_rule)

列舉帶指定標籤的Bucket

以下代碼用於列舉帶指定標籤的Bucket。

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# 建立Server對象。
# 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數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"

service = oss2.Service(auth, endpoint, region=region)

# 填充tag-key,tag-value欄位到list_buckets介面的params參數中。
params = {}
params['tag-key'] = 'yourTagging_key'
params['tag-value'] = 'yourTagging_value'

# 列舉帶指定標籤的Bucket。
result = service.list_buckets(params=params)
# 查看列舉結果。
for bucket in result.buckets:
    print('result bucket_name:', bucket.name)

刪除Bucket標籤

刪除Bucket所有標籤

以下代碼用於刪除儲存空間examplebucket的所有標籤。

# -*- 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"

# yourBucketName填寫儲存空間名稱。
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# 刪除Bucket標籤。
result = bucket.delete_bucket_tagging()
# 查看HTTP返回碼。
print('http status:', result.status)

刪除Bucket指定標籤

以下代碼用於刪除儲存空間examplebucket的指定標籤。

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# yourEndpoint填寫Bucket所在地區對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
# 填寫Bucket名稱,例如examplebucket。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')

params = dict()
# 刪除key為key1的標籤。
params['tagging'] = "key1"
# 刪除Bucket指定標籤。
result = bucket.delete_bucket_tagging(params=params)
# 查看HTTP返回碼。
print('http status:', result.status)

相關文檔

  • 關於儲存空間標籤的完整範例程式碼,請參見GitHub樣本

  • 關於設定Bucket標籤的API介面說明,請參見PutBucketTags

  • 關於擷取Bucket標籤資訊的API介面說明,請參見GetBucketTags

  • 關於刪除Bucket標籤的API介面說明,請參見DeleteBucketTags