Dans un compartiment avec versioning activé, l'opération GetObject renvoie par défaut uniquement la version actuelle d'un objet. Vous pouvez également télécharger une version spécifique en indiquant son ID de version.
Contexte
Lorsque vous appelez l'opération GetObject sur un compartiment, l'un des cas suivants s'applique :
Si la version actuelle de l'objet est un marqueur de suppression, OSS renvoie l'erreur 404 Not Found.
Si vous spécifiez le versionId d'un objet dans le paramètre de requête, la version indiquée est renvoyée. Si vous définissez le versionId sur « null », la version de l'objet dont l'ID de version est nul est renvoyée.
Si vous tentez de récupérer un marqueur de suppression en indiquant son versionId, OSS renvoie l'erreur 405 Method Not Allowed.
Notes
Cette rubrique utilise le point de terminaison public de la région Chine (Hangzhou). Pour accéder à OSS depuis d'autres services Alibaba Cloud situés dans la même région, utilisez un point de terminaison interne. Pour plus d'informations sur les régions et les points de terminaison OSS, consultez Régions et points de terminaison.
Les identifiants d'accès sont obtenus à partir des variables d'environnement. Pour savoir comment configurer les identifiants d'accès, consultez Configurer les identifiants d'accès à l'aide du kit SDK OSS pour Python 1.0.
Cette rubrique montre comment créer une instance OSSClient avec un point de terminaison OSS. Pour d'autres configurations, telles que l'utilisation d'un domaine personnalisé ou l'authentification avec des identifiants issus du Security Token Service (STS), consultez Initialisation.
Pour télécharger un objet, vous devez disposer de l'autorisation
oss:GetObject. Pour plus d'informations, consultez Accorder une stratégie personnalisée.
Exemple de code
L'exemple de code suivant montre comment télécharger une version spécifique d'un objet :
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Obtain access credentials from environment variables. Before you run this sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Specify the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Specify the region that corresponds to the endpoint, for example, cn-hangzhou. Note that this parameter is required for V4 signatures.
region = "cn-hangzhou"
# Replace yourBucketName with the name of the bucket.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# Download a specific version of an object.
params = dict()
params['versionId'] = '<yourObjectVersionId>'
object_stream = bucket.get_object('<yourObjectName>', params=params)
# Read the content of the downloaded object.
read_content = object_stream.read()
print('get object content:', read_content)
# View the version ID of the downloaded object.
print('get object versionid:', object_stream.versionid)
# The get_object operation returns a stream. The CRC checksum is calculated only after read() is called.
# Therefore, you must perform a CRC check after the call.
if object_stream.client_crc != object_stream.server_crc:
print("The CRC checksum between client and server is inconsistent!")
Références
Pour plus de détails sur l'API, consultez GetObject.