Kelola metadata resource MaxCompute secara programatik dengan SDK CatalogAPI untuk Java dan Python.
Versi produk: v0.2.2
Repositori SDK: aliyun/aliyun-odps-openapi-sdk
Ikhtisar
SDK CatalogAPI adalah SDK open source untuk mengelola katalog data MaxCompute. SDK ini menyediakan akses programatik ke metadata resource seperti Project, Schema, Table, Connection, Role, Taxonomy, DataPolicy, DataScan, dan Model.
Fitur
Kemampuan inti:
Manajemen tabel
Buat dan perbarui tabel internal serta eksternal; kueri dan hapus tabel internal, tabel eksternal, view, materialized view, serta tabel snapshot.
Manajemen koneksi
Kelola konfigurasi Connection untuk mengakses sumber data eksternal seperti OSS dan OTS.
Manajemen izin
Terapkan kontrol akses detail halus melalui Role dan Policy.
Keamanan data
Terapkan kontrol akses tingkat kolom melalui Taxonomy dan Policy Tag, serta penyembunyian data dinamis melalui DataPolicy.
Metadata Crawling
Temukan dan pindai metadata dari sumber data eksternal secara otomatis melalui DataScan.
Manajemen model
Kelola metadata untuk model pembelajaran mesin dengan dukungan multi-versi.
Pencarian resource
Cari berbagai entitas metadata dalam suatu namespace.
Model resource
CatalogAPI mengikuti gaya desain RESTful. Hirarki resource intinya adalah sebagai berikut:
Namespace (UID akun utama)
├── Connection # Koneksi sumber data eksternal
├── Role # Role kustom
├── Taxonomy # Klasifikasi tag kebijakan
│ └── PolicyTag # Tag kebijakan
├── DataPolicy # Kebijakan data (aturan penyembunyian)
├── DataScan # Tugas pemerindaian metadata
│ └── ScanJob # Pekerjaan pemerindaian
Project # Proyek MaxCompute
└── Schema # Namespace (direktori)
├── Table # Tabel data
│ └── Partition # Partisi
└── Model # Model pembelajaran mesinID Namespace adalah UID akun utama Alibaba Cloud.
Mulai cepat
Instal SDK
SDK CatalogAPI tersedia untuk Java dan Python, di-host di repositori GitHub Alibaba Cloud.
// Tambahkan dependensi di proyek Maven
<dependency>
<groupId>com.aliyun.odps</groupId>
<artifactId>catalog-api</artifactId>
<version>0.2.2</version>
</dependency>pip install pyodps-catalogInisialisasi klien
Inisialisasi klien CatalogAPI menggunakan Pasangan Kunci Akses (AccessKey).
Jangan hard-code pasangan AccessKey di kode Anda. Gunakan Variabel lingkungan atau file konfigurasi untuk mengelola kredensial.
import com.aliyun.odps.catalog.Client;
import com.aliyun.odps.models.Config;
public class CatalogDemo {
public static void main(String[] args) throws Exception {
// Inisialisasi konfigurasi
Config config = new Config();
config.setAccessKeyId(System.getenv("ALIBABACLOUD_ACCESS_KEY_ID"));
config.setAccessKeySecret(System.getenv("ALIBABACLOUD_ACCESS_KEY_SECRET"));
// Tetapkan endpoint MaxCompute. SDK secara otomatis menemukan endpoint CatalogAPI melalui API routing.
// Ganti cn-shanghai dengan wilayah Anda yang sebenarnya.
config.setOdpsEndpoint("service.cn-shanghai.maxcompute.aliyun.com");
// Buat klien
Client client = new Client(config);
// Gunakan klien untuk memanggil API
}
}import os
from pyodps_catalog.client import Client
from maxcompute_tea_openapi.models import Config
# Inisialisasi konfigurasi
config = Config(
access_key_id=os.environ.get('ALIBABACLOUD_ACCESS_KEY_ID'),
access_key_secret=os.environ.get('ALIBABACLOUD_ACCESS_KEY_SECRET'),
# Metode 1 (disarankan): Tetapkan odps_endpoint. SDK secara otomatis menemukan endpoint CatalogAPI melalui API routing.
odps_endpoint='service.cn-shanghai.maxcompute.aliyun.com'
# Metode 2: Tentukan langsung endpoint CatalogAPI.
# endpoint='catalogapi.cn-shanghai.maxcompute.aliyun.com'
)
# Buat klien
client = Client(config)
# Gunakan klien untuk memanggil APIContoh: Daftar tabel
Contoh ini mencantumkan semua tabel dalam skema tertentu:
import com.aliyun.odps.catalog.models.ListTablesResponse;
import com.aliyun.odps.catalog.models.Table;
ListTablesResponse response = client.listTables(
"my_project", // projectId
"default", // schemaName
100, // pageSize
"" // pageToken. Berikan string kosong untuk panggilan pertama
);
if (response.getTables() != null) {
for (Table table : response.getTables()) {
System.out.println("Table: " + table.getTableName());
}
}
// Jika ada halaman tambahan, gunakan nextPageToken untuk melanjutkan
String nextToken = response.getNextPageToken();response = client.list_tables(
project_id="my_project",
schema_name="default",
page_size=100,
page_token=""
)
if response.tables:
for table in response.tables:
print(f"Table: {table.table_name}")
# Jika ada halaman tambahan, gunakan next_page_token untuk melanjutkan
next_token = response.next_page_tokenOtentikasi
Kredensial akses
CatalogAPI memerlukan pasangan AccessKey Alibaba Cloud untuk otentikasi. Kami merekomendasikan penggunaan pasangan AccessKey Pengguna RAM dan menerapkan prinsip hak istimewa minimal.
Daftar izin
Tabel berikut mencantumkan izin yang diperlukan untuk setiap Operasi API:
Policy dan Role
CatalogAPI mendukung kontrol akses berbasis Policy. Policy terdiri dari serangkaian Binding, di mana setiap Binding menetapkan Role kepada sekumpulan Member.
Model Policy
{ "etag": "string", "bindings": [ { "role": "string", "members": ["string"] } ] }etag: digunakan untuk validasi konsistensi read-modify-write
bindings: daftar binding role
peran: Nama peran
members: daftar member dalam format user:{userId}
Contoh Set Policy
import com.aliyun.odps.catalog.models.*; // Bangun SetPolicyRequest Policy policy = new Policy(); Binding binding = new Binding(); // Field role memerlukan format path resource lengkap: namespaces/{namespaceId}/roles/{roleName} binding.setRole("namespaces/{namespaceId}/roles/odps.admin"); binding.setMembers(Arrays.asList("user:123456789")); policy.setBindings(Arrays.asList(binding)); policy.setEtag("fetch_with_get_policy"); SetPolicyRequest request = new SetPolicyRequest(); request.setPolicy(policy); // Tetapkan Policy tabel client.setTablePolicy(table, request);
Model data
Field umum
Field | Tipe | Deskripsi |
name | string | Nama resource REST lengkap, unik secara global dalam domain. SDK menggunakan nama resource untuk membangun URL permintaan REST. Biasanya merupakan field output-only. |
Tipe data
Selain tipe JSON standar, penanda tipe data khusus berikut digunakan:
Tipe data | Deskripsi |
enum | Tipe enumerasi semantik, direpresentasikan sebagai string dalam format JSON |
int64 | Integer 64-bit, dikirim sebagai string |
Model tabel
Table adalah salah satu resource inti dalam CatalogAPI.
{
"etag": "string",
"name": "string",
"projectId": "string",
"schemaName": "string",
"tableName": "string",
"type": "enum(TableType)",
"description": "string",
"tableSchema": { "object(TableFieldSchema)" },
"clustering": { "object(Clustering)" },
"tableConstraints": { "object(TableConstraints)" },
"partitionDefinition": { "object(PartitionDefinition)" },
"tableFormatDefinition": { "object(TableFormatDefinition)" },
"externalDataConfiguration": { "object(ExternalDataConfiguration)" },
"maxLakeConfiguration": { "object(MaxLakeConfiguration)" },
"externalCatalogTableOptions": { "object(ExternalCatalogTableOptions)" },
"expirationOptions": { "object(ExpirationOptions)" },
"createTime": "string (int64 format)",
"lastModifiedTime": "string (int64 format)",
"labels": { "map<string, string>" }
}Model TableFieldSchema
Tipe data yang didukung (FieldDataType): TINYINT, SMALLINT, INT, BIGINT, BINARY, FLOAT, DOUBLE, DECIMAL, VARCHAR, CHAR, STRING, DATE, DATETIME, TIMESTAMP, TIMESTAMP_NTZ, BOOLEAN, STRUCT, ARRAY, MAP
{
"fieldName": "string",
"sqlTypeDefinition": "string",
"typeCategory": "enum(FieldDataType)",
"mode": "enum(FieldMode)",
"fields": [{ "object(TableFieldSchema)" }],
"description": "string",
"policyTags": { "object(PolicyTags)" },
"maxLength": "string (int64 format)",
"precision": "string (int64 format)",
"scale": "string (int64 format)",
"defaultValueExpression": "string"
}Model Connection
Connection digunakan untuk mengonfigurasi informasi koneksi guna mengakses sumber data eksternal seperti OSS dan OTS.
{
"name": "string",
"connectionName": "string",
"description": "string",
"creationTime": "string (int64 format)",
"lastModifiedTime": "string (int64 format)",
"connectionType": "enum(ConnectionType)",
"cloudResource": { "object(CloudResourceOptions)" },
"region": "string"
}Model peran
Role digunakan untuk mendefinisikan role kustom.
{
"name": "string",
"roleName": "string",
"description": "string",
"includedPermissions": ["string"],
"etag": "string",
"deleted": false
}Model Taxonomy
Taxonomy digunakan untuk mengelola sistem klasifikasi tag kebijakan (Policy Tag).
{
"name": "string",
"taxonomyName": "string",
"description": "string",
"activatedPolicyTypes": ["enum(PolicyType)"],
"policyTagCount": 0,
"createTime": "string (int64 format)",
"lastModifiedTime": "string (int64 format)"
}Model PolicyTag
PolicyTag adalah tag kebijakan yang dilampirkan pada Taxonomy, digunakan untuk menerapkan kontrol akses tingkat kolom.
{
"name": "string",
"policyTagName": "string",
"description": "string",
"parentPolicyTag": "string",
"childPolicyTags": ["string"]
}Model DataPolicy
DataPolicy digunakan untuk mendefinisikan aturan penyembunyian data.
{
"name": "string",
"dataPolicyName": "string",
"policyTag": "string",
"dataPolicyType": "enum(DataPolicyType)",
"dataMaskingPolicy": { "object(DataMaskingPolicy)" }
}Model DataScan
DataScan digunakan untuk mengonfigurasi tugas pemerindaian metadata.
{
"name": "string",
"scanName": "string",
"type": "string",
"creator": "string",
"customerId": "string",
"namespaceId": "string",
"description": "string",
"scanId": "string",
"creationTime": 0,
"lastModifiedTime": 0,
"lastTriggeredTime": 0,
"lastSuccessfulScheduleTime": 0,
"lastTriggeredBy": "string",
"schedulingStatus": "string",
"source": { "object(DataScanSource)" },
"target": { "object(DataScanTarget)" },
"properties": { "object(DataScanProperties)" },
"schedulerMode": "string",
"schedulerInterval": "string",
"scheduledCount": 0
}Model
Model digunakan untuk mengelola metadata untuk model pembelajaran mesin.
{
"name": "string",
"modelName": "string",
"versionName": "string",
"defaultVersion": "string",
"createTime": "string",
"updateTime": "string",
"versionCreateTime": "string",
"versionUpdateTime": "string",
"description": "string",
"versionDescription": "string",
"expirationDays": 0,
"versionExpirationDays": 0,
"sourceType": "string",
"modelType": "string",
"labels": { "map<string, string>" },
"transform": { "map<string, string>" },
"path": "string",
"options": { "map<string, string>" },
"extraInfo": { "map<string, string>" },
"versionExtraInfo": { "map<string, string>" },
"trainingInfo": { "map<string, string>" },
"inferenceParameters": { "map<string, string>" },
"featureColumns": { "object(ModelFieldSchema)" },
"tasks": ["string"]
}Model Schema
{
"name": "string",
"schemaName": "string",
"description": "string",
"type": "enum(SchemaType)",
"owner": "string",
"externalSchemaConfiguration": { "object(ExternalSchemaConfiguration)" }
}Model Project
{
"name": "string",
"projectId": "string",
"owner": "string",
"description": "string",
"createTime": "string (int64 format)",
"lastModifiedTime": "string (int64 format)",
"schemaEnabled": "boolean",
"region": "string"
}Model Partition
{
"spec": "string"
}Field | Tipe | Deskripsi |
spec | string | Spesifikasi partisi. Contoh format: bu=tt/ds=20250515 |
Model Pencarian
{
"name": "string",
"displayName": "string",
"type": "string",
"aspects": { "map<string, string>" },
"createTime": "string",
"lastModifiedTime": "string",
"description": "string"
}Referensi API
Catatan umum
Awalan URL: Semua URL API dalam dokumen ini menggunakan awalan berikut: /api/catalog/v1alpha/.
Awalan ini tidak diulang dalam deskripsi API individual.
Penanganan error
Kode status HTTP | Alasan | Deskripsi |
400 | InvalidArgument | Input permintaan tidak valid |
403 | AccessDenied | Tidak memiliki izin untuk melakukan operasi ini |
404 | NotFound | Objek yang akan dioperasikan tidak ada |
409 | AlreadyExists | Objek yang akan dibuat sudah ada |
429 | RateLimitExceeded | Laju permintaan terlalu tinggi. Pembatasan laju dipicu |
500 | InternalError | Error server internal |
API Tabel
Buat tabel
Buat tabel baru.
Signature metode
Table createTable(Table table)Parameter permintaan
Parameter
Tipe
Wajib
Deskripsi
table
Table
Ya
Objek tabel, berisi definisi tabel lengkap
Respons
Mengembalikan objek Table yang dibuat.
Contoh penggunaan
// Bangun tabel Table table = new Table(); table.setProjectId("my_project"); table.setSchemaName("default"); table.setTableName("my_table"); table.setDescription("Ini adalah contoh tabel"); table.setType("TABLE"); // Tetapkan skema tabel TableFieldSchema field = new TableFieldSchema(); field.setFieldName("id"); field.setTypeCategory("BIGINT"); field.setMode("REQUIRED"); TableFieldSchema nameField = new TableFieldSchema(); nameField.setFieldName("name"); nameField.setTypeCategory("STRING"); nameField.setMode("NULLABLE"); TableFieldSchema schema = new TableFieldSchema(); schema.setFields(Arrays.asList(field, nameField)); table.setTableSchema(schema); // Buat tabel Table createdTable = client.createTable(table); System.out.println("Tabel dibuat: " + createdTable.getName());
Dapatkan tabel
Dapatkan informasi detail tentang tabel tertentu.
Signature metode
Table getTable(Table table)Parameter permintaan
Parameter
Tipe
Wajib
Deskripsi
table
Table
Ya
Objek tabel yang berisi projectId, schemaName, dan tableName
Respons
Mengembalikan objek Table.
Contoh penggunaan
Table query = new Table(); query.setProjectId("my_project"); query.setSchemaName("default"); query.setTableName("my_table"); Table result = client.getTable(query); System.out.println("Tipe tabel: " + result.getType()); System.out.println("Deskripsi: " + result.getDescription());
Perbarui tabel
Perbarui atribut tabel tertentu.
Signature metode
Table updateTable(Table table)Parameter permintaan
Parameter
Tipe
Wajib
Deskripsi
table
Table
Ya
Objek tabel yang berisi pembaruan
Respons
Mengembalikan objek Table yang diperbarui.
Contoh penggunaan
Table table = client.getTable(query); table.setDescription("Deskripsi diperbarui"); Table updated = client.updateTable(table);
Hapus tabel
Hapus tabel tertentu.
Signature metode
HttpResponse deleteTable(Table table)Parameter permintaan
Parameter
Tipe
Wajib
Deskripsi
table
Table
Ya
Objek tabel yang berisi projectId, schemaName, dan tableName
Respons
Mengembalikan HttpResponse kosong jika berhasil.
Contoh penggunaan
HttpResponse response = client.deleteTable(table); System.out.println("Kode status: " + response.getStatusCode());
Daftar tabel
Cantumkan semua tabel dalam skema tertentu.
Signature metode
ListTablesResponse listTables(String projectId, String schemaName, Integer pageSize, String pageToken)Parameter permintaan
Parameter
Tipe
Wajib
Deskripsi
projectId
string
Ya
ID Proyek
schemaName
string
Ya
Nama skema
pageSize
integer
Tidak
Ukuran halaman. Default ke 100, maksimum 1000
pageToken
string
Tidak
Token halaman. Default ke kosong
Respons
{ "tables": [Table], "nextPageToken": "string" }Contoh penggunaan
ListTablesResponse response = client.listTables("my_project", "default", 100, ""); // Iterasi melalui semua halaman while (response.getTables() != null && !response.getTables().isEmpty()) { for (Table t : response.getTables()) { System.out.println(t.getTableName()); } if (response.getNextPageToken() == null || response.getNextPageToken().isEmpty()) { break; } response = client.listTables("my_project", "default", 100, response.getNextPageToken()); }
Tetapkan Policy tabel
Tetapkan kebijakan akses tabel.
Signature metode
Policy setTablePolicy(Table table, SetPolicyRequest request)Parameter permintaan
Parameter
Tipe
Wajib
Deskripsi
table
Table
Ya
Objek tabel
request
SetPolicyRequest
Ya
Permintaan kebijakan
Respons
Mengembalikan objek Policy yang diperbarui.
Dapatkan Policy tabel
Dapatkan kebijakan akses tabel.
Signature metode
Policy getTablePolicy(Table table)Parameter permintaan
Parameter
Tipe
Wajib
Deskripsi
table
Table
Ya
Objek tabel
Respons
Mengembalikan objek Policy tabel.
Dapatkan DataToken tabel
Dapatkan token akses sementara untuk tabel tertentu.
Signature metode
DataToken getDataToken(Table table, Integer duration)Parameter permintaan
Parameter
Tipe
Wajib
Deskripsi
table
Table
Ya
Objek tabel
duration
integer
Tidak
Periode validitas token (detik)
Respons
{ "version": "string", "type": "string", "value": "string", "expiration": "string" }Deskripsi field DataToken
Field
Type
Deskripsi
version
string
Versi format. Saat ini V1
type
string
Tipe. Saat ini hanya STS yang didukung
value
string
Isi token, di-encode base64
expiration
string
Waktu kedaluwarsa
API Partisi
Daftar partisi
Cantumkan semua partisi dari tabel tertentu.
Signature metode
ListPartitionsResponse listPartitions( String projectId, String schemaName, String tableName, Integer pageSize, String pageToken, String query, String view )Parameter permintaan
Parameter
Tipe
Wajib
Deskripsi
projectId
string
Ya
ID Proyek
schemaName
string
Ya
Nama skema
tableName
string
Ya
Nama tabel
pageSize
integer
Tidak
Ukuran halaman. Default ke 100, maksimum 1000
pageToken
string
Tidak
Token halaman. Default ke kosong
query
string
Tidak
Kondisi pencarian partisi, misalnya, partition_name:part
view
string
Tidak
Saat ini, hanya BASIC yang didukung
Respons
{ "partitions": [Partition], "nextPageToken": "string" }
API Koneksi
Buat koneksi
Buat koneksi sumber data eksternal baru.
Signature metode
Connection createConnection(String namespace, Connection connection)Parameter permintaan
Parameter
Tipe
Wajib
Deskripsi
namespace
string
Ya
ID Namespace (UID akun utama)
connection
Connection
Ya
Objek koneksi
Respons
Mengembalikan objek Connection yang dibuat.
Contoh penggunaan
// Bangun Koneksi Connection conn = new Connection(); conn.setConnectionName("my_oss_connection"); conn.setDescription("Koneksi untuk mengakses OSS"); conn.setConnectionType("CLOUD_RESOURCE"); CloudResourceOptions options = new CloudResourceOptions(); options.setRamRoleArn("acs:ram::123456789:role/MaxComputeOSSRole"); conn.setCloudResource(options); // Buat koneksi Connection created = client.createConnection("123456789", conn);
Daftar koneksi
Cantumkan semua koneksi dalam namespace tertentu.
Signature metode
ListConnectionsResponse listConnections(String namespace, Integer pageSize, String pageToken)Parameter permintaan
Parameter
Tipe
Wajib
Deskripsi
namespace
string
Ya
ID Namespace
pageSize
integer
Tidak
Ukuran halaman. Default ke 100, maksimum 1000
pageToken
string
Tidak
Token halaman. Default ke kosong
Respons
{ "connections": [Connection], "nextPageToken": "string" }
Dapatkan koneksi
Dapatkan informasi detail tentang koneksi tertentu.
Signature metode
Connection getConnection(String namespace, String connectionName)
Perbarui koneksi
Perbarui atribut koneksi tertentu.
Signature metode
Connection updateConnection(String namespace, String connectionName, Connection connection, String updateMask)Parameter permintaan
Parameter
Tipe
Wajib
Deskripsi
namespace
string
Ya
ID Namespace
connectionName
string
Ya
Nama koneksi
connection
Connection
Ya
Objek koneksi yang berisi pembaruan
updateMask
string
Ya
Tentukan field yang akan diperbarui. Saat ini, hanya field description yang didukung
Respons
Mengembalikan objek Connection yang diperbarui.
Contoh penggunaan
Connection conn = new Connection(); conn.setConnectionName("my_oss_connection"); conn.setDescription("Deskripsi diperbarui"); Connection updated = client.updateConnection("123456789", "my_oss_connection", conn, "description");
Hapus koneksi
Hapus koneksi tertentu.
Signature metode
HttpResponse deleteConnection(String namespace, String connectionName)
Tetapkan kebijakan koneksi
Tetapkan kebijakan akses koneksi.
Signature metode
Policy setConnectionPolicy(String namespace, String connectionName, SetPolicyRequest request)
Mendapatkan kebijakan koneksi
Dapatkan kebijakan akses koneksi.
Signature metode
Policy getConnectionPolicy(String namespace, String connectionName)
API Role
Buat role
Buat Role kustom.
Signature metode
Role createRole(String namespace, Role role)Parameter permintaan
Parameter
Tipe
Wajib
Deskripsi
namespace
string
Ya
ID Namespace
role
Role
Ya
Objek role
Respons
Mengembalikan objek Role yang dibuat.
Contoh penggunaan
Role role = new Role(); role.setRoleName("my_custom_role"); role.setDescription("Role kustom"); role.setIncludedPermissions(Arrays.asList("odps:CreateTable", "odps:ListTable")); Role created = client.createRole("123456789", role);
Daftar role
Cantumkan semua role dalam namespace tertentu.
Signature metode
ListRolesResponse listRoles( String namespace, Integer pageSize, String pageToken, String view, Boolean showDeleted )Parameter permintaan
Parameter
Tipe
Wajib
Deskripsi
namespace
string
Ya
ID Namespace
pageSize
integer
Tidak
Ukuran halaman. Default ke 100, maksimum 1000
pageToken
string
Tidak
Token halaman. Default ke kosong
view
enum(RoleView)
Tidak
Default ke BASIC. Ketika diatur ke FULL, semua field dikembalikan
showDeleted
boolean
Tidak
Apakah role yang dihapus disertakan. Default ke false
Respons
{ "roles": [Role], "nextPageToken": "string" }
Dapatkan role
Dapatkan informasi detail mengenai peran yang telah ditentukan.
Signature metode
Role getRole(String namespace, String roleName)Parameter permintaan
Parameter
Tipe
Wajib
Deskripsi
namespace
string
Ya
ID Namespace
roleName
string
Ya
Nama role
Perbarui role
Perbarui atribut role tertentu.
Signature metode
Role updateRole(String namespace, String roleName, Role role, String updateMask)Parameter permintaan
Parameter
Tipe
Wajib
Deskripsi
namespace
string
Ya
ID Namespace
roleName
string
Ya
Nama role
role
Role
Ya
Objek role yang berisi pembaruan
updateMask
string
Ya
Tentukan field yang akan diperbarui, seperti
"description, includedPermissions"
Hapus role
Hapus role kustom tertentu.
Signature metode
HttpResponse deleteRole(String namespace, String roleName)
Setelah role dihapus, perubahan berikut berlaku segera:
Role tidak dapat lagi diikat ke Policy.
Policy yang sudah diikat ke role ini tetap dalam keadaan terikat, tetapi tidak berpengaruh.
Operasi daftar role tidak mencantumkan role yang dihapus secara default. Setelah dihapus, role tersebut tetap dihitung terhadap batas total dan tetap dalam keadaan dihapus selama tujuh hari. Setelah tujuh hari, role tersebut dihapus permanen, semua ikatan resource dengan role ini dihapus, dan tidak lagi dihitung terhadap batas total.
Atur Kebijakan Peran
Tetapkan kebijakan akses role.
Signature metode
Policy setRolePolicy(String namespace, String roleName, SetPolicyRequest request)
Dapatkan Kebijakan Peran
Dapatkan kebijakan akses role.
Signature metode
Policy getRolePolicy(String namespace, String roleName)
API Taxonomy
Buat Taxonomy
Buat klasifikasi tag kebijakan baru.
Signature metode
Taxonomy createTaxonomy(String namespace, Taxonomy taxonomy)Parameter permintaan
Parameter
Tipe
Wajib
Deskripsi
namespace
string
Ya
ID Namespace
taxonomy
Taxonomy
Ya
Objek taxonomy
Response
Mengembalikan objek Taxonomy yang dibuat.
Contoh penggunaan
Taxonomy taxonomy = new Taxonomy(); taxonomy.setTaxonomyName("sensitive_data"); taxonomy.setDescription("Klasifikasi data sensitif"); taxonomy.setActivatedPolicyTypes(Arrays.asList("FINE_GRAINED_ACCESS_CONTROL")); Taxonomy created = client.createTaxonomy("123456789", taxonomy);
Daftar Taxonomy
Cantumkan semua Taxonomy dalam namespace tertentu.
Signature metode
ListTaxonomiesResponse listTaxonomies(String namespace, Integer pageSize, String pageToken)
Dapatkan Taxonomy
Dapatkan informasi detail tentang Taxonomy tertentu.
Signature metode
Taxonomy getTaxonomy(String namespace, String taxonomyId)
Perbarui Taxonomy
Perbarui atribut Taxonomy tertentu.
Signature metode
Taxonomy updateTaxonomy(String namespace, String taxonomyId, Taxonomy taxonomy, String updateMask)Parameter permintaan
Parameter
Tipe
Wajib
Deskripsi
namespace
string
Ya
ID Namespace
taxonomyId
string
Ya
ID Taxonomy
taxonomy
Taxonomy
Ya
Objek taxonomy yang berisi pembaruan
updateMask
string
Ya
Tentukan field yang akan diperbarui, seperti
"description, activatedPolicyTypes"
Hapus Taxonomy
Menghapus secara kaskade semua tag kebijakan, kebijakan data yang dikonfigurasi, dan hubungan pengikatan kolom di bawah taxonomy.
Signature metode
HttpResponse deleteTaxonomy(String namespace, String taxonomyId)
Tetapkan Policy Taxonomy
Tetapkan kebijakan akses Taxonomy.
Signature metode
Policy setTaxonomyPolicy(String namespace, String taxonomyId, SetPolicyRequest request)
Dapatkan Policy Taxonomy
Dapatkan kebijakan akses Taxonomy.
Signature metode
Policy getTaxonomyPolicy(String namespace, String taxonomyId)
API PolicyTag
Buat PolicyTag
Buat tag kebijakan baru di bawah Taxonomy tertentu.
Signature metode
PolicyTag createPolicyTag(String namespace, String taxonomyId, PolicyTag policyTag)Parameter permintaan
Parameter
Tipe
Wajib
Deskripsi
namespace
string
Ya
ID Namespace
taxonomyId
string
Ya
ID Taxonomy
policyTag
PolicyTag
Ya
Objek PolicyTag
Respons
Mengembalikan objek PolicyTag yang dibuat.
Contoh penggunaan
PolicyTag tag = new PolicyTag(); tag.setPolicyTagName("phone_number"); tag.setDescription("Tag penyembunyian nomor telepon"); PolicyTag created = client.createPolicyTag("123456789", "taxonomy_id_123", tag);
Daftar PolicyTag
Cantumkan semua PolicyTag di bawah Taxonomy tertentu.
Signature metode
ListPolicyTagsResponse listPolicyTags( String namespace, String taxonomyId, Integer pageSize, String pageToken )
Dapatkan PolicyTag
Dapatkan informasi detail tentang PolicyTag tertentu.
Signature metode
PolicyTag getPolicyTag(String namespace, String taxonomyId, String policyTagId)
Perbarui PolicyTag
Perbarui atribut PolicyTag tertentu.
Signature metode
PolicyTag updatePolicyTag( String namespace, String taxonomyId, String policyTagId, PolicyTag policyTag, String updateMask )Parameter permintaan
Parameter
Tipe
Wajib
Deskripsi
namespace
string
Ya
ID Namespace
taxonomyId
string
Ya
ID Taxonomy
policyTagId
string
Ya
ID PolicyTag
policyTag
PolicyTag
Ya
Objek PolicyTag yang berisi pembaruan
updateMask
string
Ya
Tentukan field yang akan diperbarui. Saat ini, hanya field description yang didukung
Hapus PolicyTag
Hapus tag kebijakan dan hapus secara rekursif: semua node anak dari tag kebijakan, semua kebijakan data yang dikonfigurasi pada tag kebijakan (termasuk node anak), serta hubungan pengikatan kolom tag kebijakan pada tabel (termasuk node anak).
Signature metode
HttpResponse deletePolicyTag(String namespace, String taxonomyId, String policyTagId)
Tetapkan Policy PolicyTag
Tetapkan kebijakan akses PolicyTag.
Signature metode
Policy setPolicyTagPolicy(String namespace, String taxonomyId, String policyTagId, SetPolicyRequest request)
Dapatkan Kebijakan PolicyTag
Dapatkan kebijakan akses PolicyTag.
Signature metode
Policy getPolicyTagPolicy(String namespace, String taxonomyId, String policyTagId)
API DataPolicy
Buat DataPolicy
Buat kebijakan data baru (aturan penyembunyian).
Signature metode
DataPolicy createDataPolicy(String namespace, DataPolicy dataPolicy)Parameter permintaan
Parameter
Tipe
Wajib
Deskripsi
namespace
string
Ya
ID Namespace
dataPolicy
DataPolicy
Ya
Objek DataPolicy
Respons
Mengembalikan objek DataPolicy yang dibuat.
Contoh penggunaan
// Bangun aturan penyembunyian DataMaskingPolicy maskingPolicy = new DataMaskingPolicy(); maskingPolicy.setPredefinedExpression("STRING_MASKED_BA"); DataPolicy policy = new DataPolicy(); policy.setDataPolicyName("phone_masking"); policy.setPolicyTag("namespaces/123456789/taxonomies/tid_123/policyTags/ptid_456"); policy.setDataPolicyType("DATA_MASKING_POLICY"); policy.setDataMaskingPolicy(maskingPolicy); DataPolicy created = client.createDataPolicy("123456789", policy);
Daftar DataPolicy
Cantumkan semua DataPolicy dalam namespace tertentu.
Signature metode
ListDataPoliciesResponse listDataPolicies(String namespace, Integer pageSize, String pageToken)
Dapatkan DataPolicy
Dapatkan informasi detail tentang DataPolicy tertentu.
Signature metode
DataPolicy getDataPolicy(String namespace, String dataPolicyName)
Hapus DataPolicy
Hapus DataPolicy tertentu.
Signature metode
HttpResponse deleteDataPolicy(String namespace, String dataPolicyName)
Tetapkan Policy DataPolicy
Tetapkan kebijakan akses DataPolicy.
Signature metode
Policy setDataPolicyPolicy(String namespace, String dataPolicyName, SetPolicyRequest request)
Dapatkan Policy DataPolicy
Dapatkan kebijakan akses DataPolicy.
Signature metode
Policy getDataPolicyPolicy(String namespace, String dataPolicyName)
API DataScan
Buat DataScan
Buat tugas pemerindaian metadata baru.
Signature metode
DataScan createDataScan(String namespace, DataScan dataScan)Parameter permintaan
Parameter
Tipe
Wajib
Deskripsi
namespace
string
Ya
ID Namespace
dataScan
DataScan
Ya
Objek DataScan
Respons
Mengembalikan objek DataScan yang dibuat.
Contoh penggunaan
// Bangun tugas pemerindaian DataScanSource source = new DataScanSource(); source.setLocation("oss://my-bucket/my-path/"); source.setConnection("my_oss_connection"); DataScanTarget target = new DataScanTarget(); target.setProject("my_project"); target.setSchema("default"); target.setNamePrefix("auto_"); DataScanProperties properties = new DataScanProperties(); properties.setFormatFilter("AUTO"); properties.setScanMode("SAMPLE"); properties.setAutoCommit(true); DataScan dataScan = new DataScan(); dataScan.setScanName("my_oss_scan"); dataScan.setType("TABLE_DISCOVERY"); dataScan.setDescription("Pindai metadata OSS"); dataScan.setSource(source); dataScan.setTarget(target); dataScan.setProperties(properties); dataScan.setSchedulerMode("MANUAL"); DataScan created = client.createDataScan("123456789", dataScan);
Daftar DataScan
Cantumkan semua DataScan dalam namespace tertentu.
Signature metode
ListDataScansResponse listDataScans(String namespace, Integer pageSize, String pageToken)
Dapatkan DataScan
Dapatkan informasi detail tentang DataScan tertentu.
Signature metode
DataScan getDataScan(String namespace, String dataScanName)
Perbarui DataScan
Perbarui atribut DataScan tertentu.
Signature metode
DataScan updateDataScan(String namespace, DataScan dataScan, String updateMask)
Hapus DataScan
Hapus DataScan tertentu.
Signature metode
HttpResponse deleteDataScan(String namespace, String dataScanName)
PicuDataScan
Picu secara manual tugas pemerindaian DataScan.
Signature metode
HttpResponse triggerDataScan(String namespace, String dataScanName)Contoh penggunaan
HttpResponse response = client.triggerDataScan("123456789", "my_oss_scan"); System.out.println("Dipicu: " + response.getStatusCode());
Daftar pekerjaan DataScan
Cantumkan riwayat pekerjaan pemerindaian dari DataScan tertentu.
Signature metode
ListDataScanJobsResponse listDataScanJobs( String namespace, String dataScanName, Integer pageSize, String pageToken )Respons
{ "scanJobs": [ScanJob], "nextPageToken": "string" }Model ScanJob
Field
Tipe
Deskripsi
jobId
string
ID Pekerjaan
namespaceId
string
Namespace tempat pekerjaan berada
dataScanId
string
ID dataScan yang dihasilkan sistem
dataScanName
string
Nama tugas pemerindaian induk
triggeredBy
string
Orang yang memicu pekerjaan pemerindaian ini. scheduler untuk pemicu terjadwal
startTime
int64
Waktu mulai pekerjaan pemerindaian, timestamp UTC
endTime
int64
Waktu selesai pekerjaan pemerindaian, timestamp UTC
status
string
Status pekerjaan pemerindaian: Created/Running/Terminated/Failed
statusDetail
string
Detail status pekerjaan pemerindaian, seperti pesan error
ddl
string
Informasi DDL yang dikembalikan oleh pekerjaan pemerindaian yang perlu di-commit
stats
string
Informasi stats yang dikembalikan oleh pekerjaan pemerindaian dalam format JSON
API Model
Buat model
Buat model pembelajaran mesin baru.
Signature metode
Model createModel(String projectId, String schemaName, Model model)Parameter permintaan
Parameter
Tipe
Wajib
Deskripsi
projectId
string
Ya
ID Proyek
schemaName
string
Ya
Nama skema
model
Model
Ya
Objek model
Respons
Mengembalikan objek Model yang dibuat.
Contoh penggunaan
Model model = new Model(); model.setModelName("my_llm_model"); model.setVersionName("v1"); model.setDefaultVersion("v1"); model.setDescription("Model bahasa besar saya"); model.setSourceType("IMPORT"); model.setModelType("LLM"); model.setPath("oss://my-bucket/models/my_llm/"); model.setTasks(Arrays.asList("text-generation", "chat")); Model created = client.createModel("my_project", "default", model);
Daftar model
Cantumkan semua model dalam skema tertentu.
Signature metode
ListModelsResponse listModels( String projectId, String schemaName, Integer pageSize, String pageToken )
Dapatkan model
Dapatkan informasi detail tentang model tertentu.
Signature metode
Model getModel(String projectId, String schemaName, String modelName, String versionName)Parameter permintaan
Parameter
Tipe
Wajib
Deskripsi
projectId
string
Ya
ID Proyek
schemaName
string
Ya
Nama skema
modelName
string
Ya
Nama model
versionName
string
Tidak
Nama versi. Jika tidak ditentukan, metadata model (tanpa versi) yang diambil
Perbarui model
Perbarui atribut model tertentu.
Signature metode
Model updateModel( String projectId, String schemaName, String modelName, Model model, String updateMask, String versionName )
Hapus model
Hapus model tertentu (termasuk semua versi).
Signature metode
HttpResponse deleteModel(String projectId, String schemaName, String modelName)
Buat versi model
Buat versi baru untuk model tertentu.
Signature metode
Model createModelVersion(String projectId, String schemaName, String modelName, Model model)Contoh penggunaan
Model version = new Model(); version.setModelName("my_llm_model"); version.setVersionName("v2"); version.setVersionDescription("Versi model diperbarui"); version.setPath("oss://my-bucket/models/my_llm_v2/"); version.setTasks(Arrays.asList("text-generation", "chat")); Model createdVersion = client.createModelVersion("my_project", "default", "my_llm_model", version);
Hapus versi model
Hapus versi model tertentu.
Signature metode
HttpResponse deleteModelVersion( String projectId, String schemaName, String modelName, String versionName )
Daftar versi model
Cantumkan semua versi dari model tertentu.
Signature metode
ListModelVersionsResponse listModelVersions( String projectId, String schemaName, String modelName, Integer pageSize, String pageToken )
Tetapkan Policy model
Tetapkan kebijakan akses model.
Signature metode
Policy setModelPolicy(String projectId, String schemaName, String modelName, SetPolicyRequest request)
Dapatkan Policy model
Dapatkan kebijakan akses model.
Signature metode
Policy getModelPolicy(String projectId, String schemaName, String modelName)
API Project
Dapatkan Proyek
Dapatkan informasi detail tentang Project tertentu.
Signature metode
Project getProject(String projectId)Contoh penggunaan
Project project = client.getProject("my_project"); System.out.println("Pemilik proyek: " + project.getOwner()); System.out.println("Skema diaktifkan: " + project.getSchemaEnabled()); System.out.println("Wilayah: " + project.getRegion());
API Skema
Buat Skema
Buat Skema baru dalam Project tertentu.
Signature metode
Schema createSchema(String projectId, Schema schema)Parameter permintaan
Parameter
Tipe
Wajib
Deskripsi
projectId
string
Ya
ID Proyek
schema
Schema
Ya
Objek skema
Respons
Mengembalikan objek Schema yang dibuat.
Contoh penggunaan
Schema schema = new Schema(); schema.setSchemaName("my_schema"); schema.setDescription("Skema kustom saya"); Schema created = client.createSchema("my_project", schema);
Daftar Skema
Cantumkan semua Skema dalam Project tertentu.
Signature metode
ListSchemasResponse listSchemas(String projectId, Integer pageSize, String pageToken)
Dapatkan Skema
Dapatkan informasi detail tentang Skema tertentu.
Signature metode
Schema getSchema(String projectId, String schemaName)
Perbarui Skema
Perbarui atribut Skema tertentu.
Signature metode
Schema updateSchema(String projectId, String schemaName, String updateMask, Schema schema)Parameter permintaan
Parameter
Tipe
Wajib
Deskripsi
projectId
string
Ya
ID Proyek
schemaName
string
Ya
Nama skema
updateMask
string
Ya
Tentukan field yang akan diperbarui. Saat ini, hanya field description dan owner yang didukung, dan hanya satu field yang dapat diperbarui sekaligus
schema
Schema
Ya
Objek skema yang berisi pembaruan
Hapus Skema
Hapus Skema tertentu.
Signature metode
HttpResponse deleteSchema(String projectId, String schemaName)
Tetapkan Policy Skema
Tetapkan kebijakan akses Skema.
Signature metode
Policy setSchemaPolicy(String projectId, String schemaName, SetPolicyRequest request)
Dapatkan Policy Skema
Dapatkan kebijakan akses Skema.
Signature metode
Policy getSchemaPolicy(String projectId, String schemaName)
API Pencarian
Cari entitas
Cari berbagai entitas dalam namespace tertentu.
Signature metode
SearchResponse search( String namespaceId, String query, Integer pageSize, String pageToken, String orderBy )Parameter permintaan
Parameter
Tipe
Wajib
Deskripsi
namespaceId
string
Ya
ID akun utama. Pencarian dilakukan dalam cakupan akun utama ini
query
string
Ya
String kueri pencarian yang terdiri dari satu atau lebih kondisi kueri yang dipisahkan koma
pageSize
integer
Tidak
Jumlah hasil per halaman. Harus > 0, maksimum 100
pageToken
string
Tidak
Token halaman
orderBy
string
Tidak
Urutan pengurutan hasil
Sintaks kueri
Daftar kondisi kueri:
Kondisi kueri
Deskripsi
name:foo
Cocokkan foo sebagai substring terhadap nama entitas
description:bar
Cocokkan bar sebagai substring terhadap deskripsi entitas
type=TABLE
Wajib. Cocokkan entitas dengan tipe tertentu. Saat ini mendukung TABLE, RESOURCE, SCHEMA
project=proj
Cari entitas hanya di bawah proyek tertentu. Pemanggil harus memiliki izin SearchProject untuk proyek tersebut
project=(proj1|proj2|proj3)
Cari entitas di beberapa proyek (maksimal 512). Pemanggil harus memiliki izin SearchProject untuk semua proyek yang ditentukan
region=region_id
Cari entitas di bawah proyek dalam wilayah tertentu
project=proj dan project=(proj1|proj2|proj3) tidak dapat digunakan bersamaan
region=region_id tidak dapat digunakan bersamaan dengan kondisi kueri project
Urutan pengurutan (orderBy)
Nilai valid
Deskripsi
default
Urutan penyimpanan internal (default)
create_time asc
Waktu pembuatan ascending
create_time desc
Waktu pembuatan descending
last_modified_time asc
Waktu modifikasi terakhir naik
last_modified_time desc
Waktu modifikasi terakhir descending
Respons
{ "entries": [SearchResultEntry], "nextPageToken": "string" }Contoh penggunaan
// Cari semua tabel dalam proyek tertentu SearchResponse response = client.search( "123456789", // namespaceId "type=TABLE,project=my_project", // query 50, // pageSize "", // pageToken "last_modified_time desc" // orderBy ); if (response.getEntries() != null) { for (SearchResultEntry entry : response.getEntries()) { System.out.println("Nama: " + entry.getDisplayName()); System.out.println("Tipe: " + entry.getType()); System.out.println("Path: " + entry.getName()); } }
Batasan penggunaan
Batas laju
Batas laju diberlakukan di tingkat akun utama. Setiap metode memiliki batas lajunya sendiri, yang bervariasi berdasarkan kategori permintaan.
Batas | Nilai |
Metode Get dan GetPolicy | 1500 permintaan / 15 detik |
Metode List, Create, Update, Delete, dan SetPolicy | 150 permintaan / 15 detik |
GetProject, ListTables, ListPartitions view=StorageDetail/FULL | 15 permintaan / 15 detik |
Batas kapasitas
Batas | Nilai |
Jumlah role kustom per akun utama | 300 |
Jumlah izin per Role | 3000 |
Jumlah principal per Allow Policy | 1500 |
Ukuran total Role kustom tunggal (termasuk description, roleName, dll.) | 64KB |
Batas Tag Kebijakan
Batas | Nilai |
Jumlah Tag Kebijakan yang terikat pada kolom tunggal dalam tabel tunggal | 1 |
Jumlah Taxonomy per akun | 40 |
Jumlah Tag Kebijakan per Taxonomy | 100 |
Kedalaman Pohon Tag Kebijakan | 5 |
Jumlah Kebijakan Data per Tag | 8 |
Batas paginasi
Parameter | Nilai default | Nilai maksimum |
pageSize | 100 | 1000 (100 untuk beberapa API) |
Konvensi penamaan
Konvensi penamaan Connection
Field | Konvensi |
connectionName | Unik dalam namespace. Sensitif terhadap huruf besar/kecil. Karakter valid: [a-z][A-Z][0-9]_. Rentang panjang: [3, 32] byte |
Konvensi penamaan Role
Field | Konvensi |
roleName | Unik dalam namespace. Sensitif terhadap huruf besar/kecil. Karakter valid: [a-z][A-Z][0-9]_. Rentang panjang: [3, 255] byte |
Konvensi penamaan Taxonomy
Field | Konvensi |
taxonomyName | Unik dalam namespace. Sensitif terhadap huruf besar/kecil. Karakter valid: [a-z][A-Z][0-9]_. Rentang panjang: [3, 255] byte |
Konvensi penamaan PolicyTag
Field | Konvensi |
policyTagName | Unik dalam Taxonomy induk. Sensitif terhadap huruf besar/kecil. Karakter valid: [a-z][A-Z][0-9]_. Rentang panjang: [3, 255] byte |
Konvensi penamaan DataPolicy
Field | Konvensi |
dataPolicyName | Unik di tingkat akun |
Konvensi penamaan Model
Field | Konvensi |
modelName | Unik dalam skema induk. Tidak sensitif terhadap huruf besar/kecil. Karakter valid: [a-z][A-Z][0-9]_. Rentang panjang: [3, 255] byte |
versionName | Unik dalam model yang sama. Tidak sensitif terhadap huruf besar/kecil. Karakter valid: [a-z][A-Z][0-9]_. Rentang panjang: [3, 255] byte |
FAQ
Apa itu ID Namespace?
ID Namespace adalah UID akun utama Alibaba Cloud. Saat memanggil API tingkat namespace seperti Connection, Role, Taxonomy, DataPolicy, dan DataScan, UID akun utama harus diteruskan sebagai parameter namespace.
Apa itu model tiga-tier?
MaxCompute mendukung dua metode pengorganisasian metadata:
Model dua-tier: Project → Table (metode tradisional)
Model tiga-tier: Project → Schema → Table (metode baru)
Gunakan field Project.schemaEnabled untuk menentukan apakah model tiga-tier diaktifkan untuk suatu Project. Jika model tiga-tier diaktifkan, parameter schemaName harus ditentukan saat memanggil API Table.
Bagaimana menerapkan kontrol akses tingkat kolom menggunakan Policy Tag?
Alur kerja lengkap untuk kontrol akses tingkat kolom:
Buat Taxonomy dengan activatedPolicyTypes diatur ke FINE_GRAINED_ACCESS_CONTROL.
Buat PolicyTag di bawah Taxonomy (mendukung struktur hierarkis seperti pohon).
Ikat PolicyTag ke kolom tertentu dalam skema kolom tabel.
Buat DataPolicy untuk PolicyTag (definisikan aturan penyembunyian, opsional).
Gunakan Policy untuk mengontrol pengguna mana yang dapat mengakses kolom yang terikat dengan PolicyTag.
Bagaimana memeriksa hasil pemerindaian DataScan?
Setelah tugas pemerindaian DataScan berjalan, ScanJob dihasilkan. Riwayat pekerjaan dapat dilihat melalui API listDataScanJobs. Setiap ScanJob berisi:
status: status pekerjaan (Created/Running/Terminated/Failed)
ddl: informasi DDL yang dikembalikan oleh pemerindaian yang perlu di-commit
stats: informasi statistik yang dikembalikan oleh pemerindaian (format JSON)
Apakah tag kebijakan dipulihkan saat memulihkan tabel yang dihapus dengan perintah RESTORE?
Tidak. Tag kebijakan yang diterapkan pada tabel sebelum penghapusan tidak dipulihkan bersama tabel. Setelah pemulihan, tag kebijakan harus diterapkan kembali pada kolom tabel.
Bagaimana menangani paginasi?
Sebagian besar API Daftar mengembalikan field nextPageToken. Jika field ini tidak kosong, masih ada halaman tambahan. Teruskan nextPageToken sebagai parameter pageToken dalam permintaan berikutnya untuk mengambil halaman data berikutnya.
Lampiran
Riwayat versi SDK
Versi | Tanggal rilis | Deskripsi |
v0.2.2 | — | Versi saat ini |
Glosarium
Istilah | Deskripsi |
Namespace | Namespace, sesuai dengan UID akun utama Alibaba Cloud |
Project | Proyek MaxCompute |
Schema | Namespace (direktori) untuk model tiga-tier |
Table | Tabel data |
Connection | Koneksi sumber data eksternal |
Role | Role kustom |
Taxonomy | Sistem klasifikasi tag kebijakan |
PolicyTag | Tag kebijakan untuk menerapkan kontrol akses tingkat kolom |
DataPolicy | Kebijakan data untuk mendefinisikan aturan penyembunyian data |
DataScan | Tugas pemerindaian metadata |
Model | Metadata model pembelajaran mesin |
Policy | Kebijakan akses, terdiri dari serangkaian Binding |
Binding | Mengikat role ke sekumpulan member |