再開可能なアップロードを使用してオブジェクトをobject Storage Service (OSS) にアップロードする場合、再開可能なアップロードレコードを格納するチェックポイントファイルのディレクトリを指定できます。 ネットワーク例外またはプログラムエラーのためにオブジェクトのアップロードに失敗した場合、チェックポイントファイルに記録された位置からアップロードタスクが再開されます。
現在のアップロードの進行状況は、アップロードプロセス中にチェックポイントファイルに記録されます。 プロセス中に部品のアップロードに失敗した場合、次のアップロードはチェックポイントファイルの記録された位置からタルトします。 チェックポイントファイルは、再開可能なアップロードタスクが完了すると削除されます。
使用上の注意
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba Cloudサービスを使用してOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSでサポートされているリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSTS (Security Token Service) を使用してOSSClientインスタンスを作成する場合は、「初期化」をご参照ください。
再開可能アップロードを使用するには、
oss:PutObject
権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。
サンプルコード
次のサンプルコードは、再開可能なアップロードを実行する方法の例を示します。
Aliyun.OSSを使用した
Aliyun.OSS.Common; を使用
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを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");
// バケットの名前を指定します。 例: examplebucket.
var bucketName = "examplebucket";
// オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: exampledir/exampleobject.txt。
var objectName = "exampledir/exampleobject.txt";
// アップロードするローカルファイルのフルパスを指定します。 例: D :\\ localpath\\examplefile.txt。
// デフォルトでは、ローカルパスを指定せずにexamplefile.txtなどのローカルファイル名のみを指定すると、サンプルプログラムが属するプロジェクトのパスからローカルファイルがアップロードされます。
var localFilename = "D :\\ localpath\\examplefile.txt";
// チェックポイントファイルを指定します。 チェックポイントファイルには、アップロードの進行状況に関する情報が格納されます。
string checkpointDir = "yourCheckpointDir";
// OSSClientインスタンスを作成します。
var client = new OssClient (エンドポイント、accessKeyId、accessKeySecret);
トライ
{
// UploadFileRequestを使用してパラメーターを設定します。
UploadObjectRequest request = new UploadObjectRequest(bucketName, objectName, localFilename)
{
// 各パーツのサイズを指定します。
PartSize = 8 * 1024 * 1024,
// 同時スレッドの数を指定します。
ParallelThreadCount = 3,
// checkpointDirパラメーターを指定して、再開可能なアップロードタスクの状態を格納します。これは、アップロードタスクが失敗した場合にアップロードタスクを再開するために使用されます。
// checkpointDirをnullに設定すると、再開可能なアップロードは有効にならず、オブジェクトのアップロードに失敗した場合、オブジェクトは再アップロードされます。
CheckpointDir = checkpointDir,
};
// Start resumable upload.
client.ResumableUploadObject(request);
Console.WriteLine("Resumable upload object:{0} successed", objectName);
}
キャッチ (OssException ex)
{
Console.WriteLine("Failed with error code: {0}; エラー情報: {1} 。 \nRequestID:{2}\tHostID:{3}"、
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
キャッチ (例外ex)
{
Console.WriteLine("Failed with error info: {0}" 、メッセージなど);
}
参考資料
再開可能アップロードの実行に使用される完全なサンプルコードについては、『GitHub』をご参照ください。