すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:オブジェクトを復元する

最終更新日:Dec 19, 2023

オブジェクトを読み取る前に、ArchiveオブジェクトまたはCold Archiveオブジェクトを復元する必要があります。 このトピックでは、ArchiveオブジェクトまたはCold Archiveオブジェクトを復元する方法について説明します。

使用上の注意

  • RestoreObject操作は、アーカイブおよびコールドアーカイブオブジェクトでのみ呼び出すことができます。

  • このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba Cloudサービスを使用してOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSでサポートされているリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

  • このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSTS (Security Token Service) を使用してOSSClientインスタンスを作成する場合は、「初期化」をご参照ください。

  • オブジェクトを復元するには、oss:RestoreObject権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。

Archive オブジェクトの復元

次のコードは、Archiveオブジェクトを復元する方法の例を示しています。

Aliyun.OSSを使用した

Aliyun.OSS.Model; を使用
Aliyun.OSS.Model; を使用
System.Netを使用する。System.Textを使用する。// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
var endpoint = "yourEndpoint";
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// バケットの名前を指定します。 
var bucketName = "examplebucket";
// オブジェクトのフルパスを指定します。 パスにバケット名を含めることはできません。 
var objectName = "yourObjectName";
// オブジェクトのコンテンツを指定します。 
var objectContent = "単なるクラウドではありません。";
int maxWaitTimeInSeconds = 600;
// OSSClientインスタンスを作成します。 
var client = new OssClient (エンドポイント、accessKeyId、accessKeySecret);
トライ
{
    // アーカイブバケットを作成します。 
    var bucket = client.CreateBucket(bucketName, StorageClass.Archive);
    Console.WriteLine("Create Archive bucket successed, {0} ", bucket.Name);
}
キャッチ (例外ex)
{
    Console.WriteLine("Create Archive bucket failed, {0}", ex.Message);
}
// オブジェクトをバケットにアップロードし、オブジェクトのストレージクラスをArchiveに設定します。 
トライ
{
    byte[] binaryData = Encoding.ASCII.GetBytes(objectContent);
    MemoryStream requestContent = new MemoryStream(binaryData);
    client.PutObject(bucketName, objectName, requestContent);
    Console.WriteLine("Put object successed, {0}", objectName);
}
キャッチ (例外ex)
{
    Console.WriteLine("Put object failed, {0}", ex.Message);
}
var metadata = client.GetObjectMetadata(bucketName, objectName);
string storageClass = metadata.HttpMetadata["x-oss-storage-class"] as string;
if (storageClass != "Archive")
{
    Console.WriteLine("StorageClass is {0}", storageClass);
    戻ります。}
// アーカイブオブジェクトを復元します。 
RestoreObjectResult result = client.RestoreObject(bucketName, objectName);
Console.WriteLine("RestoreObject result HttpStatusCode : {0}", result.HttpStatusCode);
if (result.HttpStatusCode != HttpStatusCode.Accepted)
{
    新しいOssException(result.RequestId + "," + result.HttpStatusCode + ",") をスローします。}
while (maxWaitTimeInSeconds > 0)
{
    var meta = client.GetObjectMetadata(bucketName, objectName);
    string restoreStatus = meta.HttpMetadata["x-oss-restore"] as string;
    if (restoreStatus != null && restoreStatus.StartsWith("継続的-要求=\" false\"", StringComparison.InvariantCultureIgnoreCase))
    {
        break;
    }
    Thread.sleep(1000);
    // 最大待機時間は1秒減少します。 
    maxWaitTimeInSeconds --;
}
if (maxWaitTimeInSeconds == 0)
{
    Console.WriteLine("RestoreObject is timeout. ");
    新しいTimeoutException() をスローします。}
else
{
    Console.WriteLine("RestoreObject is successful. ");
}

Cold Archiveオブジェクトを復元する

次のコードは、Cold Archiveオブジェクトを復元する方法の例を示しています。

Aliyun.OSSを使用した

Aliyun.OSS.Model; を使用
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
var endpoint = "yourEndpoint";
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// バケットの名前を指定します。 
var bucketName = "examplebucket";
// Cold Archiveオブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 
var objectName = "yourObjectName";

// OSSClientインスタンスを作成します。 
var client = new OssClient (エンドポイント、accessKeyId、accessKeySecret);

// Cold Archiveオブジェクトを復元します。 
var request = new RestoreObjectRequest(bucketName, objectName);

// Cold Archiveオブジェクトの復元優先度を指定します。 
// TierType.Expedited: オブジェクトは1時間以内に復元されます。 
// TierType.Standard: オブジェクトは2〜5時間以内に復元されます。 
// TierType.Bulk: オブジェクトは5〜12時間以内に復元されます。 
// 復元パラメータを設定します。 たとえば、オブジェクトの復元優先順位をExpeditedに設定し、オブジェクトが復元された状態を維持できる期間を2日に設定できます。 
// Daysパラメーターは、オブジェクトが復元された状態を維持できる期間を示します。 デフォルト値は 1 です。 このパラメーターは、アーカイブおよびコールドアーカイブオブジェクトに適用されます。 
// Tierパラメーターは、オブジェクトの復元優先度を示し、Cold Archiveオブジェクトにのみ適用されます。 
リクエスト日=2;
リクエスト。Tier = TierType.Expedited;
RestoreObjectResult result = client.RestoreObject (リクエスト);
Console.WriteLine("RestoreObject result HttpStatusCode : {0}", result.HttpStatusCode); 

参考資料

  • アーカイブおよびコールドアーカイブオブジェクトの復元に使用される完全なサンプルコードについては、GitHubをご参照ください。

  • アーカイブオブジェクトとコールドアーカイブオブジェクトを復元するために呼び出すことができるAPI操作の詳細については、「RestoreObject」をご参照ください。