バケットは、OSS 内のオブジェクトのコンテナーです。このトピックでは、Python SDK V2 を使用してバケットのアクセスコントロールリスト (ACL) を設定および取得する方法について説明します。
注意
このトピックのサンプルコードでは、中国 (杭州) のリージョン ID である
cn-hangzhouを例として使用しています。デフォルトでは、パブリックエンドポイントが使用されます。同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。OSS がサポートするリージョンとエンドポイントの詳細については、「OSS のリージョンとエンドポイント」をご参照ください。バケットの ACL を設定するには
oss:PutBucketAcl権限が、バケットの ACL を取得するにはoss:GetBucketAcl権限が必要です。詳細については、「RAM ユーザーへのカスタムポリシーの付与」をご参照ください。
メソッド定義
バケットのアクセスコントロールリストの設定
put_bucket_acl(request: PutBucketAclRequest, **kwargs) → PutBucketAclResult
バケットのアクセスコントロールリストの取得
get_bucket_acl(request: GetBucketAclRequest, **kwargs) → GetBucketAclResult
リクエストパラメーターリスト
パラメーター名 | タイプ | 説明 |
request | PutBucketAclRequest | リクエストパラメーターを設定します。詳細については、「PutBucketAclRequest」をご参照ください。 |
GetBucketAclRequest | リクエストパラメーターを設定します。詳細については、「GetBucketAclRequest」をご参照ください。 |
戻り値リスト
タイプ | 説明 |
GetBucketAclResult | 戻り値。詳細については、「GetBucketAclResult」をご参照ください。 |
PutBucketAclResult | 戻り値。詳細については、「PutBucketAclResult」をご参照ください。 |
バケット ACL を設定するメソッドの完全な定義については、「put_bucket_acl」をご参照ください。
バケット ACL を取得するメソッドの完全な定義については、「get_bucket_acl」をご参照ください。
バケットのアクセスコントロールリストのタイプ
バケット ACL には、次の 3 つのタイプがあります。
アクセスコントロールリスト | 説明 | 権限値 |
非公開 | バケットの所有者と承認されたユーザーのみが、バケット内のオブジェクトに対して読み取りおよび書き込み操作を実行できます。他のユーザーはバケット内のオブジェクトにアクセスできません。 | private |
公開読み取り | バケットの所有者と承認されたユーザーのみが、バケット内のオブジェクトに対して読み取りおよび書き込み操作を実行できます。匿名ユーザーを含む他のユーザーは、バケット内のオブジェクトの読み取りのみが可能です。この権限を使用する場合は注意が必要です。 | public-read |
公開読み書き | すべてのユーザーがバケット内のオブジェクトに対して読み取りおよび書き込み操作を実行できます。この権限を使用する場合は注意が必要です。 | public-read-write |
コード例
以下のコードを使用して、バケット ACL を設定および取得できます。
import argparse
import alibabacloud_oss_v2 as oss
# コマンドライン引数パーサーを作成し、説明情報を追加します
parser = argparse.ArgumentParser(description="put bucket acl sample")
# 必須のコマンドライン引数を追加します: region、bucket、acl
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
# オプションのコマンドライン引数を追加します: endpoint。他のサービスが OSS にアクセスするためのドメイン名を指定するために使用されます
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
# 必須のコマンドライン引数を追加します: acl。バケットのアクセス権限 ACL (private、public-read、public-read-write など) を指定するために使用されます
parser.add_argument('--acl', help='Specify the access permission ACL for the bucket.', required=True)
def main():
# コマンドライン引数を解析します
args = parser.parse_args()
# 環境変数から認証情報を読み込みます
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# SDK のデフォルト設定を使用します
cfg = oss.config.load_default()
# 認証情報プロバイダーを設定します
cfg.credentials_provider = credentials_provider
# リージョンを設定します
cfg.region = args.region
# endpoint が指定されている場合は、設定のエンドポイントを更新します
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# OSS クライアントを作成します
client = oss.Client(cfg)
# put_bucket_acl メソッドを呼び出してバケット ACL を設定します
result = client.put_bucket_acl(oss.PutBucketAclRequest(
bucket=args.bucket,
acl=args.acl,
))
# リクエストのステータスコードとリクエスト ID を出力します
print(f'status code: {result.status_code}, request id: {result.request_id}')
# 指定されたバケットの ACL を取得します
result = client.get_bucket_acl(oss.GetBucketAclRequest(
bucket=args.bucket,
))
# 結果のステータスコード、リクエスト ID、ACL 情報を出力します
print(f'status code: {result.status_code},'
f' request id: {result.request_id},'
f' acl: {result.acl},'
)
if __name__ == "__main__":
main()
関連ドキュメント
-
バケット ACL を設定する完全なサンプルコードについては、「put_bucket_acl.py」をご参照ください。
バケットの ACL を取得する方法を示す完全なサンプルコードについては、「get_bucket_acl.py」をご参照ください。