このトピックでは、バージョン管理が有効になっている場合に、バケット内のすべてのオブジェクト、指定された数のオブジェクト、または指定されたプレフィックスを持つオブジェクトをリストする方法について説明します。
バケット内のすべてのオブジェクトに関する情報のリスト
次のコードは、指定されたバケット内の削除マーカーを含むすべてのオブジェクトのバージョン情報をリストする方法を示しています。
const OSS = require("ali-oss");
const client = new OSS({
// バケットが配置されているリージョンに region を設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、region を 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 getObjectVersions() {
let nextKeyMarker = null;
let nextVersionMarker = null;
let versionListing = null;
do {
versionListing = await client.getBucketVersions({
keyMarker: nextKeyMarker,
versionIdMarker: nextVersionMarker,
});
versionListing.objects.forEach((o) => {
console.log(`${o.name}, ${o.versionId}`);
});
versionListing.deleteMarker.forEach((o) => {
console.log(`${o.name}, ${o.versionId}`);
});
nextKeyMarker = versionListing.NextKeyMarker;
nextVersionMarker = versionListing.NextVersionIdMarker;
} while (versionListing.isTruncated);
}
getObjectVersions();指定されたプレフィックスを持つオブジェクトのバージョン情報のリスト
次のコードは、指定されたプレフィックスを持つオブジェクトのバージョン情報をリストする方法を示しています。
const OSS = require("ali-oss");
const client = new OSS({
// バケットが配置されているリージョンに region を設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、region を 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'
});
// "test-" プレフィックスを持つオブジェクトのバージョン情報をリストします。
async function getObjectVersionsByPrefix() {
let nextKeyMarker = null;
let nextVersionMarker = null;
let versionListing = null;
const prefix = 'test-'
do {
versionListing = await client.getBucketVersions({
keyMarker: nextKeyMarker,
versionIdMarker: nextVersionMarker,
prefix
})
versionListing.objects.forEach(o => {
console.log(`${o.name}, ${o.versionId}`)
})
versionListing.deleteMarker.forEach(o => {
console.log(`${o.name}, ${o.versionId}`)
})
nextKeyMarker = versionListing.NextKeyMarker;
nextVersionMarker = versionListing.NextVersionIdMarker;
} while (versionListing.isTruncated);
}
getObjectVersionsByPrefix();指定された数のオブジェクトのバージョン情報のリスト
次のコードは、指定された数のオブジェクトのバージョン情報をリストする方法を示しています。
const OSS = require("ali-oss");
const client = new OSS({
// バケットが配置されているリージョンに region を設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、region を 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 getObjectVersionByNumber() {
// 最大 100 個のオブジェクトのバージョン情報をリストします。
const versionListing = await client.getBucketVersions({
"max-keys": 100,
});
// オブジェクトのバージョン情報を取得します。バージョン管理が無効になっている場合、VersionId は "none" です。
versionListing.objects.forEach((o) => {
console.log(`${o.name}, ${o.versionId}`);
});
versionListing.deleteMarker.forEach((o) => {
console.log(`${o.name}, ${o.versionId}`);
});
}
getObjectVersionByNumber();フォルダ機能
OSS にはネイティブなフォルダの概念はありません。代わりに、すべての要素はオブジェクトとして格納されます。名前がスラッシュ (/) で終わる 0 KB のオブジェクトを作成することで、フォルダをシミュレートできます。このオブジェクトはアップロードおよびダウンロードできます。OSS コンソールでは、名前がスラッシュ (/) で終わるオブジェクトがフォルダとして表示されます。
`delimiter` パラメーターと `prefix` パラメーターを使用して、フォルダ機能をシミュレートできます。
`prefix` パラメーターをフォルダ名に設定すると、OSS は指定されたプレフィックスで始まる名前を持つすべてのオブジェクトをリストします。これにより、フォルダとそのサブディレクトリ内のすべてのオブジェクトが返されます。
`prefix` パラメーターを設定し、`delimiter` パラメーターをスラッシュ (/) に設定すると、OSS はそのフォルダの最上位レベルのオブジェクトとサブディレクトリのみをリストします。サブディレクトリは `CommonPrefixes` 要素で返され、それらのサブディレクトリ内のオブジェクトはリストされません。
あるバケットに oss.jpg、fun/test.jpg、fun/movie/001.avi、fun/movie/007.avi4 という 4 つのオブジェクトが含まれていると仮定します。スラッシュ (/) はフォルダの区切り文字として使用されます。次の例は、フォルダをシミュレートしてオブジェクトをリストする方法を示しています。
ルートディレクトリ内のオブジェクトのバージョン情報のリスト
次のコードは、ルートディレクトリ内のオブジェクトのバージョン情報をリストする方法を示しています。
const OSS = require("ali-oss");
const client = new OSS({
// バケットが配置されているリージョンに region を設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、region を 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'
});
// delimiter パラメーターをスラッシュ (/) に設定して、ルートディレクトリ内のオブジェクトのバージョン情報とフォルダ名をリストします。
async function getRootObjectVersions() {
let nextKeyMarker = null;
let nextVersionMarker = null;
let versionListing = null;
do {
versionListing = await client.getBucketVersions({
keyMarker: nextKeyMarker,
versionIdMarker: nextVersionMarker,
delimiter: "/",
});
nextKeyMarker = versionListing.NextKeyMarker;
nextVersionMarker = versionListing.NextVersionIdMarker;
console.log(versionListing);
} while (versionListing.isTruncated);
}
getRootObjectVersions();ディレクトリ内のオブジェクトとサブディレクトリのリスト
次のコードは、指定されたディレクトリ内のオブジェクトとサブディレクトリをリストする方法を示しています。
const OSS = require("ali-oss");
const client = new OSS({
// バケットが配置されているリージョンに region を設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、region を 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'
});
// prefix パラメーターを設定して、foo/ ディレクトリ内のすべてのファイルとフォルダを取得します。また、delimiter パラメーターをスラッシュ (/) に設定して、フォルダの区切り文字として機能させます。
async function getObjectVersionsByPrefixAndDirectory() {
let nextKeyMarker = null;
let nextVersionMarker = null;
let versionListing = null;
let prefix = "foo/";
do {
versionListing = await client.getBucketVersions({
keyMarker: nextKeyMarker,
versionIdMarker: nextVersionMarker,
prefix,
delimiter: "/",
});
nextKeyMarker = versionListing.NextKeyMarker;
nextVersionMarker = versionListing.NextVersionIdMarker;
console.log(versionListing);
} while (versionListing.isTruncated);
}
getObjectVersionsByPrefixAndDirectory();リファレンス
オブジェクトをリストするための API 操作の詳細については、「ListObjectVersions (GetBucketVersions)」をご参照ください。