デフォルトでは、Object Storage Service (OSS) バケットにオブジェクトを一覧表示すると、オブジェクトは辞書式の順序で返されます。 バケット内のすべてのオブジェクト、名前に指定されたプレフィックスが含まれるオブジェクト、または指定された数のオブジェクトをリストできます。
手順
OSSコンソールの使用
OSSコンソールにログインします。
左側のナビゲーションウィンドウで、バケットリスト をクリックします。
バケットリスト ページで、目的のバケットを見つけます。
バケット内のすべてのオブジェクトがページ単位で表示されます。 デフォルトでは、1ページあたり50個のオブジェクトが表示されます。
ossbrowserの使用
ossbrowserを使用して、OSSコンソールで実行できるのと同じバケットレベルの操作を実行できます。 ossbrowserの画面上の指示に従って、バケット内のオブジェクトを一覧表示できます。 ossbrowserの使用方法の詳細については、「ossbrowserの使用」をご参照ください。
OSS SDKの使用
次のサンプルコードは、一般的なプログラミング言語のOSS SDKを使用して、単純なリストを使用してバケット内のすべてのオブジェクトを一覧表示する方法の例を示しています。 他のプログラミング言語のOSS SDKを使用して要件に基づいてオブジェクトを一覧表示する方法の詳細については、「概要」をご参照ください。
com.aliyun.oss.ClientExceptionをインポートします。com.aliyun.oss.OSSをインポートします。impor t com.aliyun.oss.com mon.auth.*;
com.aliyun.oss.OSSClientBuilderをインポートします。com.aliyun.oss.OSSExceptionをインポートします。com.aliyun.oss.mo delをインポートします。*;
java.util.Listをインポートします。public classデモ {
public static void main(String[] args) throws Exception {
// この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 環境変数からアクセス資格情報を取得します。 コードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// バケットの名前を指定します。 例: examplebucket.
String bucketName = "examplebucket";
// 一覧表示するオブジェクトの名前にプレフィックスを指定します。 例: exampledir/object.
String keyPrefix = "exampledir/object";
// Create an OSSClient instance.
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
try {
// List objects. keyPrefixを指定しない場合、バケット内のすべてのオブジェクトが一覧表示されます。 keyPrefixを指定すると、指定されたプレフィックスを名前に含むオブジェクトが一覧表示されます。
ObjectListing objectListing = ossClient.listObjects(bucketName, keyPrefix);
List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
for (OSSObjectSummary s : sums) {
System.out.println("\t" + s.getKey());
}
} catch (Exception e) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "しかし、何らかの理由でエラー応答で拒否されました。");
System.out.println("エラーメッセージ:" + oe.getErrorMessage());
System.out.println("エラーコード:" + oe.getErrorCode());
System.out.println("リクエストID:" + oe.getRequestId());
System.out.println("ホストID:" + oe.getHostId());
} catch (ClientException e) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ 「ネットワークにアクセスできないなど」;
System.out.println("エラーメッセージ:" + ce.getMessage());
} 最後に{
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}
<?php
if (is_file(__DIR__) 。 '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__) 。 '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
OSS\OssClientを使用します。OSS\Core\OssExceptionを使用します。// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
$accessKeyId = getenv("OSS_ACCESS_KEY_ID");
$accessKeySecret = getenv("OSS_ACCESS_KEY_SECRET");
// この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。
$end point = "https://oss-cn-hangzhou.aliyuncs.com";
// バケットの名前を指定します。 例: examplebucket.
$bucket= "examplebucket";
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $end point, false);
// オブジェクトを一覧表示します。 prefixパラメーターを指定しない場合、ルートディレクトリ内のすべてのオブジェクトが一覧表示されます。 prefixパラメーターを指定すると、指定したプレフィックスを名前に含むオブジェクトが一覧表示されます。
$prefix = 'dir/';
$options=配列 (
'prefix' => $プレフィックス、);
try {
$listObjectInfo = $ossClient->listObjects($bucket、$options);
} catch (OssException $e) {
printf($e->getMessage()) 。 "\n");
戻ります。}
// リストされたオブジェクトを表示します。
$objectList = $listObjectInfo->getObjectList();
if (!empty($objectList)) {
print("objectList:\n");
foreach ($objectList as $objectInfo) {
print($objectInfo->getKey()) 。 "\n");
}
}
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();
# -*- coding: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。 例: examplebucket.
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# バケット内のすべてのオブジェクトを一覧表示します。
oss2.ObjectIteratorV2 (バケット) のobjの場合:
print(obj.key)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title> ドキュメント </title>
<script src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.18.0.min.js"></script>
</head>
<body>
<script>
const client = new OSS({
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。
region: "yourRegion" 、
// STSから取得した一時的なAccessKeyペアを指定します。 AccessKeyペアは、AccessKey IDとAccessKeyシークレットで構成されます。
accessKeyId: 'yourAccessKeyId' 、
accessKeySecret: 'yourAccessKeySecret' 、
// STSから取得したセキュリティトークンを指定します。
stsToken: 'yourSecurityToken' 、
// バケットの名前を指定します。 例: examplebucket.
bucket: "examplebucket" 、
});
async関数リスト (dir) {
try {
// デフォルトでは、最大1,000個のオブジェクトが一覧表示されます。
let result = await client.list();
console.log (結果);
// リスト操作は、前のリスト操作で停止した最後のオブジェクトから続行されます。
if (result.isTruncated) {
let result = await client.list({ marker: result.nextMarker });
}
// 名前がプレフィックス 'ex' で始まるオブジェクトを一覧表示します。
result = await client.list({
プレフィックス: "ex" 、
});
console.log (結果);
// 名前が接頭辞 'ex' で始まり、'example' オブジェクトの後にアルファベット順にあるすべてのオブジェクトをリストします。
result = await client.list({
プレフィックス: "ex" 、
マーカー: "example" 、
});
console.log (結果);
} catch (e) {
console.log(e);
}
}
list();
</script>
</body>
</html>
Aliyun.OSSを使用した
;
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
var endpoint = "yourEndpoint";
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// バケットの名前を指定します。 例: examplebucket.
var bucketName = "examplebucket";
// OSSClientインスタンスを作成します。
var client = new OssClient (エンドポイント、accessKeyId、accessKeySecret);
トライ
{
var listObjectsRequest = new ListObjectsRequest(bucketName);
// 単純なリストを使用してバケット内のオブジェクトをリストします。 デフォルトでは、100オブジェクトが返されます。
var result = client.ListObjects(listObjectsRequest);
Console.WriteLine("List objects succeeded");
foreach (var summary in result.ObjectSummaries)
{
Console.WriteLine("File name:{0}", summary.Key);
}
}
キャッチ (例外ex)
{
Console.WriteLine("リストオブジェクトに失敗しました。 {0}"、例えばメッセージ);
}
// バケットの名前を指定します。 例: examplebucket.
ListObjectsRequest request = new ListObjectsRequest("examplebucket");
// 返すオブジェクトの最大数を指定します。 このパラメーターを指定しない場合、このパラメーターの値は100です。 指定できるMaxKeysの最大値は1000です。
request.setMaxKeys (20);
oss.asyncListObjects(request, new OSSCompletedCallback<ListObjectsRequest, ListObjectsResult>() {
@オーバーライド
public void onSuccess(ListObjectsRequestリクエスト, ListObjectsResult結果) {
for (OSSObjectSummary objectSummary : result.getObjectSummaries()) {
Log.i("ListObjects", objectSummary.getKey());
}
}
@オーバーライド
public void onFailure(ListObjectsRequest request, ClientException clientException, ServiceException serviceException) {
// リクエスト例外を処理します。
if (clientException != null) {
// ネットワークエラーなどのクライアント側の例外を処理します。
clientException.printStackTrace();
}
if (serviceException != null) {
// サーバー側の例外を処理します。
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});
パッケージメイン
import (import (import)
"fmt"
"os"
「github.com/aliyun/aliyun-oss-go-sdk/oss」
)
func HandleError (エラーエラー) {
fmt.Println("Error:", err)
os.Exit(-1)
}
func main() {
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Create an OSSClient instance.
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
if err! =nil {
HandleError(err)
}
// バケットの名前を指定します。
bucketName := "yourBucketName"
bucket, err := client.Bucket(bucketName)
if err! =nil {
HandleError(err)
}
continueToken := ""
for {
lsRes, err := bucket.ListObjectsV2(oss.ContinuationToken(continueToken))
if err! =nil {
HandleError(err)
}
// リストされたオブジェクトを表示します。 デフォルトでは、一度に最大100個のオブジェクトが返されます。
for _, object := range lsRes.Objects {
fmt.Println(object.Key, object.Type, object.Size, object.ETag, object.LastModified, object.StorageClass)
}
if lsRes.IsTruncated {
continueToken = lsRes.NextContinuationToken
} else {
break
}
}
}
OSSGetBucketRequest * getBucket = [OSSGetBucketRequest new];
// バケットの名前を指定します。 例: examplebucket.
getBucket.bucketName = @ "examplebucket";
// 返すオブジェクトの最大数を指定します。 このパラメーターを指定しない場合、このパラメーターの値は100です。 指定できるMaxKeysの最大値は1000です。
getBucket.maxKeys = 20;
OSSTask * getBucketTask = [クライアントgetBucket:getBucket];
[getBucketTask continueWithBlock:^ id(OSSTask * task) {
if (!task.error) {
OSSGetBucketResult * result = task.result;
NSLog(@ "get bucket success!");
for (NSDictionary * objectInfo in result.contents) {
NSLog(@ "list object: % @", objectInfo);
}
} else {
NSLog(@ "get bucket failed, error: % @", task.error);
}
nilを返します。}];
#include <alibabacloud/oss/OssClient.h>
名前空間listaCloud::OSSを使用します。int main(void)
{
/* OSSへのアクセスに使用されるアカウントに関する情報を初期化します。 */
/* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 */
std::stringエンドポイント="https://oss-cn-hangzhou.aliyuncs.com";
/* バケットの名前を指定します。 例: examplebucket. */
std::string BucketName = "examplebucket";
/* ネットワークリソースなどのリソースを初期化します。 */
InitializeSdk();
ClientConfiguration conf;
/* 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 */
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClientクライアント (Endpoint, credentialsProvider, conf);
/* オブジェクトを一覧表示します。 */
ListObjectsRequestリクエスト (BucketName);
auto outcome = client.ListObjects (リクエスト);
if (!outcome.isSuccess()) {
/* 例外を処理します。 */
std::cout << "ListObjects fail" <<
",code:" << outcome.error().Code() <<
",message:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
return -1;
}
else {
for (const auto& object : outcome.result().ObjectSummarys()) {
std::cout << "object"<<
",name:" << object.Key() <<
",size:" << object.Size() <<
",lastmodify time:" << object.LastModified() << std:: endl;
}
}
/* ネットワークリソースなどのリソースを解放します。 */
ShutdownSdk();
0を返します。}
#include "oss_api.h"
# 「aos_http_io.h」を含める
/* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 * /
const char * endpoint = "yourEndpoint";
/* バケットの名前を指定します。 例: examplebucket. * /
const char * bucket_name = "examplebucket";
void init_options(oss_request_options_t * オプション)
{
options->config = oss_config_create(options->pool);
/* char * stringを使用して、aos_string_t型のデータを初期化します。 */
aos_str_set(&options->config->endpoint, endpoint);
/* 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 */
aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
/* CNAMEを使用するかどうかを指定します。 値0は、CNAMEが使用されないことを示す。 */
options->config->is_cname = 0;
/* タイムアウト時間などのネットワークパラメーターを指定します。 */
options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char * argv[])
{
/* main() でaos_http_io_initializeメソッドを呼び出して、ネットワークリソースやメモリリソースなどのグローバルリソースを初期化します。 */
if (aos_http_io_initialize(NULL, 0))! =AOSE_OK) {
exit(1);
}
/* メモリを管理するためのメモリプールを作成します。 aos_pool_tはapr_pool_tと同じです。 メモリプールの作成に使用されるコードは、APRライブラリに含まれています。 */
aos_pool_t *pool;
/* メモリプールを作成します。 2番目のパラメーターの値はNULLです。 この値は、プールが他のメモリプールを継承しないことを示します。 */
aos_pool_create(&pool, NULL);
/* Create and initialize options. このパラメーターには、エンドポイント、access_key_id、access_key_secret、is_cname、curlなどのグローバル構成情報が含まれます。 */
oss_request_options_t *oss_client_options;
/* メモリプール内のメモリリソースをオプションに割り当てます。 */
oss_client_options = oss_request_options_create(pool);
/* oss_client_optionsを初期化します。 */
init_options(oss_client_options);
/* パラメーターを初期化します。 */
aos_string_t bucket;
aos_status_t *resp_status = NULL;
oss_list_object_params_t *params = NULL;
oss_list_object_content_t *content = NULL;
int size = 0;
char *line = NULL;
char *prefix = "";
char *nextMarker = "";
aos_str_set(&bucket, bucket_name);
params = oss_create_list_object_params(pool);
/* max_retパラメーターを設定して、返すオブジェクトの最大数を指定します。 */
/* デフォルトでは、一度に最大1,000個のオブジェクトを一覧表示できます。 リストするオブジェクトの数が1,000を超える場合、アルファベット順の最初の1,000オブジェクトのみが返されます。 返された結果では、truncatedの値はtrueで、next_markerの値が次のクエリの開始点として返されます。 */
params->max_ret = 100;
aos_str_set(¶ms->prefix, prefix);
aos_str_set(¶ms->marker, nextMarker);
printf("Object\tSize\tLastModified\n");
/* すべてのオブジェクトを一覧表示します。 */
do {
resp_status = oss_list_object(oss_client_options, &bucket, params, NULL);
if (!aos_status_is_ok(resp_status))
{
printf("list object failed\n");
break;
}
aos_list_for_each_entry(oss_list_object_content_t, content, ¶ms->object_list, node) {
++size;
line = apr_psprintf(pool, "%.*s\t%.*s\t%.*s\n", content->key.len, content->key.data,
content->size.len, content->size.data,
content->last_modified.len, content->last_modified.data);
printf("%s", line);
}
nextMarker = apr_psprintf(pool, "%.*s", params->next_marker.len, params->next_marker.data);
aos_str_set(¶ms->marker, nextMarker);
aos_list_init(¶ms->object_list);
aos_list_init(¶ms->common_prefix_list);
} while (params->truncated == AOS_TRUE);
printf("Total %d\n", size);
/* メモリプールを解放します。 この操作により、リクエストに割り当てられたメモリリソースが解放されます。 */
aos_pool_destroy(pool);
/* 割り当てられたグローバルリソースを解放します。 */
aos_http_io_deinitialize();
0を返します。}
ossutilの使用
ossutilを使用して、バケット内のオブジェクトを一覧表示できます。 詳細については、「リストオブジェクト」をご参照ください。
OSS APIの使用
ビジネスで高度なカスタマイズが必要な場合は、RESTful APIを直接呼び出すことができます。 APIを直接呼び出すには、コードに署名計算を含める必要があります。
GetBucket (ListObjects) またはListObjectsV2 (GetBucketV2) 操作を呼び出して、バケット内のオブジェクトを一覧表示できます。 アプリケーションを開発するときは、GetBucketV2 (ListObjectsV2) を呼び出すことを推奨します。 下位互換性を提供するために、OSSはGetBucket (ListObjects) 操作のサポートを継続します。
よくある質問
OSSはオブジェクトの指定ページ数のリストをサポートしていますか?
OSSは、指定されたページ数のオブジェクトのリストをサポートしていません。
指定したディレクトリ内のすべてのオブジェクトを一覧表示する方法?
GetBucket (ListObjects) またはListObjectsV2 (GetBucketV2) を呼び出して、ディレクトリ構造やオブジェクト名など、ディレクトリ内のすべてのオブジェクトに関する情報を一覧表示できます。 詳細については、「ディレクトリ別オブジェクトのリスト」をご参照ください。
オブジェクトをリストするときに、最後に変更された時刻に基づいてオブジェクトをソートできますか?
いいえ、オブジェクトをリストするときに最後に変更された時刻に基づいてオブジェクトを並べ替えることはできません。 最終変更時刻に基づいてオブジェクトをソートする必要がある場合は、データインデックス機能を使用することを推奨します。 詳細については、「データインデックス作成」をご参照ください。