Object Storage Service (OSS) では、バケットタグを使用してバケットを分類および管理できます。 バケットタグ機能を使用して、さまざまな目的で使用されるバケットのタグを設定し、特定のタグを持つバケットのアクセス制御リスト (ACL) を設定できます。
使用上の注意
バケットタグ付け機能を使用すると、キーと値のペアを使用してバケットを識別できます。 さまざまな目的で使用されるバケットのタグを設定し、タグごとにバケットを管理できます。
バケットのタグを設定できるのは、バケット所有者と
oss:PutBucketTagging
権限を付与されたユーザーのみです。 他のユーザーがバケットのタグを設定しようとすると、AccessDeniedエラーコードを含む403 Forbiddenメッセージが返されます。バケットごとに最大20個のタグ (キーと値のペア) を設定できます。
タグのキーと値はUTF-8でエンコードする必要があります。
キーの長さは最大64文字です。 大文字と小文字が区別され、空にすることはできません。 キーの先頭を
http://
、https://
、Aliyun
にすることはできません。 これらのプレフィックスは大文字と小文字を区別しません。タグの値は最大128文字で、空にすることができます。
シナリオ
多数のバケットがある場合は、タグに基づいてバケットを分類し、特定のタグを持つバケットを管理する権限を特定のユーザーに付与するRAMポリシーを設定できます。 たとえば、次のポリシーを設定して、ユーザーA (UID: 193248792425xxxx) がkey1:value1タグを持つすべてのバケットを一覧表示することを許可できます。
{
"Version": "1",
"Statement": [
{
"Action": [
"oss:ListBuckets"
],
"Resource": [
"acs:oss:*:193248792425xxxx:*"
],
"Effect": "Allow",
"Condition": {
"StringEquals": {
"oss:BucketTag/key1": "value1"
}
}
}
]
}
特定のタグを持つバケットへのデータの書き込みや、これらのバケットに関する情報の照会など、アクション要素を指定することで、バケットに対する他の操作をユーザーAに許可することもできます。 RAMポリシーでサポートされているaction要素の詳細については、「概要」をご参照ください。
手順
OSSコンソールの使用
OSSコンソールにログインします。
左側のナビゲーションウィンドウで、バケットリスト をクリックします。 [バケット] ページで、目的のバケットを見つけてクリックします。
左側のナビゲーションツリーで、バケットの設定 > バケットタグ を選択します。
バケットタグ ページで、タグの作成 をクリックします。
[+ タグ] をクリックしてタグのキーと値を入力するか、既存のタグを選択します。
バケットに複数のタグを追加するには、[+ タグ] をクリックします。
設定 をクリックします。
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.SetBucketTaggingRequestをインポートします。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";
// Create an OSSClient instance.
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
try {
// バケットのタグを設定します。
SetBucketTaggingRequest request=新しいSetBucketTaggingRequest(bucketName);
// タグのキーと値を指定します。 たとえば、キーをownerに、値をJohnに設定します。
request.setTag("所有者" 、"ジョン");
request.setTag("location" 、"hangzhou");
ossClient.setBucketTagging (リクエスト);
} 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\Model\TaggingConfigを使用します。OSS\Model \タグを使用します。// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、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);
try {
// バケットのタグを設定します。
$config = new TaggingConfig();
$config->addTag (新しいタグ ("key1" 、"value1"));
$config->addTag (新しいタグ ("key2" 、"value2"));
$ossClient->putBucketTags($bucket、$config);
} catch (OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage()) 。 "\n");
戻ります。}
print(__FUNCTION__) 。 ": OK" 。 "\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
});
// バケットのタグを設定します。
async関数putBucketTags(bucketName, tag) {
try {
const result = await client.putBucketTags(bucketName, tag);
console.log (結果);
} catch (e) {
console.log(e);
}
}
const tag = { a: '1', b: '2' };
putBucketTags('bucketName' 、タグ)
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
oss2.modelsからインポートタグ付け、TaggingRule
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、環境変数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')
# バケットのタグ付けルールを作成します。
rule = TaggingRule()
rule.add('key1', 'value1')
rule.add('key2', 'value2')
# バケットのタグを作成します。
tagging=タグ付け (ルール)
# バケットのタグを設定します。
result = bucket.put_bucket_tagging (タグ付け)
# 返されたHTTPステータスコードを表示します。
Aliyun.OSSを使用して印刷 ('http status:', result.status)
;
Aliyun.OSS.Common; を使用
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを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 setRequest=新しいSetBucketTaggingRequest(bucketName);
var tag1=新しいタグ
{
キー="プロジェクト" 、
値="projectone"
};
var tag2=新しいタグ
{
キー="ユーザー" 、
値="jsmith"
};
setRequest.AddTag(tag1);
setRequest.AddTag(tag2);
client.SetBucketTagging(setRequest);
Console.WriteLine("Set bucket:{0} Tagging successed", bucketName);
}
キャッチ (OssException ex)
{
Console.WriteLine("Failed with error code: {0}; エラー情報: {1} 。 \nRequestID:{2}\tHostID:{3}"、
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
キャッチ (例外ex)
{
Console.WriteLine("Failed with error info: {0}" 、メッセージなど);
}
パッケージメイン
import (import (import)
"fmt"
"os"
「github.com/aliyun/aliyun-oss-go-sdk/oss」
)
func main() {
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// OSSClientインスタンスを作成します。
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// タグ設定を初期化します。
tag1 := oss.Tag {
キー: "key1" 、値: "value1" 、}
tag2 := oss. タグ {
キー: "key2" 、値: "value2" 、}
tagging := oss.Tagging {
タグ: []oss.Tag{tag1, tag2},
}
// バケットの名前を指定します。 例: examplebucket.
// バケットのタグを設定します。
err = client.SetBucketTagging("examplebucket", tagging)
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
}
#include <alibabacloud/oss/OssClient.h>
名前空間listaCloud::OSSを使用します。int main(void)
{
/* OSSへのアクセスに使用されるアカウントに関する情報を初期化します。 */
/* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 */
std::string Endpoint = "yourEndpoint";
/* バケットの名前を指定します。 例: 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);
/* バケットのタグを設定します。 */
SetBucketTaggingRequestリクエスト (BucketName);
タグtag1("yourTagkey1" 、"yourTagValue1");
タグtag2("yourTagkey2" 、"yourTagValue2");
TagSet tagset;
tagset.push_back(tag1);
tagset.push_back(tag2);
タグ付け
taging.setTags(tagset);
request.setTagging(taging);
auto outcome = client.SetBucketTagging (リクエスト);
if (outcome.isSuccess()) {
std::cout << "SetBucketTagging success" << std::endl;
}
else {
/* 例外を処理します。 */
std::cout << "SetBucketTagging fail" <<
",code:" << outcome.error().Code() <<
",message:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
return -1;
}
/* ネットワークリソースなどのリソースを解放します。 */
ShutdownSdk();
0を返します。}
ossutilの使用
ossutilを使用してバケットタグを設定する方法の詳細については、「バケットへのタグの追加またはバケットのタグの変更」をご参照ください。
OSS APIの使用
ビジネスで高度なカスタマイズが必要な場合は、RESTful APIを直接呼び出すことができます。 APIを直接呼び出すには、コードに署名計算を含める必要があります。 詳細については、「PutBucketTags」をご参照ください。