このトピックでは、Object Storage Service (OSS) のバージョン管理が有効なバケットにオブジェクトをアップロードする方法について説明します。
簡易アップロード
バージョン管理が有効なバケットにオブジェクトをアップロードするリクエストを開始すると、アップロードされたオブジェクトに対して一意のバージョンIDが生成され、そのバージョンIDがx-OSS-version-idヘッダーの値としてレスポンスに含まれます。 バージョン管理が一時停止されたバケットにオブジェクトをアップロードすると、OSSはオブジェクトのバージョンID nullを生成します。 アップロードしたオブジェクトの名前が既存のオブジェクトと同じ場合、既存のオブジェクトはアップロードしたオブジェクトによって上書きされます。 このように、各オブジェクトは、バージョンIDがnullであるバージョンのみを有する。
次のコードは、単純アップロードを使用してバージョン管理されたバケットにオブジェクトをアップロードする方法の例を示しています。
const OSS = require('ali-oss');
const client = new OSS({
// Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou.
region: 'yourregion',
// Obtain access credentials from environment variables. Before you run the sample code, make sure that you have configured environment variables OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET.
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// Specify the name of the bucket.
bucket: 'yourbucketname'
});
async function put() {
const result = await client.put('fileName', path.normalize('D:\\localpath\\examplefile.txt');
console.log(result.res.headers['x-oss-version-id']); // Display the version ID of the uploaded object.
}
put();
追加アップロード
バージョン管理が有効なバケットでは、AppendObject操作は、現在のバージョンの追加可能オブジェクトに対してのみ実行できます。
現在のバージョンの追加可能オブジェクトに対してAppendObject操作を実行すると、そのオブジェクトの以前のバージョンは生成されません。
現在のバージョンが追加可能オブジェクトであるオブジェクトに対してPutObjectまたはDeleteObject操作を実行すると、OSSは追加可能オブジェクトを以前のバージョンとして保存し、オブジェクトがそれ以上追加されないようにします。
通常のオブジェクトや削除マーカーなど、現在のバージョンが追加できないオブジェクトでは、AppendObject操作を実行できません。
次のコードは、追加アップロードを使用してバージョン管理されたバケットにオブジェクトをアップロードする方法の例を示しています。
const OSS = require('ali-oss');
const client = new OSS({
// Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou.
region: 'yourregion',
// Obtain access credentials from environment variables. Before you run the sample code, make sure that you have configured environment variables OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET.
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// Specify the name of the bucket.
bucket: 'yourbucketname'
});
async function append() {
await client.append('filename', path.normalize('D:\\localpath\\examplefile.txt'), {
partSize: 100 * 1024
});
}
append();
マルチパートアップロード
MultipartUploadメソッドを呼び出して、バージョン管理が有効なバケット内のオブジェクトのMultipartUploadタスクを完了すると、OSSはオブジェクトの一意のバージョンIDを生成し、レスポンスヘッダーのx-oss-version-IDフィールドとして返します。
次のコードは、マルチパートアップロードを使用してバージョン管理されたバケットにオブジェクトをアップロードする方法の例を示しています。
const OSS = require('ali-oss');
const client = new OSS({
// Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou.
region: 'yourregion',
// Obtain access credentials from environment variables. Before you run the sample code, make sure that you have configured environment variables OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET.
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// Specify the name of the bucket.
bucket: 'yourbucketname'
});
async function multipartUpload() {
const result = await client.multipartUpload('filename', path.normalize('D:\\localpath\\examplefile.txt'), {
partSize: 100 * 1024
});
// Display the version ID of the uploaded object.
console.log(result.res.headers['x-oss-version-id']);
}
multipartUpload();
関連ドキュメント
シンプルアップロードを実行するために呼び出すことができるAPI操作の詳細については、「PutObject」をご参照ください。
追加アップロードを実行するために呼び出すことができるAPI操作の詳細については、「AppendObject」をご参照ください。
マルチパートアップロードを実行するために呼び出すことができるAPI操作の詳細については、「CompleteMultipartUpload」をご参照ください。