É necessário restaurar objetos Archive, Cold Archive e Deep Cold Archive antes de lê-los. A restauração de um objeto gera uma cópia temporária. Essa cópia coexiste com o objeto original, e o sistema a exclui automaticamente após a expiração do estado restaurado. Este tópico descreve como usar o OSS Python SDK para restaurar esses objetos.
Observações
O código de exemplo deste tópico usa um endpoint público na região China (Hangzhou) (ID da região:
cn-hangzhou) como exemplo. Para acessar o OSS a partir de outro product da Alibaba Cloud na mesma região, use um endpoint interno. Para obter mais informações sobre os endpoints de cada região do OSS, consulte OSS regions and endpoints.Para restaurar um objeto, você deve ter a permissão
oss:RestoreObject. Para obter mais informações, consulte Grant custom permissions to a RAM user.
Definição do método
restore_object(request: RestoreObjectRequest, **kwargs) → RestoreObjectResult
Parâmetros da requisição
|
Parâmetro |
Tipo |
Descrição |
|
request |
RestoreObjectRequest |
Os parâmetros da requisição. Para obter mais informações, consulte RestoreObjectRequest |
A tabela a seguir descreve os parâmetros comuns do RestoreObjectRequest.
|
Parâmetro |
Tipo |
Descrição |
|
bucket |
str |
O nome do bucket. |
|
key |
str |
O nome do objeto. |
|
version_id |
str |
O ID da versão do objeto a ser restaurado. Caso não defina este parâmetro, o sistema restaura a versão mais recente do objeto. |
|
restore_request |
RestoreRequest |
Os parâmetros da requisição de restauração. Para obter mais informações, consulte RestoreRequest. |
A tabela a seguir descreve os parâmetros do RestoreRequest.
|
Parâmetro |
Tipo |
Descrição |
|
days |
int |
A duração durante a qual o objeto permanece no estado restaurado. Para obter mais informações, consulte Restore objects. |
|
tier |
str |
O tempo necessário para restaurar o objeto. Para obter mais informações, consulte Restore objects. |
Valores de retorno
|
Tipo |
Descrição |
|
RestoreObjectResult |
O valor de retorno. Para obter mais informações, consulte RestoreObjectResult. |
Para a definição completa do método, consulte restore_object.py.
Código de exemplo
Use o código a seguir para restaurar objetos 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()
Referências
Para o código de exemplo completo de restauração de objetos, consulte restore_object.py.
Para obter mais informações sobre como restaurar objetos, consulte Restore objects.