Objetos do tipo Archive, Cold Archive e Deep Cold Archive precisam ser restaurados antes de serem lidos. Este tópico descreve como restaurar objetos Archive e Cold Archive.
Observações
Somente objetos Archive, Cold Archive e Deep Cold Archive oferecem suporte à operação RestoreObject.
Neste tópico, usa-se o endpoint público da região China (Hangzhou). Para acessar o OSS a partir de outros serviços da Alibaba Cloud na mesma região, use um endpoint interno. Para obter detalhes sobre regiões e endpoints compatíveis, consulte Regions and endpoints.
Este tópico demonstra a criação de uma instância OSSClient com um endpoint do OSS. Para configurações alternativas, como uso de domínio personalizado ou autenticação com credenciais do Security Token Service (STS), consulte Create an OssClient.
Para restaurar um arquivo, é necessário ter a permissão
oss:RestoreObject. Para obter mais informações, consulte Grant custom permissions to a RAM user.
Restaurar um objeto Archive
O código a seguir mostra como restaurar um objeto Archive:
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;
// 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 set.
$provider = new EnvironmentVariableCredentialsProvider();
// The Endpoint is set to the China (Hangzhou) region. Replace it with the actual Endpoint.
$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// Specify the bucket name. Example: examplebucket.
$bucket= "examplebucket";
// Specify the full path of the Archive object. Do not include the bucket name. Example: srcexampleobject.txt.
$object = "srcexampleobject.txt";
try {
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
// Restore the file.
$ossClient->restoreObject($bucket, $object);
} catch (OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
Restaurar um objeto Cold Archive
O código a seguir mostra como restaurar um objeto Cold Archive:
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;
use OSS\Model\RestoreConfig;
// 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 set.
$provider = new EnvironmentVariableCredentialsProvider();
// The Endpoint is set to the China (Hangzhou) region. Replace it with the actual Endpoint.
$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// Specify the bucket name. Example: examplebucket.
$bucket= "examplebucket";
// Specify the full path of the Cold Archive object. Do not include the bucket name. Example: srcexampleobject.txt.
$object = "srcexampleobject.txt";
try {
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
// The number of days for which the object remains in the restored state. Valid values: 1 to 7.
$day = 3;
// The restoration priority. This is set to Bulk, which means the object is restored within 5 to 12 hours.
// To restore the object within 2 to 5 hours, set this parameter to Standard. To restore the object within 1 hour, set this parameter to Expedited.
$tier = "Bulk";
$config = new RestoreConfig($day,$tier);
$options = array(
OssClient::OSS_RESTORE_CONFIG => $config
);
$result = $ossClient->restoreObject($bucket, $object,$options);
} catch (OssException $e) {
printf($e->getMessage() . "\n");
return;
}
Referências
Para obter mais informações sobre a operação de API utilizada para restaurar arquivos Archive e Cold Archive, consulte RestoreObject.