このトピックでは、バージョン管理が有効になっているバケット内のファイル (オブジェクト) をリストする方法について説明します。すべてのファイル、指定された数のファイル、または指定されたプレフィックスを持つファイルをリストできます。
注意事項
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。同じリージョン内の他の Alibaba Cloud サービスから Object Storage Service (OSS) にアクセスするには、内部エンドポイントを使用します。サポートされているリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、「OssClient の作成」をご参照ください。
ファイルをリストするには、
oss:ListObjectVersions権限が必要です。詳細については、「RAM ユーザーへのカスタム権限の付与」をご参照ください。
バケット内のすべてのオブジェクトバージョンのリスト
次のコードは、examplebucket バケット内の削除マーカーを含むすべてのオブジェクトバージョンをリストする方法の例を示しています。
<?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';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;
// 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// yourEndpoint を、バケットが配置されているリージョンのエンドポイントに置き換えます。たとえば、中国 (杭州) リージョンの場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
$endpoint = "yourEndpoint";
// バケット名を指定します。例:examplebucket。
$bucket= "examplebucket";
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
try{
$option = array(
OssClient::OSS_KEY_MARKER => null,
OssClient::OSS_VERSION_ID_MARKER => null
);
$bool = true;
while ($bool){
$result = $ossClient->listObjectVersions($bucket,$option);
// オブジェクトのバージョン情報を表示します。
foreach ($result->getObjectVersionList() as $key => $info){
printf("key name: {$info->getKey()}\n");
printf("versionid: {$info->getVersionId()}\n");
printf("Is latest: {$info->getIsLatest()}\n\n");
}
// 削除マーカーのバージョン情報を表示します。
foreach ($result->getDeleteMarkerList() as $key => $info){
printf("del_maker key name: {$info->getKey()}\n");
printf("del_maker versionid: {$info->getVersionId()}\n");
printf("del_maker Is latest: {$info->getIsLatest()}\n\n");
}
if($result->getIsTruncated() === 'true'){
$option[OssClient::OSS_KEY_MARKER] = $result->getNextKeyMarker();
$option[OssClient::OSS_VERSION_ID_MARKER] = $result->getNextVersionIdMarker();
}else{
$bool = false;
}
}
} catch(OssException $e) {
printf($e->getMessage() . "\n");
return;
}指定されたプレフィックスを持つオブジェクトバージョンのリスト
次のコードは、examplebucket バケット内の test プレフィックスを持つオブジェクトのバージョンをリストする方法の例を示しています。
<?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';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;
// 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// yourEndpoint を、バケットが配置されているリージョンのエンドポイントに置き換えます。たとえば、中国 (杭州) リージョンの場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
$endpoint = "yourEndpoint";
// バケット名を指定します。例:examplebucket。
$bucket= "examplebucket";
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
try{
$option = array(
OssClient::OSS_KEY_MARKER => null,
OssClient::OSS_VERSION_ID_MARKER => null,
// "test" プレフィックスを持つオブジェクトのバージョンをリストします。
OssClient::OSS_PREFIX => "test"
);
$bool = true;
while ($bool){
$result = $ossClient->listObjectVersions($bucket,$option);
// オブジェクトのバージョン情報を表示します。
foreach ($result->getObjectVersionList() as $key => $info){
printf("key name: {$info->getKey()}\n");
printf("versionid: {$info->getVersionId()}\n");
printf("Is latest: {$info->getIsLatest()}\n\n");
}
// 削除マーカーのバージョン情報を表示します。
foreach ($result->getDeleteMarkerList() as $key => $info){
printf("del_maker key name: {$info->getKey()}\n");
printf("del_maker versionid: {$info->getVersionId()}\n");
printf("del_maker Is latest: {$info->getIsLatest()}\n");
}
if($result->getIsTruncated() === 'true'){
$option[OssClient::OSS_KEY_MARKER] = $result->getNextKeyMarker();
$option[OssClient::OSS_VERSION_ID_MARKER] = $result->getNextVersionIdMarker();
}else{
$bool = false;
}
}
} catch(OssException $e) {
printf($e->getMessage() . "\n");
return;
}指定された数のオブジェクトバージョンのリスト
次のコードは、examplebucket バケット内の指定された数のオブジェクトバージョンをリストする方法の例を示しています。
<?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';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;
// 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// yourEndpoint を、バケットが配置されているリージョンのエンドポイントに置き換えます。たとえば、中国 (杭州) リージョンの場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
$endpoint = "yourEndpoint";
// バケット名を指定します。例:examplebucket。
$bucket= "examplebucket";
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
try{
$option = array(
OssClient::OSS_KEY_MARKER => null,
OssClient::OSS_VERSION_ID_MARKER => null,
OssClient::OSS_MAX_KEYS => 200 // リストするオブジェクトバージョンの最大数を指定します。この例では、最大 200 のオブジェクトバージョンがリストされます。
);
$result = $ossClient->listObjectVersions($bucket,$option);
// オブジェクトのバージョン情報を表示します。
foreach ($result->getObjectVersionList() as $key => $info){
printf("key name: ".$info->getKey().PHP_EOL);
printf("versionid: ".$info->getVersionId().PHP_EOL);
printf("Is latest: ".$info->getIsLatest().PHP_EOL.PHP_EOL);
}
// 削除マーカーのバージョン情報を表示します。
foreach ($result->getDeleteMarkerList() as $key => $info){
printf("del_maker key name: ".$info->getKey().PHP_EOL);
printf("del_maker versionid: ".$info->getVersionId().PHP_EOL);
printf("del_maker Is latest: ".$info->getIsLatest().PHP_EOL.PHP_EOL);
}
} catch(OssException $e) {
printf($e->getMessage() . "\n");
return;
}フォルダ機能
OSS にはフォルダの概念がありません。代わりに、すべての要素がオブジェクトとして格納されます。フォルダの作成は、スラッシュ (/) で終わるゼロバイトのオブジェクトを作成することと同じです。このオブジェクトはアップロードおよびダウンロードできます。OSS コンソールでは、スラッシュ (/) で終わるオブジェクトがフォルダとして表示されます。
デリミタとプレフィックスのパラメーターを使用して、フォルダをシミュレートできます。
prefix パラメーターをフォルダ名に設定すると、そのプレフィックスを持つ名前のオブジェクトがリストされます。これは、フォルダ内のすべてのオブジェクトとサブディレクトリが返されることを意味します。
prefix パラメーターを設定し、delimiter パラメーターをスラッシュ (/) に設定すると、フォルダ内のオブジェクトとサブディレクトリのみがリストされます。フォルダ内のサブディレクトリは CommonPrefixes として返されます。サブディレクトリ内のオブジェクトとフォルダはリストされません。
ルートディレクトリ内のオブジェクトバージョンのリスト
次のコードは、examplebucket バケットのルートディレクトリにあるオブジェクトのバージョンをリストする方法の例を示しています。
<?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'; } use OSS\Credentials\EnvironmentVariableCredentialsProvider; use OSS\OssClient; use OSS\CoreOssException; // 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。 $provider = new EnvironmentVariableCredentialsProvider(); // yourEndpoint を、バケットが配置されているリージョンのエンドポイントに置き換えます。たとえば、中国 (杭州) リージョンの場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 $endpoint = "yourEndpoint"; // バケット名を指定します。例:examplebucket。 $bucket= "examplebucket"; $config = array( "provider" => $provider, "endpoint" => $endpoint, "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4, "region"=> "cn-hangzhou" ); $ossClient = new OssClient($config); try{ $option = array( OssClient::OSS_KEY_MARKER => null, OssClient::OSS_VERSION_ID_MARKER => null, OssClient::OSS_DELIMITER => "/", // 区切り文字をスラッシュ (/) に設定します。 ); $bool = true; while ($bool){ $result = $ossClient->listObjectVersions($bucket,$option); // オブジェクトのバージョン情報を表示します。 foreach ($result->getObjectVersionList() as $key => $info){ printf("key name: {$info->getKey()}\n"); printf("versionid: {$info->getVersionId()}\n"); printf("Is latest: {$info->getIsLatest()}\n\n"); } // 削除マーカーのバージョン情報を表示します。 foreach ($result->getDeleteMarkerList() as $key => $info){ printf("del_maker key name: {$info->getKey()}\n"); printf("del_maker versionid: {$info->getVersionId()}\n"); printf("del_maker Is latest: {$info->getIsLatest()}\n\n"); } if($result->getIsTruncated() === 'true'){ $option[OssClient::OSS_KEY_MARKER] = $result->getNextKeyMarker(); $option[OssClient::OSS_VERSION_ID_MARKER] = $result->getNextVersionIdMarker(); }else{ $bool = false; } } } catch(OssException $e) { printf($e->getMessage() . "\n"); return; }指定されたディレクトリ内のオブジェクトバージョンのリスト
次のコードは、examplebucket バケットの test ディレクトリにあるオブジェクトのバージョンをリストする方法の例を示しています。
<?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'; } use OSS\Credentials\EnvironmentVariableCredentialsProvider; use OSS\OssClient; use OSS\CoreOssException; // 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。 $provider = new EnvironmentVariableCredentialsProvider(); // yourEndpoint を、バケットが配置されているリージョンのエンドポイントに置き換えます。たとえば、中国 (杭州) リージョンの場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 $endpoint = "yourEndpoint"; // バケット名を指定します。例:examplebucket。 $bucket= "examplebucket"; $config = array( "provider" => $provider, "endpoint" => $endpoint, "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4, "region"=> "cn-hangzhou" ); $ossClient = new OssClient($config); try{ $option = array( OssClient::OSS_KEY_MARKER => null, OssClient::OSS_VERSION_ID_MARKER => null, OssClient::OSS_DELIMITER => "/", // 区切り文字をスラッシュ (/) に設定します。 OssClient::OSS_PREFIX => "test/", // test フォルダ内のオブジェクトのバージョンをリストします。 ); $bool = true; while ($bool){ $result = $ossClient->listObjectVersions($bucket,$option); // オブジェクトのバージョン情報を表示します。 foreach ($result->getObjectVersionList() as $key => $info){ printf("key name: {$info->getKey()}\n"); printf("versionid: {$info->getVersionId()}\n"); printf("Is latest: {$info->getIsLatest()}\n\n"); } // 削除マーカーのバージョン情報を表示します。 foreach ($result->getDeleteMarkerList() as $key => $info){ printf("del_maker key name: {$info->getKey()}\n"); printf("del_maker versionid: {$info->getVersionId()}\n"); printf("del_maker Is latest: {$info->getIsLatest()}\n\n"); } if($result->getIsTruncated() === 'true'){ $option[OssClient::OSS_KEY_MARKER] = $result->getNextKeyMarker(); $option[OssClient::OSS_VERSION_ID_MARKER] = $result->getNextVersionIdMarker(); }else{ $bool = false; } } } catch(OssException $e) { printf($e->getMessage() . "\n"); return; }