このトピックでは、バケットのインベントリを作成する方法と、バケットに設定されたインベントリを照会、一覧表示、および削除する方法について説明します。
使用上の注意
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba CloudサービスからOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、アクセス資格情報は環境変数から取得します。 アクセス資格情報の設定方法の詳細については、「アクセス資格情報の設定」をご参照ください。
このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSTS (Security Token Service) を使用してOSSClientインスタンスを作成する場合は、「初期化」をご参照ください。
バケットのインベントリを作成、表示、一覧表示、および削除する権限があることを確認します。 デフォルトでは、バケット所有者に上記の操作を実行する権限があります。 上記の操作を実行する権限がない場合は、バケットの所有者に権限を付与するよう依頼してください。
バケットには最大1,000のインベントリを設定できます。
インベントリを構成するソースバケットは、インベントリリストが保存されているターゲットバケットと同じリージョンにデプロイする必要があります。
バケットのインベントリを作成する
次のコードは、バケットのインベントリを作成する方法の例を示しています。
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
oss2.modelsのインポートから (InventoryConfiguration,
InventoryFilter,
InventorySchedule,
InventoryDestination,
InventoryBucketDestination、
INVENTORY_INCLUDED_OBJECT_VERSIONS_CURRENT,
INVENTORY_FREQUENCY_DAILY、
INVENTORY_FORMAT_CSV、
FIELD_SIZE、
FIELD_LAST_MODIFIED_DATE、
FIELD_STORAG_CLASS、
FIELD_ETAG,
FIELD_IS_MULTIPART_UPLOADED,
FIELD_ENCRYPTION_STATUS)
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、環境変数OSS_ACCESS_KEY_IDとOSS_ACCESS_KEY_SECRETが設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。 例: examplebucket.
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# バケット所有者が操作を実行する権限を付与するアカウントのIDを指定します。 例: 1283641033516515。
account_id = 'yourtBucketDestinationAccountId'
# インベントリを構成するソースバケット内のすべてのオブジェクトを読み取る権限が付与されているRAMロールの名前と、生成されたインベントリリストを格納する宛先バケットにデータを書き込む権限を指定します。 例: acs:ram::1283641033516515:role/AliyunOSSRole。
role_arn = 'yourBucketDestinationRoleArn'
# 生成されたインベントリリストを保存するバケットの名前を指定します。
dest_bucket_name = 'yourDestinationBucketName'
# インベントリ名を指定します。
inventory_id = "inventory1"
# インベントリリストに含まれるオブジェクト属性を指定します。
optional_fields = [FIELD_SIZE, FIELD_LAST_MODIFIED_DATE, FIELD_STORAG_CLASS,
FIELD_ETAG、FIELD_IS_MULTIPART_UPLOADED、FIELD_ENCRYPTION_STATUS]
# 生成されたインベントリリストを保存するバケットを作成します。
bucket_destination = InventoryBucketDestination ()
# 宛先バケットが属するアカウントのIDを指定します。
account_id=account_id、
# 宛先バケットへのアクセスに使用するRAMロールのARNを指定します。
role_arn=role_arn、
# 宛先バケットの名前を指定します。
bucket=dest_bucket_name,
# インベントリリストの形式を指定します。
inventory_format=INVENTORY_FORMAT_CSV、
# 生成されたインベントリリストを格納するパスのプレフィックスを指定します。
prefix='destination-prefix',
# 次のコードは、Key Management Service (KMS) によって管理される顧客マスターキー (CMK) を使用してインベントリリストを暗号化する方法の例を示しています。
# sse_kms_encryption=InventoryServerSideEncryptionKMS("test-kms-id") 、
# 次のコードは、OSSサーバー上のインベントリリストを暗号化する方法の例を示しています。
# sse_oss_encryption=InventoryServerSideEncryptionOSS()
)
# インベントリを作成します。
inventory_configuration = InventoryConfiguration ()
# インベントリのIDを指定します。
inventory_id=inventory_id,
# バケットのインベントリを有効にするかどうかを指定します。 有効な値は、true および false です。
is_enabled=True、
# 在庫リストを毎日または毎週生成するかどうかを指定します。 次のコードは、在庫リストを毎日生成する方法の例を示しています。 Weeklyの値は、在庫リストが毎週生成されることを示します。 Dailyの値は、在庫リストが毎日生成されることを示します。
inventory_schedule=InventorySchedule (周波数=INVENTORY_FREQUENCY_DAILY) 、
# インベントリリストに現在のバージョンのオブジェクトのみが含まれるように指定します。 INVENTORY_INCLUDED_OBJECT_VERSIONSパラメーターをALLに設定すると、オブジェクトのすべてのバージョンがインベントリリストに含まれます。 このインベントリは、ソースバケットのバージョン管理が有効になっている場合にのみ有効になります。
included_object_versions=INVENTORY_INCLUDED_OBJECT_VERSIONS_CURRENT、
# インベントリリストに含めるオブジェクトのプレフィックス名を指定します。
# inventory_filter=InventoryFilter(prefix="obj-prefix") 、
# インベントリリストをフィルタリングする条件を指定します。 例えば、オブジェクトが最後に修正された時間範囲の開始が1637883649される。
inventory_filter=InventoryFilter (
# インベントリのフィルタリングに使用するプレフィックスを指定します。
"obj-prefix" 、
# オブジェクトが最後に変更された時間範囲の開始を指定します。 単位は秒です。
1637883649,
# オブジェクトが最後に変更された時間範囲の終わりを指定します。 単位は秒です。
1638347592,
# オブジェクトの最小サイズを指定します。 単位: B.
1024,
# オブジェクトの最大サイズを指定します。 単位: B.
1048576,
# オブジェクトのストレージクラスを指定します。
「スタンダード、IA」) 、
# インベントリリストに含めるオブジェクト属性を指定します。
optional_fields=optional_fields,
inventory_destination=InventoryDestination(bucket_destination=bucket_destination)
# バケットにインベントリを適用します。
result = bucket.put_bucket_inventory_configuration(inventory_configuration)
プリント (result.status)
バケットのインベントリの照会
次のコードは、バケットに設定されたインベントリを照会する方法の例を示しています。
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
osのインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、環境変数OSS_ACCESS_KEY_IDとOSS_ACCESS_KEY_SECRETが設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。 例: examplebucket.
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# インベントリ名を指定します。
inventory_id = "inventory1"
# インベントリを照会します。
result = bucket.get_bucket_inventory_configuration(inventory_id=inventory_id);
# インベントリに関する情報を表示します。
プリント ('====== inventory configuration ======')
print('inventory_id', result.inventory_id)
print('is_enabled ', result.is_enabled)
プリント ('frequency ', result.inventory_schedule.frequency)
印刷 ('included_object_versions '、result.included_object_versions)
print('inventory_filterプレフィックス '、result.inventory_filter.prefix)
print('fields', result.optional_fields)
bucket_destin = result.inventory_destination.bucket_destination
プリント ('=== bucket destination ===')
print('account_id', bucket_destin.account_id)
プリント ('role_arn', bucket_destin.role_arn)
print('bucket', bucket_destin.bucket)
print('format', bucket_destin.inventory_format)
print('prefix', bucket_destin.prefix)
bucket_destin.sse_kms_encryptionがNoneではない場合:
print('server side encryption by kms, key id:', bucket_destin.sse_kms_encryption.key_id)
elif bucket_destin.sse_oss_encryptionはなしではありません:
print ('ossによるサーバーサイド暗号化 ')
一度に複数の在庫をリストする
1回のリクエストで最大100のインベントリを照会できます。 100を超えるインベントリをクエリするには、複数のリクエストを送信し、各リクエストに対して返されたトークンを次のリクエストのパラメーターとして使用する必要があります。
次のコードは、バケットに設定されたインベントリを一覧表示する方法の例です。
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
osのインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、環境変数OSS_ACCESS_KEY_IDとOSS_ACCESS_KEY_SECRETが設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。 例: examplebucket.
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# インベントリに関する情報を表示します。
def print_inventory_configuration(configuration):
プリント ('====== inventory configuration ======')
print('inventory_id' 、configuration.inventory_id)
print('is_enabled '、configuration.is_enabled)
print('frequency ', configuration.inventory_schedule.frequency)
印刷 ('included_object_versions '、configuration.included_object_versions)
print('inventory_filterプレフィックス '、configuration.inventory_filter.prefix)
print('fields', configuration.optional_fields)
bucket_destin = configuration.inventory_destination.bucket_destination
プリント ('=== bucket destination ===')
print('account_id', bucket_destin.account_id)
プリント ('role_arn', bucket_destin.role_arn)
print('bucket', bucket_destin.bucket)
print('format', bucket_destin.inventory_format)
print('prefix', bucket_destin.prefix)
bucket_destin.sse_kms_encryptionがNoneではない場合:
print('server side encryption by kms, key id:', bucket_destin.sse_kms_encryption.key_id)
elif bucket_destin.sse_oss_encryptionはなしではありません:
print ('ossによるサーバーサイド暗号化 ')
# すべての在庫をリストします。
# インベントリの数が100を超える場合、結果はページごとに返されます。 ページ分割情報は、<oss2.models.ListInventoryConfigurationResult> クラスに格納されます。
continuation_token=なし
1:
result = bucket.list_bucket_inventory_configuration (continuation_token=continuation_token)
# 結果がページ単位でリストされているかどうかを取得します。
print('is truncated ', result.is_truncated)
# このリストで実行するトークンを取得します。
print('continuaiton_token', result.continuaiton_token)
# 後続のリストで実行するトークンを取得します。
print('next_continuation_token ', result.next_continuation_token)
# インベントリに関する情報を表示します。
result.inventory_configurationのinventory_configの場合:
print_inventory_configuration(inventory_config)
# 結果がページ単位でリストされている場合は、リストを続行します。 後続のリストは継続トークンを保持する必要があります。
if result.is_truncated:
continuation_token = result.next_continuation_token
else:
休憩
バケットのインベントリを削除する
次のコードは、バケットに設定されたインベントリを削除する方法の例を示しています。
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
osのインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、環境変数OSS_ACCESS_KEY_IDとOSS_ACCESS_KEY_SECRETが設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。 例: examplebucket.
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# インベントリ名を指定します。
inventory_id = "inventory1"
# インベントリを削除します。
bucket.de lete_bucket_inventory_configuration(inventory_id)
参考資料
バケットインベントリを管理するための完全なサンプルコードについては、『GitHub』をご参照ください。
バケットのインベントリを作成するためのAPI操作の詳細については、「PutBucketInventory」をご参照ください。
バケットに設定されたインベントリを照会するためのAPI操作の詳細については、「GetBucketInventory」をご参照ください。
バケットに設定されたインベントリを一覧表示するAPI操作の詳細については、「ListBucketInventory」をご参照ください。
バケットに設定されたインベントリを削除するAPI操作の詳細については、「DeleteBucketInventory」をご参照ください。