Vous devez restaurer les objets des classes de stockage Archive, Cold Archive et Deep Cold Archive avant de pouvoir les lire. La restauration d'un objet crée une copie temporaire. Cette copie coexiste avec l'objet d'origine et est automatiquement supprimée à l'expiration de l'état restauré. Cette rubrique explique comment utiliser le SDK Python OSS pour restaurer ces objets.
Notes
Le code exemple de cette rubrique utilise un endpoint public de la région Chine (Hangzhou) (ID de région :
cn-hangzhou) à titre d'exemple. Pour accéder à OSS depuis un autre produit Alibaba Cloud dans la même région, utilisez un endpoint interne. Pour plus d'informations sur les endpoints de chaque région OSS, consultez Régions et endpoints OSS.Pour restaurer un objet, vous devez disposer de l'autorisation
oss:RestoreObject. Pour plus d'informations, consultez Accorder des autorisations personnalisées à un utilisateur RAM.
Définition de la méthode
restore_object(request: RestoreObjectRequest, **kwargs) → RestoreObjectResult
Paramètres de requête
|
Paramètre |
Type |
Description |
|
request |
RestoreObjectRequest |
Les paramètres de la requête. Pour plus d'informations, consultez RestoreObjectRequest |
Le tableau suivant décrit les paramètres courants de RestoreObjectRequest.
|
Paramètre |
Type |
Description |
|
bucket |
str |
Nom du bucket. |
|
key |
str |
Nom de l'objet. |
|
version_id |
str |
ID de version de l'objet à restaurer. Si ce paramètre n'est pas défini, la dernière version de l'objet est restaurée. |
|
restore_request |
RestoreRequest |
Paramètres de la requête de restauration. Pour plus d'informations, consultez RestoreRequest. |
Le tableau suivant décrit les paramètres de RestoreRequest.
|
Paramètre |
Type |
Description |
|
days |
int |
Durée pendant laquelle l'objet reste dans l'état restauré. Pour plus d'informations, consultez Restaurer des objets. |
|
tier |
str |
Délai de restauration de l'objet. Pour plus d'informations, consultez Restaurer des objets. |
Valeurs de retour
|
Type |
Description |
|
RestoreObjectResult |
Valeur de retour. Pour plus d'informations, consultez RestoreObjectResult. |
Pour la définition complète de la méthode, consultez restore_object.py.
Exemple de code
Utilisez le code suivant pour restaurer des objets des classes de stockage Archive, Cold Archive ou Deep Cold Archive :
import time
import argparse
import alibabacloud_oss_v2 as oss
# Create a command-line argument parser.
parser = argparse.ArgumentParser(description="restore object sample")
# Add the required command-line arguments.
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)
def main():
# Parse the incoming command-line arguments.
args = parser.parse_args()
# Load authentication information from environment variables.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Use the default SDK configurations.
cfg = oss.config.load_default()
# Set the credential provider to environment variable-based authentication.
cfg.credentials_provider = credentials_provider
# Set the region.
cfg.region = args.region
# If an endpoint is provided, set the endpoint as a configuration item.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# Create an OSS client.
client = oss.Client(cfg)
# Execute the request to restore the object.
result = client.restore_object(oss.RestoreObjectRequest(
bucket=args.bucket,
key=args.key,
restore_request=oss.RestoreRequest(
days=1,
# Optional: Set the restoration priority for Cold Archive or Deep Cold Archive objects. Valid values: Expedited, Standard, and Bulk. Default value: Standard.
# tier="Bulk",
)
))
# Print the result of the restore request.
print(f'status code: {result.status_code},'
f' request id: {result.request_id},'
f' version id: {result.version_id},'
f' restore priority: {result.restore_priority},'
)
# Loop to check whether the object is restored.
while True:
# Get the object header.
result = client.head_object(oss.HeadObjectRequest(
bucket=args.bucket,
key=args.key,
))
# Check the restored state.
if result.restore and result.restore != 'ongoing-request="true"':
print('Restore is successful')
break
# Check again after 5 seconds.
time.sleep(5)
print(result.restore)
# Program entry point.
if __name__ == "__main__":
main()
Références
Pour le code exemple complet de restauration d'objets, consultez restore_object.py.
Pour plus d'informations sur la restauration d'objets, consultez Restaurer des objets.