Restaure objetos Archive, Cold Archive e Deep Cold Archive antes de lê-los. A restauração cria uma cópia temporária que coexiste com o objeto original e é excluída 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 produto 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 Regiões e endpoints do OSS.Para restaurar um objeto, você precisa da permissão
oss:RestoreObject. Para obter mais informações, consulte Conceder permissões personalizadas a um usuário RAM.
Definição do método
restore_object(request: RestoreObjectRequest, **kwargs) → RestoreObjectResult
Parâmetros da solicitação
|
Parâmetro |
Tipo |
Descrição |
|
request |
RestoreObjectRequest |
Os parâmetros da solicitação. Para obter mais informações, consulte RestoreObjectRequest |
A tabela a seguir descreve os parâmetros comuns de 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. Se você não definir esse parâmetro, a versão mais recente do objeto será restaurada. |
|
restore_request |
RestoreRequest |
Os parâmetros da solicitação de restauração. Para obter mais informações, consulte RestoreRequest. |
A tabela a seguir descreve os parâmetros de 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 Restaurar objetos. |
|
tier |
str |
O tempo necessário para restaurar o objeto. Para obter mais informações, consulte Restaurar objetos. |
Valores de retorno
|
Tipo |
Descrição |
|
RestoreObjectResult |
O valor de retorno. Para obter mais informações, consulte RestoreObjectResult. |
Para obter 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 obter o código de exemplo completo sobre restauração de objetos, consulte restore_object.py.
Para obter mais informações sobre como restaurar objetos, consulte Restaurar objetos.