OSS は、バケット内のオブジェクトを分類するためのオブジェクトタグ付けをサポートしています。同じタグを持つオブジェクトに対して、ライフサイクルルールやアクセス権限を設定できます。
注意事項
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスするには、内部エンドポイントを使用します。サポートされているリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、「OssClient インスタンスの作成」をご参照ください。
オブジェクトタグを設定するには、
oss:PutObjectTagging権限が必要です。詳細については、「RAM ユーザーへのカスタムアクセスポリシーの付与」をご参照ください。
アップロード時のオブジェクトタグの追加
以下の例では、シンプルアップロード、マルチパートアップロード、追加アップロードでオブジェクトタグを追加する方法を説明します。
シンプルアップロード時のオブジェクトタグの追加
次のコードは、シンプルアップロード時にオブジェクトタグを追加する方法を示しています。
<?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"; // オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めることはできません。例:exampledir/exampleobject.txt。 $object = "exampledir/exampleobject.txt"; // アップロードする文字列を指定します。 $content = "hello world"; $config = array( "provider" => $provider, "endpoint" => $endpoint, "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4, "region"=> "cn-hangzhou" ); $ossClient = new OssClient($config); // オブジェクトタグを設定します。 $options = array( OssClient::OSS_HEADERS => array( 'x-oss-tagging' => 'key1=value1&key2=value2&key3=value3', )); try { // シンプルアップロードを使用してオブジェクトをアップロードします。 $ossClient->putObject($bucket, $object, $content, $options); } catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return; } print(__FUNCTION__ . ": OK" . "\n");マルチパートアップロード時のオブジェクトタグの追加
次のコードは、マルチパートアップロードを使用してローカルファイルを OSS にアップロードする際にオブジェクトタグを追加する方法を示しています。
<?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"; // オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めることはできません。例:exampledir/exampleobject.txt。 $object = "exampledir/exampleobject.txt"; // ローカルファイルの完全なパス (D:\\localpath\\examplefile.txt など) を指定します。ファイル名 (examplefile.txt など) のみを指定した場合、ファイルはサンプルプログラムが配置されているプロジェクトのローカルパスからアップロードされます。 $file = "D:\\localpath\\examplefile.txt"; $config = array( "provider" => $provider, "endpoint" => $endpoint, "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4, "region"=> "cn-hangzhou" ); $ossClient = new OssClient($config); // オブジェクトタグを設定します。 $options = array( OssClient::OSS_CHECK_MD5 => true, OssClient::OSS_PART_SIZE => 1, OssClient::OSS_HEADERS => array( 'x-oss-tagging' => 'key1=value1&key2=value2&key3=value3', ), ); try { // マルチパートアップロードを使用してオブジェクトをアップロードします。 $ossClient->multiuploadFile($bucket, $object, $file, $options); } catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return; } print(__FUNCTION__ . ": OK" . "\n");追加アップロード時のオブジェクトタグの追加
次のコードは、追加アップロード時にオブジェクトタグを追加する方法を示しています。
<?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"; // オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めることはできません。例:exampledir/exampleobject.txt。 $object = "exampledir/exampleobject.txt"; // 順に追加する文字列を指定します。 $content_array = array('Hello OSS', 'Hi OSS'); $config = array( "provider" => $provider, "endpoint" => $endpoint, "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4, "region"=> "cn-hangzhou" ); $ossClient = new OssClient($config); // オブジェクトタグを設定します。 $options = array( OssClient::OSS_HEADERS => array( 'x-oss-tagging' => 'key1=value1&key2=value2', )); try { // 追加アップロードを使用してオブジェクトをアップロードします。 $position = $ossClient->appendObject($bucket, $object, $content_array[0], 0, $options); $position = $ossClient->appendObject($bucket, $object, $content_array[1], $position); } catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return; } print(__FUNCTION__ . ": OK" . "\n");
アップロード済みオブジェクトのオブジェクトタグの追加または変更
オブジェクトのアップロード時にオブジェクトタグを追加しなかった場合、または既存のタグがニーズに合わなくなった場合は、アップロード完了後にオブジェクトタグを追加または変更できます。
次のコードは、アップロード済みオブジェクトのオブジェクトタグを追加または変更する方法を示しています。
<?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\Core\OssException;
use OSS\Model\TaggingConfig;
use OSS\Model\Tag;
// 環境変数からアクセス認証情報を取得します。この例を実行する前に、環境変数 OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
$endpoint = "yourEndpoint";
// バケット名を指定します。例:examplebucket。
$bucket = "examplebucket";
// オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めることはできません。例:exampledir/exampleobject.txt。
$object = "exampledir/exampleobject.txt";
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
// オブジェクトタグを設定します。
$config = new TaggingConfig();
$config->addTag(new Tag("key1", "value1"));
$config->addTag(new Tag("key2", "value2"));
try {
$ossClient->putObjectTagging($bucket, $object, $config);
} catch (OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");特定のオブジェクトバージョンのオブジェクトタグの追加または変更
バージョン管理が有効になっているバケットでは、バージョン ID を指定することで、オブジェクトの特定のバージョンのオブジェクトタグを追加または変更できます。
次のコードは、オブジェクトの特定のバージョンのオブジェクトタグを追加または変更する方法を示しています。
バージョン ID の取得方法の詳細については、「オブジェクトのリスト (PHP SDK V1)」をご参照ください。
<?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\Core\OssException;
use OSS\Model\TaggingConfig;
use OSS\Model\Tag;
// 環境変数からアクセス認証情報を取得します。この例を実行する前に、環境変数 OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
$endpoint = "yourEndpoint";
// バケット名を指定します。例:examplebucket。
$bucket = "examplebucket";
// オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めることはできません。例:exampledir/exampleobject.txt。
$object = "exampledir/exampleobject.txt";
// オブジェクトのバージョン ID を指定します。
$options = array(
'versionId'=>'CAEQMxiBgICAof2D0BYiIDJhMGE3N2M1YTI1NDQzOGY5NTkyNTI3MGYyMzJm****'
);
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
// オブジェクトタグを設定します。
$config = new TaggingConfig();
$config->addTag(new Tag("key1", "value1"));
$config->addTag(new Tag("key2", "value2"));
try {
$ossClient->putObjectTagging($bucket, $object, $config,$options);
printf("putObjectTagging Success" . "\n");
} catch (OssException $e) {
printf($e->getMessage() . "\n");
return;
}