このトピックでは、バージョン管理が有効なバケットにファイル (オブジェクト) をアップロードする方法について説明します。
シンプルなアップロード
バージョン管理が有効なバケットでは、Object Storage Service (OSS) は新しく追加されたオブジェクトごとに一意のバージョン ID を自動的に生成し、その ID を `x-oss-version-id` 応答ヘッダーで返します。バージョン管理が一時停止されているバケットでは、新しく追加されたオブジェクトのバージョン ID は "null" になります。同じ名前のオブジェクトをアップロードすると、新しいオブジェクトが以前のオブジェクトを上書きします。OSS は、オブジェクトの 1 つのバージョンのみが "null" のバージョン ID を持つことを保証します。
次のコードは、シンプルなアップロードを実行する方法を示しています。
const OSS = require('ali-oss');
const client = new OSS({
// バケットが所在するリージョンを設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを oss-cn-hangzhou に設定します。
region: 'yourregion',
// 環境変数からアクセス認証情報を取得します。このコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// ご利用のバケット名を設定します。
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']); // アップロードされたオブジェクトのバージョン ID を表示します。
}
put();追加アップロード
バージョン管理が有効なバケットでは、追加可能なオブジェクトの現在のバージョンに対してのみ追加操作 (AppendObject) を実行できます。追加可能なオブジェクトの以前のバージョンに対して AppendObject 操作を実行することはできません。
追加可能なオブジェクトの現在のバージョンに対して AppendObject 操作を実行しても、OSS はそのオブジェクトの以前のバージョンを作成しません。
追加可能なオブジェクトの現在のバージョンに対して PutObject または DeleteObject 操作を実行すると、OSS は現在のバージョンを以前のバージョンとして保存します。このオブジェクトにデータを追加することはできなくなります。
通常のオブジェクトや削除マーカーなど、追加不可能なオブジェクトの現在のバージョンに対して AppendObject 操作を実行することはできません。
次のコードは、追加アップロードを実行する方法を示しています。
const OSS = require('ali-oss');
const client = new OSS({
// バケットが所在するリージョンを設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを oss-cn-hangzhou に設定します。
region: 'yourregion',
// 環境変数からアクセス認証情報を取得します。このコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// ご利用のバケット名を設定します。
bucket: 'yourbucketname'
});
async function append() {
await client.append('filename', path.normalize('D:\\localpath\\examplefile.txt'), {
partSize: 100 * 1024
});
}
append();マルチパートアップロード
バージョン管理が有効なバケットでは、`multipartUpload` メソッドを呼び出してファイルをパートに分けてアップロードできます。マルチパートアップロードが完了すると、OSS はファイル全体に対して一意のバージョン ID を生成し、その ID を `x-oss-version-id` 応答ヘッダーで返します。
次のコードは、マルチパートアップロードを実行する方法を示しています。
const OSS = require('ali-oss');
const client = new OSS({
// バケットが所在するリージョンを設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを oss-cn-hangzhou に設定します。
region: 'yourregion',
// 環境変数からアクセス認証情報を取得します。このコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// ご利用のバケット名を設定します。
bucket: 'yourbucketname'
});
async function multipartUpload() {
const result = await client.multipartUpload('filename', path.normalize('D:\\localpath\\examplefile.txt'), {
partSize: 100 * 1024
});
// アップロードされたオブジェクトのバージョン ID を表示します。
console.log(result.res.headers['x-oss-version-id']);
}
multipartUpload();関連ドキュメント
シンプルなアップロードの詳細については、「PutObject」をご参照ください。
追加アップロードの詳細については、「AppendObject」をご参照ください。
マルチパートアップロードの詳細については、「CompleteMultipartUpload」をご参照ください。