Cette rubrique explique comment gérer les listes de contrôle d'accès (ACL) des objets à l'aide du SDK OSS pour Python 2.0.
Remarques sur l'utilisation
L'exemple de code de cette rubrique utilise l'ID de région
cn-hangzhoude la région Chine (Hangzhou). Par défaut, un endpoint public permet d'accéder aux ressources d'un bucket. Pour accéder aux ressources du bucket depuis d'autres services Alibaba Cloud situés dans la même région, utilisez un endpoint interne. Pour plus d'informations sur les régions et les endpoints pris en charge par OSS, consultez la section Régions et endpoints.Pour définir les autorisations d'accès d'un objet, vous devez disposer de l'autorisation
oss:PutObjectAcl. Pour consulter les autorisations d'accès d'un objet, vous devez disposer de l'autorisationoss:GetObjectAcl. Pour plus d'informations, consultez la section Accorder des stratégies personnalisées à un utilisateur RAM.
Méthode
Configurer l'ACL d'un objet
put_object_acl(request: PutObjectAclRequest, **kwargs) → PutObjectAclResult
Interroger l'ACL d'un objet
get_object_acl(request: GetObjectAclRequest, **kwargs) → GetObjectAclResult
Paramètres de requête
|
Nom du paramètre |
Type |
Description |
|
request |
PutObjectAclRequest |
Les paramètres de la requête. Pour plus d'informations, consultez PutObjectAclRequest |
|
GetObjectAclRequest |
Les paramètres de la requête. Pour plus d'informations, consultez GetObjectAclRequest |
Paramètres de réponse
|
Type |
Description |
|
PutObjectAclResult |
La valeur de retour. Pour plus d'informations, consultez PutObjectAclResult |
|
GetObjectAclResult |
La valeur de retour. Pour plus d'informations, consultez GetObjectAclResult |
Pour la définition complète de la méthode de définition de l'ACL d'un fichier, consultez put_object_acl.
Pour la définition complète de la méthode de récupération de l'ACL d'un fichier, consultez get_object_acl.
Types d'ACL
Le tableau suivant décrit les ACL configurables pour un objet :
|
ACL |
Description |
Valeur de l'ACL |
|
Hériter du bucket |
Les fichiers héritent des autorisations d'accès du bucket. |
default |
|
Privé |
Seuls le propriétaire du fichier et les utilisateurs autorisés peuvent lire et écrire le fichier. Les autres utilisateurs ne peuvent pas y accéder. |
private |
|
Lecture publique |
Seuls le propriétaire du fichier et les utilisateurs autorisés peuvent lire et écrire le fichier. Les autres utilisateurs peuvent uniquement lire le fichier. Utilisez cette autorisation avec prudence. |
public-read |
|
Lecture-écriture publique |
Tous les utilisateurs peuvent lire et écrire le fichier. Utilisez cette autorisation avec prudence. |
public-read-write |
L'ACL d'un objet est prioritaire sur celle du bucket qui le contient. Par exemple, si l'ACL d'un bucket est définie sur « privé » et que l'ACL d'un objet dans ce bucket est définie sur « lecture-écriture publique », tous les utilisateurs disposent des autorisations de lecture et d'écriture sur l'objet. Si l'ACL d'un objet n'est pas configurée, elle est identique à celle du bucket dans lequel l'objet est stocké.
Exemple de code
L'exemple de code suivant permet de configurer et de récupérer l'ACL d'un objet.
import argparse
import alibabacloud_oss_v2 as oss
# Create a command-line argument parser.
parser = argparse.ArgumentParser(description="put object acl sample")
# Add required parameters: region, bucket name, object key, and access control list (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)
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
parser.add_argument('--key', help='The name of the object.', required=True)
parser.add_argument('--acl', help='Specify the access permission ACL for the object.', required=True)
def main():
# Parse command-line arguments.
args = parser.parse_args()
# Load access credential information from environment variables.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Use the default configurations of the SDK.
cfg = oss.config.load_default()
# Set the credential provider.
cfg.credentials_provider = credentials_provider
# Set the region provided by the user.
cfg.region = args.region
# If an endpoint is provided, set the endpoint in the configuration.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# Create an OSS client.
client = oss.Client(cfg)
# Set the ACL of the object.
result = client.put_object_acl(oss.PutObjectAclRequest(
bucket=args.bucket, # The bucket name.
key=args.key, # The object key.
acl=args.acl, # The new ACL value.
))
# Print the output information after setting the ACL.
print(f'status code: {result.status_code},'
f' request id: {result.request_id},'
f' version id: {result.version_id},'
)
# Obtain and print the current ACL settings of the object.
result = client.get_object_acl(oss.GetObjectAclRequest(
bucket=args.bucket,
key=args.key,
))
print(f'status code: {result.status_code},'
f' request id: {result.request_id},'
f' acl: {result.acl},'
f' version id: {result.version_id},'
)
# Call the main function when this script is run directly.
if __name__ == "__main__":
main()
Références
Pour l'exemple de code complet permettant de définir l'ACL d'un fichier, consultez put_object_acl.py.
Pour l'exemple de code complet permettant de récupérer l'ACL d'un fichier, consultez get_object_acl.py.