Tous les produits
Search
Centre de documentation

Object Storage Service:Gérer les stratégies de bucket à l'aide du SDK OSS pour Python 2.0

Dernière mise à jour :Aug 18, 2026

Les stratégies de bucket vous permettent d'autoriser ou de restreindre l'accès à des ressources OSS spécifiques pour les utilisateurs anonymes ou identifiés, tels que les comptes Alibaba Cloud, les utilisateurs RAM et les rôles RAM. Par exemple, vous pouvez accorder à un utilisateur RAM d'un autre compte Alibaba Cloud des autorisations en lecture seule sur des ressources OSS spécifiques.

Notes

  • Avant de configurer les stratégies de bucket, assurez-vous de bien comprendre cette fonctionnalité.

  • L'exemple de code de cette rubrique utilise l'ID de région cn-hangzhou de la région Chine (Hangzhou). Par défaut, le point de terminaison public est utilisé pour accéder aux ressources d'un bucket. Si vous souhaitez accéder aux ressources du bucket depuis d'autres services Alibaba Cloud dans la même région, utilisez un point de terminaison interne. Pour plus d'informations sur les régions et points de terminaison pris en charge, consultez Régions et points de terminaison.

  • L'autorisation oss:PutBucketPolicy est requise pour configurer une stratégie de bucket. L'autorisation oss:GetBucketPolicy est requise pour interroger une stratégie de bucket. L'autorisation oss:DeleteBucketPolicy est requise pour supprimer une stratégie de bucket. Pour plus d'informations, consultez Accorder une stratégie personnalisée.

Méthodes

Configurer une stratégie de bucket

put_bucket_policy(request: PutBucketPolicyRequest, **kwargs) → PutBucketPolicyResult

Interroger les stratégies de bucket

get_bucket_policy(request: GetBucketPolicyRequest, **kwargs) → GetBucketPolicyResult

Supprimer une stratégie de bucket

delete_bucket_policy(request: DeleteBucketPolicyRequest, **kwargs) → DeleteBucketPolicyResult

Paramètre

Type

Description

request

PutBucketPolicyRequest

Requête pour l'opération PutBucketPolicy. Pour les paramètres de requête, consultez PutBucketPolicyRequest.

GetBucketPolicyRequest

Requête pour l'opération GetBucketPolicy. Pour les paramètres de requête, consultez GetBucketPolicyRequest.

DeleteBucketPolicyRequest

Requête pour l'opération DeleteBucketPolicy. Pour les paramètres de requête, consultez DeleteBucketPolicyRequest.

Paramètres de réponse

Type

Description

PutBucketPolicyResult

Valeur de retour. Pour plus d'informations, consultez PutBucketPolicyResult.

GetBucketPolicyResult

Valeur de retour. Pour plus d'informations, consultez GetBucketPolicyResult.

DeleteBucketPolicyResult

Valeur de retour. Pour plus d'informations, consultez DeleteBucketPolicyResult.

Pour la définition complète de la méthode de configuration d'une stratégie de bucket, consultez put_bucket_policy.

Pour la définition complète de la méthode d'interrogation des stratégies de bucket, consultez get_bucket_policy.

Pour la définition complète de la méthode de suppression d'une stratégie de bucket, consultez delete_bucket_policy.

Exemple de code

Configurer une stratégie de bucket

L'exemple de code suivant configure une stratégie de bucket.

import argparse
import alibabacloud_oss_v2 as oss

# Create a command-line parameter parser for obtaining the values of the command-line parameters.
parser = argparse.ArgumentParser(description="put bucket policy sample")
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)
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')

def main():
    # Parse the command-line parameters.
    args = parser.parse_args()

    # Load access credentials from environment variables.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Use the default configuration of the SDK.
    cfg = oss.config.load_default()
    # Set the credential provider.
    cfg.credentials_provider = credentials_provider
    # Specify the region.
    cfg.region = args.region
    # If an endpoint is provided from the command line, update the endpoint in the configuration with the provided endpoint.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Create an OSS client.
    client = oss.Client(cfg)

    # In the following example, the bucket owner whose UID is 174649585760xxxx uses a bucket policy to authorize a RAM user whose UID is 20214760404935xxxx to list all objects in examplebucket.
    policy_text = "{\"Statement\": [{\"Effect\": \"Allow\", \"Action\": [\"oss:GetObject\", \"oss:ListObjects\"], \"Principal\": [\"20214760404935xxxx\"], \"Resource\": [\"acs:oss:*:174649585760xxxx:examplebucket/*\"]}], \"Version\": \"1\"}"

    # Apply the policy to the specified bucket.
    result = client.put_bucket_policy(oss.PutBucketPolicyRequest(
            bucket=args.bucket,
            body=policy_text,
    ))

    # Display the HTTP status code and request ID.
    print(f'status code: {result.status_code}, request id: {result.request_id}')

if __name__ == "__main__":
    main()

Interroger les stratégies de bucket

L'exemple de code suivant interroge les stratégies de bucket.

import argparse
import alibabacloud_oss_v2 as oss

# Create a command-line parameter parser.
parser = argparse.ArgumentParser(description="get bucket policy sample")
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)
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')

def main():
    # Parse the command-line parameters.
    args = parser.parse_args()

    # Load access credentials from environment variables.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Use the default configuration of the SDK.
    cfg = oss.config.load_default()
    # Set the credential provider.
    cfg.credentials_provider = credentials_provider
    # Specify the region.
    cfg.region = args.region
    # If an endpoint is provided from the command line, update the endpoint in the configuration with the provided endpoint.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Create an OSS client.
    client = oss.Client(cfg)

    # Call get_bucket_policy to query the bucket policies.
    result = client.get_bucket_policy(oss.GetBucketPolicyRequest(
            bucket=args.bucket,
    ))

    # Display the HTTP status code, request ID, and response body.
    print(f'status code: {result.status_code},'
            f' request id: {result.request_id},'
            f' body: {result.body},'
    )

# Call the main function when the script is directly run.
if __name__ == "__main__":
    main()

Supprimer une stratégie de bucket

L'exemple de code suivant supprime une stratégie de bucket.

import argparse
import alibabacloud_oss_v2 as oss

# Create a command-line parameter parser.
parser = argparse.ArgumentParser(description="delete bucket policy sample")
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)
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')

def main():
    # Parse command-line parameters.
    args = parser.parse_args()

    # Load access credentials from environment variables.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Use the default configuration of the SDK.
    cfg = oss.config.load_default()
    # Set the credential provider.
    cfg.credentials_provider = credentials_provider
    # Specify the region.
    cfg.region = args.region
    # If an endpoint is provided from the command line, update the endpoint in the configuration with the provided endpoint.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Create an OSS client.
    client = oss.Client(cfg)

    # Call the delete_bucket_policy method.
    result = client.delete_bucket_policy(oss.DeleteBucketPolicyRequest(
            bucket=args.bucket,  # Specify the name of the bucket to perform the operation on.
    ))

    # Display the HTTP status code and request ID.
    print(f'status code: {result.status_code}, request id: {result.request_id}')

# Execute the main function when the script is directly run.
if __name__ == "__main__":
    main()

Références

  • Pour obtenir l'exemple de code complet de configuration d'une stratégie de bucket, visitez put_bucket_policy.py.

  • Pour obtenir l'exemple de code complet d'interrogation des stratégies de bucket, visitez get_bucket_policy.py.

  • Pour obtenir l'exemple de code complet de suppression d'une stratégie de bucket, visitez delete_bucket_policy.py.