このトピックでは、バケットインベントリ構成を追加、表示、リスト表示、削除する方法について説明します。
注意事項
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。OSS と同じリージョンにある他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用してください。OSS のリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、アクセス認証情報は環境変数から取得されます。アクセス認証情報の設定方法の詳細については、「OSS SDK for Python 1.0 を使用したアクセス認証情報の設定」をご参照ください。
このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスが作成されます。カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、「初期化」をご参照ください。
インベントリ構成を追加、表示、リスト表示、削除する権限があることを確認してください。バケットのオーナーは、デフォルトでこれらの権限を持っています。これらの権限がない場合は、バケットのオーナーに権限を要求する必要があります。
1 つのバケットに対して最大 1,000 個のインベントリルールを設定できます。
インベントリルールを設定するソースバケットと、マニフェストファイルが保存される宛先バケットは、同じリージョンにある必要があります。
インベントリ構成の追加
次のコードは、バケットにインベントリ構成を追加する方法を示しています:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from oss2.models import (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.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントに対応するリージョン情報 (例: cn-hangzhou) を指定します。このパラメーターは V4 署名に必要であることに注意してください。
region = "cn-hangzhou"
# バケット名を examplebucket に設定します。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# バケットのオーナーから権限を付与されたアカウントの ID を指定します。例:1283641033516515
account_id = 'yourtBucketDestinationAccountId'
# ソースバケットからすべてのファイルを読み取り、宛先バケットにファイルを書き込む権限を持つロールの名前を指定します。例: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(
# 宛先バケットを所有するユーザーの AccountId。
account_id=account_id,
# 宛先バケットのロール ARN。
role_arn=role_arn,
# 宛先バケットの名前。
bucket=dest_bucket_name,
# インベントリフォーマットを指定します。
inventory_format=INVENTORY_FORMAT_CSV,
# インベントリ結果が保存されるパスのプレフィックス。
prefix='destination-prefix',
# KMS を使用してインベントリを暗号化するには、次の設定を使用します。
# 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,
# インベントリの生成スケジュールを設定します。次の例では、頻度を毎日 (daily) に設定します。WEEKLY は週に 1 回、DAILY は 1 日に 1 回を指定します。
inventory_schedule=InventorySchedule(frequency=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",
# 最終更新日時でファイルをフィルターするための開始 UNIX タイムスタンプ。単位:秒。
1637883649,
# 最終更新日時でファイルをフィルターするための終了 UNIX タイムスタンプ。単位:秒。
1638347592,
# フィルターするファイルの最小サイズ。単位:バイト。
1024,
# フィルターするファイルの最大サイズ。単位:バイト。
1048576,
# フィルターするファイルのストレージクラス。複数のストレージクラスを指定できます。
'Standard,IA'),
# インベントリに含めるオブジェクトプロパティを指定します。
optional_fields=optional_fields,
inventory_destination=InventoryDestination(bucket_destination=bucket_destination))
# インベントリ構成をアップロードします。
result = bucket.put_bucket_inventory_configuration(inventory_configuration)
print(result.status)インベントリ構成の表示
次のコードは、バケットのインベントリ構成を表示する方法を示しています:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
import os
# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントに対応するリージョン情報 (例: cn-hangzhou) を指定します。このパラメーターは V4 署名に必要であることに注意してください。
region = "cn-hangzhou"
# バケット名を examplebucket に設定します。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# インベントリルールの名前を指定します。
inventory_id = "inventory1"
# インベントリ構成を取得します。
result = bucket.get_bucket_inventory_configuration(inventory_id=inventory_id)
# インベントリ構成情報を出力します。
print('======inventory configuration======')
print('inventory_id', result.inventory_id)
print('is_enabled', result.is_enabled)
print('frequency', result.inventory_schedule.frequency)
print('included_object_versions', result.included_object_versions)
print('inventory_filter prefix', result.inventory_filter.prefix)
print('fields', result.optional_fields)
bucket_destin = result.inventory_destination.bucket_destination
print('===bucket destination===')
print('account_id', bucket_destin.account_id)
print('role_arn', bucket_destin.role_arn)
print('bucket', bucket_destin.bucket)
print('format', bucket_destin.inventory_format)
print('prefix', bucket_destin.prefix)
if bucket_destin.sse_kms_encryption is not None:
print('server side encryption by kms, key id:', bucket_destin.sse_kms_encryption.key_id)
elif bucket_destin.sse_oss_encryption is not None:
print('server side encryption by oss.')インベントリ構成のリスト表示
1 回のリクエストで取得できるインベントリ構成は最大 100 件です。100 件を超えるインベントリ構成を取得するには、複数のリクエストを送信する必要があります。前のリクエストから返されたトークンを次のリクエストのパラメーターとして使用します。
次のコードは、バケットのインベントリ構成をリスト表示する方法を示しています:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
import os
# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントに対応するリージョン情報 (例: cn-hangzhou) を指定します。このパラメーターは V4 署名に必要であることに注意してください。
region = "cn-hangzhou"
# バケット名を examplebucket に設定します。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# インベントリ構成情報を出力します。
def print_inventory_configuration(configuration):
print('======inventory configuration======')
print('inventory_id', configuration.inventory_id)
print('is_enabled', configuration.is_enabled)
print('frequency', configuration.inventory_schedule.frequency)
print('included_object_versions', configuration.included_object_versions)
print('inventory_filter prefix', configuration.inventory_filter.prefix)
print('fields', configuration.optional_fields)
bucket_destin = configuration.inventory_destination.bucket_destination
print('===bucket destination===')
print('account_id', bucket_destin.account_id)
print('role_arn', bucket_destin.role_arn)
print('bucket', bucket_destin.bucket)
print('format', bucket_destin.inventory_format)
print('prefix', bucket_destin.prefix)
if bucket_destin.sse_kms_encryption is not None:
print('server side encryption by kms, key id:', bucket_destin.sse_kms_encryption.key_id)
elif bucket_destin.sse_oss_encryption is not None:
print('server side encryption by oss.')
# すべてのインベントリ構成をリスト表示します。
# 100 件を超える構成がある場合、結果はページ分割されます。ページング情報はクラス <oss2.models.ListInventoryConfigurationResult> に保存されます。
continuation_token = None
while 1:
result = bucket.list_bucket_inventory_configurations(continuation_token=continuation_token)
# 現在のリスト表示操作の結果がページ分割されているかどうかを示します。
print('is truncated', result.is_truncated)
# 現在のリスト表示操作で渡されるトークン。
print('continuaiton_token', result.continuaiton_token)
# 次のリスト表示操作で渡すトークン。
print('next_continuation_token', result.next_continuation_token)
# インベントリ構成情報を出力します。
for inventory_config in result.inventory_configurations:
print_inventory_configuration(inventory_config)
# 現在のリスト表示操作がページ分割されている場合は、リスト表示を続行し、ページネーショントークンを渡します。
if result.is_truncated:
continuation_token = result.next_continuation_token
else:
breakインベントリ構成の削除
次のコードは、バケットのインベントリ構成を削除する方法を示しています:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
import os
# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントに対応するリージョン情報 (例: cn-hangzhou) を指定します。このパラメーターは V4 署名に必要であることに注意してください。
region = "cn-hangzhou"
# バケット名を examplebucket に設定します。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# インベントリルールの名前を指定します。
inventory_id = "inventory1"
# インベントリ構成を削除します。
bucket.delete_bucket_inventory_configuration(inventory_id)関連ドキュメント
バケットインベントリの完全なサンプルコードについては、「GitHub の例」をご参照ください。
バケットのインベントリ構成を追加するための API 操作の詳細については、「PutBucketInventory」をご参照ください。
バケットのインベントリ構成を表示するための API 操作の詳細については、「GetBucketInventory」をご参照ください。
バケットのインベントリ構成をリスト表示するための API 操作の詳細については、「ListBucketInventory」をご参照ください。
バケットのインベントリ構成を削除するための API 操作の詳細については、「DeleteBucketInventory」をご参照ください。