このトピックでは、バージョン管理が有効なバケットから、単一のファイル、複数のファイル、または指定されたプレフィックスを持つファイルを削除する方法について説明します。
バージョン管理が有効なバケットでの削除動作
バージョン管理が有効なバケットでの削除動作は次のとおりです:
バージョン ID を指定しない削除 (一時的な削除):
バージョン ID を指定せずにオブジェクトを削除した場合、OSS はオブジェクトを完全に削除しません。代わりに、OSS は削除マーカーを追加し、それがオブジェクトの現在のバージョンになります。オブジェクトを取得しようとすると、OSS は削除マーカーを検出し、
404 Not Foundエラーを返します。応答には、header:x-oss-delete-marker = trueと、新しい削除マーカーのバージョン ID がx-oss-version-idに含まれます。x-oss-delete-markerの値が true の場合、返されたx-oss-version-idに対応するバージョンが削除マーカーであることを示します。バージョン ID を指定した削除 (完全な削除):
削除操作で `versionId` を指定すると、OSS は
paramsパラメーターで指定されたversionIdを持つオブジェクトバージョンを完全に削除します。`versionId` が文字列 "null" であるオブジェクトバージョンを削除するには、paramsパラメーターにparams['versionId'] = "null"を追加します。この場合、OSS は文字列 "null" を `versionId` として扱い、対応するオブジェクトバージョンを削除します。
単一ファイルの削除
以下の例では、単一のオブジェクトを完全に削除、または一時的に削除する方法を示します。
完全な削除
次のコードは、versionId を指定してオブジェクトを完全に削除する方法を示しています:
const OSS = require("ali-oss"); const client = new OSS({ // バケットが配置されているリージョンを yourregion に置き換えます。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを 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, // yourbucketname をバケット名に置き換えます。 bucket: 'yourbucketname' }); // オブジェクトの versionId を指定します。 const versionId = "versionId"; // オブジェクトを指定します。 const objectName = "exampleobject.txt"; async function deleteVersionObject() { const result = await client.delete(objectName, { versionId, }); console.log(result); } deleteVersionObject();一時的な削除
次のコードは、versionId を指定せずにオブジェクトを一時的に削除する方法を示しています:
const OSS = require('ali-oss'); const client = new OSS({ // バケットが配置されているリージョンを yourregion に置き換えます。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを 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, // yourbucketname をバケット名に置き換えます。 bucket: 'yourbucketname' }); // versionId を指定せずにオブジェクトを一時的に削除します。この操作により、オブジェクトに削除マーカーが追加されます。 // オブジェクトを指定します。 const objectName = "exampleobject.txt"; async function deleteObject() { const result = await client.delete(objectName); console.log(result); } deleteObject();
複数ファイルの削除
以下の例では、複数のオブジェクトを完全に削除、または一時的に削除する方法を示します。
完全な削除
次のコードは、versionId を指定して複数のオブジェクトとその削除マーカーを完全に削除する例を示しています:
const OSS = require('ali-oss'); const client = new OSS({ // バケットが配置されているリージョンを yourregion に置き換えます。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを 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, // yourbucketname をバケット名に置き換えます。 bucket: 'yourbucketname' }); // versionId を指定して、複数のオブジェクトまたは削除マーカーを削除します。 const names = [ { key: 'key1.js', versionId: 'versionId1' }, { key: 'key2.js', versionId: 'versionId2' } ]; async function deleteMulti() { const result = await client.deleteMulti(names); console.log(result); } deleteMulti();一時的な削除
次のコードは、versionId を指定せずに複数のオブジェクトを一時的に削除する方法を示しています。一時的に削除されたオブジェクトバージョンは回復できます。
const OSS = require('ali-oss'); const client = new OSS({ // バケットが配置されているリージョンを yourregion に置き換えます。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを 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, // yourbucketname をバケット名に置き換えます。 bucket: 'yourbucketname' }); const names = ['key1.js', 'key2.js']; async function deleteMulti() { // versionId を指定せずに複数のオブジェクトを削除します。 const result = await client.deleteMulti(names); console.log(result); } deleteMulti();
指定されたプレフィックスを持つファイルの削除
次のコードは、指定されたプレフィックスを持つファイルを削除する方法を示しています:
const OSS = require("ali-oss");
const client = new OSS({
// バケットが配置されているリージョンを yourregion に置き換えます。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを 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,
// yourbucketname をバケット名に置き換えます。
bucket: 'yourbucketname'
});
// 削除するオブジェクトのプレフィックスを指定します。
const prefix = "test";
async function deleteMutiPrefix() {
// 指定されたプレフィックスを持つオブジェクトの versionId 情報を取得します。
const list = await client.getBucketVersions({
prefix: prefix,
});
for (let i = 0; i < list.objects.length; i++) {
const obj = list.objects[i];
// 指定されたプレフィックスを持つオブジェクトを削除します。
const versionId = obj.versionId;
await client.delete(obj.name, {
versionId,
});
}
}
deleteMutiPrefix();関連ドキュメント
DeleteObject API 操作の詳細については、「DeleteObject」をご参照ください。
DeleteMultipleObjects API 操作の詳細については、「DeleteMultipleObjects」をご参照ください。