このトピックでは、すべてのオブジェクト、特定の数のオブジェクト、および名前に特定のプレフィックスが含まれるオブジェクトをObject Storage Service (OSS) バケットに一覧表示する方法について説明します。
変更方法
list
またはlistV2
メソッドを呼び出して、バケット内の最大1,000個のオブジェクトを一度に一覧表示できます。 さまざまな方法でオブジェクトを一覧表示するパラメーターを設定できます。 たとえば、特定の開始位置からオブジェクトを一覧表示したり、特定のディレクトリ内のオブジェクトとサブディレクトリを一覧表示したり、ページごとにオブジェクトを一覧表示したりするようにパラメーターを設定できます。 次のセクションでは、listメソッドとlistV2メソッドの違いについて説明します。
list
メソッドを呼び出してオブジェクトを一覧表示すると、デフォルトでオブジェクト所有者に関する情報が返されます。listV2
メソッドを呼び出してオブジェクトを一覧表示する場合、fetch-ownerパラメーターを設定して、応答にオブジェクト所有者に関する情報を含めるかどうかを指定する必要があります。説明バージョン管理されたバケット内のオブジェクトを一覧表示するには、
listV2
メソッドを呼び出すことを推奨します。
次の表に、list
メソッドとlistV2
メソッドを呼び出してオブジェクトを一覧表示するときに設定できるパラメーターを示します。
listメソッドを呼び出してオブジェクトを一覧表示する
次の表に、listメソッドを呼び出してオブジェクトを一覧表示するときに設定できるパラメーターを示します。
パラメーター
Type
説明
prefix
String
リストされたオブジェクトの名前に含める必要があるプレフィックス。
delimiter
String
オブジェクトを名前でグループ化するために使用される文字。
marker
String
リスト操作の開始元となるオブジェクトの名前。 このパラメーターを指定すると、markerパラメーターの値の後に名前がアルファベット順に表示されるオブジェクトが返されます。
max-keys
番号 | 文字列
返されるオブジェクトの最大数。
encoding-type
'url' |''
レスポンス内のオブジェクト名がURLエンコードされていることを指定します。
listV2メソッドを呼び出してオブジェクトを一覧表示する
次の表に、listV2メソッドを呼び出してオブジェクトを一覧表示するときに設定できるパラメーターを示します。
パラメーター
Type
説明
prefix
String
リストされたオブジェクトの名前に含める必要があるプレフィックス。
continuation-token
String
オブジェクトリストの取得元の位置を指定するトークン。
delimiter
String
オブジェクトを名前でグループ化するために使用される文字。
max-keys
番号 | 文字列
返されるオブジェクトの最大数。
start-after
String
リスト操作の開始元となるオブジェクトの名前。 このパラメーターを指定すると、start-afterパラメーターの値のアルファベット順の後に名前が表示されるオブジェクトが返されます。
fetch-owner
Boolean
レスポンスにオブジェクト所有者に関する情報を含めるかどうかを指定します。
encoding-type
'url' |''
レスポンス内のオブジェクト名がURLエンコードされていることを指定します。
単純なリストを使用してオブジェクトをリストする
次のサンプルコードでは、指定したバケット内のオブジェクトを一覧表示する方法の例を示します。 デフォルトでは、最大100個のオブジェクトが一覧表示されます。
listメソッドを呼び出してオブジェクトを一覧表示する
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、 // バケットの名前を指定します。 bucket: 'yourbucketname' }); async関数list () { // デフォルトでは、パラメーターを指定しない場合、最大100個のオブジェクトを返すことができます。 const result = await client.list(); console.log (結果); } list();
listV2メソッドを呼び出してオブジェクトを一覧表示する
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、 // バケットの名前を指定します。 bucket: 'yourbucketname' }); async関数list () { // デフォルトでは、パラメーターを指定しない場合、最大100個のオブジェクトを返すことができます。 const result = await client.listV2(); console.log (結果); } list();
バケット内の指定数のオブジェクトを一覧表示する
次のサンプルコードでは、max-keysパラメーターを設定して、バケット内の指定した数のオブジェクトを一覧表示する方法の例を示します。
listメソッドを呼び出してオブジェクトを一覧表示する
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、 // バケットの名前を指定します。 bucket: 'yourbucketname' }); async関数list () { const result = await client.list({ // アルファベット順の最初の10個のオブジェクトが返されるように指定します。 "max-keys": 10 }); console.log (結果); } list();
listV2メソッドを呼び出してオブジェクトを一覧表示する
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、 // バケットの名前を指定します。 bucket: 'yourbucketname' }); async関数list () { const result = await client.listV2({ // アルファベット順の最初の10個のオブジェクトが返されるように指定します。 "max-keys": 10 }); console.log (結果); } list();
指定されたプレフィックスを名前に含むオブジェクトのリスト
次のサンプルコードでは、prefixパラメーターを設定して、名前に指定されたプレフィックスが含まれるオブジェクトをバケットに一覧表示する方法の例を示します。
listメソッドを呼び出してオブジェクトを一覧表示する
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、 // バケットの名前を指定します。 bucket: 'yourbucketname' }); async関数list () { const result = await client.list({ // 10個のオブジェクトをリストします。 "max-keys": 10、 // 名前にfoo /プレフィックスが含まれるオブジェクトをリストします。 プレフィックス: 'foo/' }); console.log (結果); } list();
listV2メソッドを呼び出してオブジェクトを一覧表示する
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、 // バケットの名前を指定します。 bucket: 'yourbucketname' }); async関数list () { const result = await client.listV2({ // 10個のオブジェクトをリストします。 "max-keys": 10、 // 名前にfoo /プレフィックスが含まれるオブジェクトをリストします。 プレフィックス: 'foo/' }); console.log (結果); } list();
指定されたオブジェクト名の後に名前がアルファベット順であるオブジェクトを一覧表示する
次のサンプルコードでは、markerまたはstartAfterパラメーターで指定された文字列の後に名前がアルファベット順に表示されるオブジェクトを一覧表示する方法の例を示します。
listメソッドを呼び出してオブジェクトを一覧表示する
リスト操作の開始元となるオブジェクトの名前は、markerパラメーターで指定します。
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、 // バケットの名前を指定します。 bucket: 'yourbucketname' }); // オブジェクト名テストの後に名前がアルファベット順になっているオブジェクトを一覧表示します。 デフォルトでは、最大100個のオブジェクトが一覧表示されます。 const marker = 'test' async関数list () { const result = await client.list({ marker }); console.log (結果); } list();
listV2メソッドを呼び出してオブジェクトを一覧表示する
リスト操作の開始元となるオブジェクトの名前は、startAfterパラメーターで指定します。
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、 // バケットの名前を指定します。 bucket: 'yourbucketname' }); async関数list () { const result = await client.listV2({ // a /フォルダ内のa/bの後に名前がアルファベット順になっているオブジェクトとサブフォルダを一覧表示します。 delimiter: '/', プレフィックス: 'a/'、 'start-after ': 'a/b' }); console.log(result.objects, result.prefixes); } list();
バケット内のすべてのオブジェクトをページごとに一覧表示する
次のサンプルコードでは、指定したバケット内のすべてのオブジェクトをページごとに一覧表示する方法の例を示します。 max-keysパラメーターを設定して、各ページに一覧表示できるオブジェクトの最大数を指定できます。
listメソッドを呼び出してオブジェクトを一覧表示する
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、 // バケットの名前を指定します。 bucket: 'yourbucketname' }); let marker = null; // 各ページに最大20個のオブジェクトを一覧表示します。 const maxKeys = 20; async関数list () { do { const result = await client.list({ マーカー: マーカー、 'max-keys': maxKeys }); marker = result.nextMarker; console.log (結果); } while (マーカー); } list();
listV2メソッドを呼び出してオブジェクトを一覧表示する
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、 // バケットの名前を指定します。 bucket: 'yourbucketname' }); async関数list () { let continuationToken = null; // 各ページに最大20個のオブジェクトを一覧表示します。 const maxKeys = 20; do { const result = await client.listV2({ 'continuation-token': continuationToken、 'max-keys': maxKeys }); continuationToken = result.nextContinuationToken; console.log (結果); } while(continuationToken) } list();
オブジェクトとオブジェクト所有者情報の一覧表示
次のサンプルコードでは、オブジェクトとオブジェクト所有者情報を一覧表示する方法の例を示します。
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、
// バケットの名前を指定します。
bucket: 'yourbucketname'
});
// デフォルトでは、オブジェクト所有者に関する情報はリストされません。 レスポンスにオブジェクト所有者情報を含めるには、fetch-ownerパラメーターをtrueに設定する必要があります。
async関数list () {
const result = await client.listV2({
'fetch-owner': true
});
console.log(result.objects);
}
list();
指定したフォルダ内のオブジェクトとサブフォルダの一覧表示
OSSはフラット構造を使用してオブジェクトを格納します。 ディレクトリは、名前がスラッシュ (/) で終わるゼロバイトのオブジェクトです。 ディレクトリをアップロードおよびダウンロードできます。 デフォルトでは、名前がスラッシュ (/) で終わるオブジェクトは、OSSコンソールにディレクトリとして表示されます。 ディレクトリ作成の完全なサンプルコードについては、『GitHub』をご参照ください。
リクエストでプレフィックスをディレクトリ名に設定すると、プレフィックスを含む名前のオブジェクトとサブディレクトリが一覧表示されます。
リクエストでプレフィックスを指定し、区切り文字をスラッシュ (/) に設定すると、ディレクトリ内で指定されたプレフィックスで始まる名前のオブジェクトとサブディレクトリが一覧表示されます。 各サブディレクトリは、CommonPrefixesで単一の結果要素としてリストされます。 これらのサブディレクトリ内のオブジェクトおよびディレクトリはリストされません。
次のオブジェクトがバケットに格納されているとします。
foo/x
foo/y
foo /バー /a
foo /バー /b
foo/hello/C/1
foo/hello/C/2
...
foo/hello/C/9999
次のサンプルコードでは、list
またはlistV2
メソッドを呼び出して、指定したフォルダー内のオブジェクトとサブフォルダーを一覧表示する方法の例を示します。
listメソッドを呼び出してオブジェクトを一覧表示する
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、 // バケットの名前を指定します。 bucket: 'yourbucketname' }); // listDir関数を呼び出し、さまざまなプレフィックスを設定して、必要なオブジェクトを一覧表示します。 async関数listDir(dir) { try { const result = await client.list({ プレフィックス: dir、 区切り文字: '/' }); if (result && result.prefixes) { result.prefixes.forEach(subDir => { console.log('SubDir: % s', subDir); }); } if (result && result.objects) { result.objects.forEach(obj => { console.log('Object: % s' 、obj.name); }); } } catch (e) { console.log(e); } } listDir('foo/'); // 期待される結果: // SubDir: foo/bar / // SubDir: foo/hello / // オブジェクト: foo/x // オブジェクト: foo/y listDir('foo/bar/'); // 期待される結果: // オブジェクト: foo/bar/a // オブジェクト: foo/bar/b listDir('foo/hello/C/'); // 期待される結果: // オブジェクト: foo/hello/C/1 // オブジェクト: foo/hello/C/2 //... // オブジェクト: foo/hello/C/9999
listV2メソッドを呼び出してオブジェクトを一覧表示する
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、 // バケットの名前を指定します。 bucket: 'yourbucketname' }); // listV2Dir関数を呼び出し、さまざまなプレフィックスを設定して、必要なオブジェクトを一覧表示します。 async関数listV2Dir(dir) { try { const result = await client.listV2({ プレフィックス: dir、 区切り文字: '/' }); if (result && result.prefixes) { result.prefixes.forEach(subDir => { console.log('SubDir: % s', subDir); }); } if (result && result.objects) { result.objects.forEach(obj => { console.log('Object: % s' 、obj.name); }); } } catch (e) { console.log(e); } } listDir('foo/'); // 期待される結果: // SubDir: foo/bar / // SubDir: foo/hello / // オブジェクト: foo/x // オブジェクト: foo/y listDir('foo/bar/'); // 期待される結果: // オブジェクト: foo/bar/a // オブジェクト: foo/bar/b listDir('foo/hello/C/'); // 期待される結果: // オブジェクト: foo/hello/C/1 // オブジェクト: foo/hello/C/2 //... // オブジェクト: foo/hello/C/9999
参考資料
オブジェクトの一覧表示に使用する完全なサンプルコードについては、『GitHub』をご参照ください。
オブジェクトを一覧表示するために呼び出すAPI操作の詳細については、「ListObjects (GetBucket) 」および「ListObjectsV2 (GetBucketV2) 」をご参照ください。