Object Storage Service (OSS) memungkinkan Anda mengklasifikasikan dan mengelola bucket menggunakan tag bucket. Fitur penandaan bucket dapat digunakan untuk mengonfigurasi tag pada bucket yang mendukung berbagai keperluan, serta mengonfigurasi daftar kontrol akses (ACL) untuk bucket dengan tag tertentu.
Catatan
Hanya pemilik bucket dan pengguna dengan izin
oss:PutBucketTaggingyang dapat mengonfigurasi tag untuk bucket. Jika pengguna lain mencoba mengonfigurasi tag, pesan 403 Forbidden dengan kode kesalahan AccessDenied akan dikembalikan.Anda dapat mengonfigurasi hingga 20 tag (pasangan kunci-nilai) untuk setiap bucket.
Kunci dan nilai dari sebuah tag harus dienkripsi dalam format UTF-8.
Panjang kunci dapat mencapai 64 karakter. Kunci bersifat peka terhadap huruf besar/kecil dan tidak boleh kosong. Kunci juga tidak boleh dimulai dengan
http://,https://, atauAliyun. Awalan ini tidak peka terhadap huruf besar/kecil.Nilai dari sebuah tag dapat mencapai panjang 128 karakter dan boleh kosong.
Prosedur
Gunakan Konsol OSS
Masuk ke Konsol OSS.
Di panel navigasi sebelah kiri, klik Buckets. Pada halaman Buckets, temukan dan klik bucket yang diinginkan.
Di pohon navigasi sebelah kiri, pilih Bucket Settings > Bucket Tagging.
Pada halaman Bucket Tagging, klik Create Tag.
Klik + Tag untuk memasukkan kunci dan nilai dari sebuah tag, atau pilih tag yang sudah ada.
Untuk menambahkan beberapa tag ke bucket, klik + Tag.
Klik Save.
Gunakan SDK OSS
Berikut adalah contoh kode yang menunjukkan cara mengonfigurasi tag untuk bucket menggunakan SDK OSS untuk bahasa pemrograman umum. Untuk informasi lebih lanjut tentang cara mengonfigurasi tag untuk bucket menggunakan SDK OSS untuk bahasa pemrograman lainnya, lihat Ikhtisar.
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.SetBucketTaggingRequest;
public class Demo {
public static void main(String[] args) throws Exception {
// Dalam contoh ini, endpoint wilayah China (Hangzhou) digunakan. Tentukan endpoint aktual Anda.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan nama bucket. Contoh: examplebucket.
String bucketName = "examplebucket";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
String region = "cn-hangzhou";
// Buat instance OSSClient.
// Panggil metode shutdown untuk melepaskan sumber daya ketika OSSClient tidak lagi digunakan.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// Konfigurasikan tag untuk bucket.
SetBucketTaggingRequest request = new SetBucketTaggingRequest(bucketName);
// Tentukan kunci dan nilai dari tag. Misalnya, atur kunci menjadi owner dan nilai menjadi John.
request.setTag("owner", "John");
request.setTag("location", "hangzhou");
ossClient.setBucketTagging(request);
} catch (OSSException oe) {
System.out.println("Tangkap OSSException, yang berarti permintaan Anda sampai ke OSS, "
+ "tetapi ditolak dengan respons kesalahan karena alasan tertentu.");
System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
System.out.println("Kode Kesalahan:" + oe.getErrorCode());
System.out.println("ID Permintaan:" + oe.getRequestId());
System.out.println("ID Host:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Tangkap ClientException, yang berarti klien mengalami "
+ "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
+ "seperti tidak dapat mengakses jaringan.");
System.out.println("Pesan Kesalahan:" + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}const OSS = require('ali-oss')
const client = new OSS({
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi oss-cn-hangzhou.
region: 'yourregion',
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan Anda telah mengonfigurasi variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// Tentukan nama bucket Anda.
bucket: 'yourBucketName',
});
// Konfigurasikan tag untuk bucket.
async function putBucketTags(bucketName, tag) {
try {
const result = await client.putBucketTags(bucketName, tag);
console.log(result);
} catch (e) {
console.log(e);
}
}
const tag = { a: '1', b: '2' };
putBucketTags('bucketName', tag)package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Tentukan variabel global.
var (
region string // Wilayah tempat bucket berada.
bucketName string // Nama bucket.
)
// Tentukan fungsi init yang digunakan untuk menginisialisasi parameter baris perintah.
func init() {
flag.StringVar(®ion, "region", "", "Wilayah tempat bucket berada.")
flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}
func main() {
// Parsing parameter baris perintah.
flag.Parse()
// Periksa apakah nama bucket kosong.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama bucket diperlukan")
}
// Periksa apakah wilayah kosong.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, wilayah diperlukan")
}
// Muat konfigurasi default dan tentukan penyedia kredensial dan wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Buat instance OSSClient.
client := oss.NewClient(cfg)
// Buat permintaan untuk mengonfigurasi tag untuk bucket.
request := &oss.PutBucketTagsRequest{
Bucket: oss.Ptr(bucketName), // Nama bucket.
Tagging: &oss.Tagging{
&oss.TagSet{
[]oss.Tag{
{
Key: oss.Ptr("k1"), // Kunci dari sebuah tag.
Value: oss.Ptr("v1"), // Nilai dari sebuah tag.
},
{
Key: oss.Ptr("k2"), // Kunci dari sebuah tag.
Value: oss.Ptr("v2"), // Nilai dari sebuah tag.
},
{
Key: oss.Ptr("k3"), // Kunci dari sebuah tag.
Value: oss.Ptr("v3"), // Nilai dari sebuah tag.
},
},
},
},
}
// Kirim permintaan untuk mengonfigurasi tag untuk bucket.
result, err := client.PutBucketTags(context.TODO(), request)
if err != nil {
log.Fatalf("gagal menempatkan tag bucket %v", err)
}
// Tampilkan hasil dari konfigurasi tag.
log.Printf("hasil tag bucket:%#v\n", result)
}
using Aliyun.OSS;
using Aliyun.OSS.Common;
// Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com.
var endpoint = "yourEndpoint";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Tentukan nama bucket. Contoh: examplebucket.
var bucketName = "examplebucket";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
const string region = "cn-hangzhou";
// Buat instance ClientConfiguration dan modifikasi parameter sesuai kebutuhan.
var conf = new ClientConfiguration();
// Gunakan algoritma tanda tangan V4.
conf.SignatureVersion = SignatureVersion.V4;
// Buat instance OSSClient.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
c.SetRegion(region);
try
{
// Konfigurasikan tag untuk bucket.
var setRequest = new SetBucketTaggingRequest(bucketName);
var tag1 = new Tag
{
Key = "project",
Value = "projectone"
};
var tag2 = new Tag
{
Key = "user",
Value = "jsmith"
};
setRequest.AddTag(tag1);
setRequest.AddTag(tag2);
client.SetBucketTagging(setRequest);
Console.WriteLine("Set bucket:{0} Tagging berhasil ", bucketName);
}
catch (OssException ex)
{
Console.WriteLine("Gagal dengan kode kesalahan: {0}; Informasi kesalahan: {1}. \nRequestID:{2}\tHostID:{3}",
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
Console.WriteLine("Gagal dengan informasi kesalahan: {0}", ex.Message);
}#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;
int main(void)
{
/* Inisialisasi informasi tentang akun yang digunakan untuk mengakses OSS. */
/* Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com. */
std::string Endpoint = "yourEndpoint";
/* Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou. */
std::string Region = "yourRegion";
/* Tentukan nama bucket. Contoh: examplebucket. */
std::string BucketName = "examplebucket";
/* Inisialisasi sumber daya seperti sumber daya jaringan. */
InitializeSdk();
ClientConfiguration conf;
conf.signatureVersion = SignatureVersionType::V4;
/* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. */
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClient client(Endpoint, credentialsProvider, conf);
client.SetRegion(Region);
/* Konfigurasikan tag untuk bucket. */
SetBucketTaggingRequest request(BucketName);
Tag tag1("yourTagkey1","yourTagValue1");
Tag tag2("yourTagkey2", "yourTagValue2");
TagSet tagset;
tagset.push_back(tag1);
tagset.push_back(tag2);
Tagging taging;
taging.setTags(tagset);
request.setTagging(taging);
auto outcome = client.SetBucketTagging(request);
if (outcome.isSuccess()) {
std::cout << " SetBucketTagging berhasil " << std::endl;
}
else {
/* Tangani pengecualian. */
std::cout << "SetBucketTagging gagal" <<
",kode:" << outcome.error().Code() <<
",pesan:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
return -1;
}
/* Lepaskan sumber daya seperti sumber daya jaringan. */
ShutdownSdk();
return 0;
}import argparse
import alibabacloud_oss_v2 as oss
# Buat parser argumen baris perintah untuk menerima input parameter dari pengguna
parser = argparse.ArgumentParser(description="menempatkan tag bucket contoh")
# Tambahkan argumen baris perintah --region, menunjukkan wilayah tempat bucket berada, wajib
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
# Tambahkan argumen baris perintah --bucket, menunjukkan nama bucket, wajib
parser.add_argument('--bucket', help='Nama bucket.', required=True)
# Tambahkan argumen baris perintah --endpoint, menunjukkan nama domain yang digunakan layanan lain untuk mengakses OSS, opsional
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')
def main():
# Parsing argumen baris perintah
args = parser.parse_args()
# Muat informasi kredensial (AccessKeyId dan AccessKeySecret) dari variabel lingkungan
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Muat konfigurasi default SDK
cfg = oss.config.load_default()
# Tetapkan penyedia kredensial
cfg.credentials_provider = credentials_provider
# Tetapkan wilayah tempat bucket berada
cfg.region = args.region
# Jika pengguna memberikan endpoint kustom, tetapkan dalam konfigurasi
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# Inisialisasi klien OSS menggunakan objek konfigurasi
client = oss.Client(cfg)
# Panggil metode put_bucket_tags untuk menetapkan tag untuk bucket
result = client.put_bucket_tags(
oss.PutBucketTagsRequest(
bucket=args.bucket, # Tentukan nama bucket target
tagging=oss.Tagging( # Bangun koleksi tag
tag_set=oss.TagSet( # Koleksi tag berisi beberapa tag
tags=[ # Definisikan daftar tag
oss.Tag( # Tag pertama
key='test_key', # Kunci tag
value='test_value', # Nilai tag
),
oss.Tag( # Tag kedua
key='test_key2', # Kunci tag
value='test_value2', # Nilai tag
),
],
),
),
)
)
# Cetak kode status dan ID permintaan dari hasil operasi
print(f'kode status: {result.status_code}, ' # Kode status HTTP, menunjukkan apakah permintaan berhasil
f'ID permintaan: {result.request_id}') # ID permintaan, digunakan untuk melacak log permintaan dan debugging
if __name__ == "__main__":
# Titik masuk program, panggil fungsi utama untuk menjalankan logika
main()
<?php
// Muat otomatis objek dan pustaka dependensi.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Tentukan parameter baris perintah.
$optsdesc = [
"region" => ['help' => 'Wilayah tempat bucket berada', 'required' => True], // Parameter wilayah wajib.
"endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS', 'required' => False], // Parameter endpoint opsional.
"bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket wajib.
];
// Hasilkan daftar opsi panjang untuk parsing parameter baris perintah.
$longopts = \array_map(function ($key) {
return "$key:"; // Tanda titik dua (:) setelah setiap parameter menunjukkan bahwa parameter tersebut wajib.
}, array_keys($optsdesc));
// Parsing parameter baris perintah.
$options = getopt("", $longopts);
// Periksa apakah parameter wajib telah dikonfigurasi.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help'];
echo "Error: argumen berikut diperlukan: --$key, $help"; // Menentukan bahwa parameter wajib belum dikonfigurasi.
exit(1);
}
}
// Ambil nilai parameter baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
// Gunakan variabel lingkungan untuk memuat informasi kredensial (AccessKey ID dan AccessKey secret).
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default SDK.
$cfg = Oss\Config::loadDefault();
// Tentukan penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);
// Tentukan wilayah.
$cfg->setRegion($region);
// Tentukan endpoint jika disediakan.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]);
}
// Buat instance OSSClient.
$client = new Oss\Client($cfg);
// Buat tag yang berisi beberapa pasangan kunci-nilai untuk bucket.
$tagging = new Oss\Models\Tagging(
tagSet: new Oss\Models\TagSet(
tags: [new Oss\Models\Tag(key: 'key1', value: 'value1'), new Oss\Models\Tag(key: 'key2', value: 'value2')]
)
);
// Buat objek permintaan untuk mengonfigurasi tag dan sertakan informasi penandaan.
$request = new Oss\Models\PutBucketTagsRequest(bucket: $bucket, tagging: $tagging);
// Konfigurasikan tag untuk bucket menggunakan metode putBucketTags.
$result = $client->putBucketTags($request);
// Keluarkan hasilnya.
printf(
'kode status:' . $result->statusCode . PHP_EOL . // Kode status HTTP.
'ID permintaan:' . $result->requestId // ID unik permintaan.
);
Gunakan ossutil
Untuk informasi lebih lanjut tentang cara mengonfigurasi tag bucket menggunakan ossutil, lihat Tambahkan tag ke bucket atau ubah tag bucket.
Gunakan API OSS
Jika bisnis Anda memerlukan tingkat penyesuaian yang tinggi, Anda dapat langsung memanggil API RESTful. Untuk memanggil API secara langsung, Anda harus menyertakan perhitungan tanda tangan dalam kode Anda. Untuk informasi lebih lanjut, lihat PutBucketTags.
Contoh
Dalam sebuah perusahaan, setiap proyek diberi OSS Bucket yang berbeda untuk penyimpanan data. Dengan menandai bucket-bucket yang terkait dengan proyek yang berbeda, Anda dapat menerapkan kontrol akses yang lebih rinci melalui kebijakan RAM, memastikan bahwa pengguna dari setiap proyek hanya dapat membaca dan menulis data di bucket dengan tag yang ditentukan. Pendekatan ini secara efektif mencegah akses lintas proyek yang tidak sah. Untuk informasi lebih lanjut, lihat Otorisasi pengguna RAM untuk membaca dan menulis data di bucket dengan tag tertentu.