オブジェクトを読み取る前に、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」をご参照ください。