All Products
Search
Document Center

Intelligent Media Management:Buat indeks metadata

Last Updated:Mar 01, 2026

Setelah membuat dataset di Intelligent Media Management (IMM), buat indeks metadata untuk file yang disimpan di Object Storage Service (OSS) atau Drive and Photo Service. Indeks metadata menyusun informasi penting tentang file media Anda—seperti judul, penulis, kata kunci, tanggal pembuatan, ukuran, format, dan resolusi—sehingga memungkinkan pencarian, penyaringan, dan pengelolaan yang efisien.

Prasyarat

Sebelum memulai, pastikan Anda telah:

  • Membuat dataset dalam proyek IMM Anda. Untuk informasi selengkapnya, lihat Buat dataset.

Metode pengindeksan

IMM mendukung dua metode pengindeksan:

MethodScopeAPI operationBest for
AutomaticSemua objek dalam bucket OSSCreateBindingPengindeksan seluruh bucket dengan pembaruan inkremental berkelanjutan
ManualFile tertentu di OSS atau Drive and Photo ServiceBatchIndexFileMeta / IndexFileMetaPengindeksan selektif terhadap file tertentu

Pengindeksan otomatis

Panggil CreateBinding untuk memetakan dataset ke bucket OSS. Setelah pemetaan dibuat, IMM melakukan pemindaian penuh terhadap semua objek di bucket tersebut, mengekstraksi metadata, dan membuat indeks metadata. Selanjutnya, IMM secara terus-menerus memantau bucket tersebut terhadap data inkremental dan mengindeks objek baru secara otomatis.

Peringatan

Pengindeksan metadata dikenai biaya yang sebanding dengan jumlah objek yang dipindai. Untuk detailnya, lihat Billing items. Untuk mencoba pengindeksan metadata, gunakan bucket dengan jumlah objek yang sedikit dan pilih workflow template dengan cermat agar tidak menimbulkan biaya tak terduga.

Langkah 1: Buat binding

Contoh berikut memetakan dataset test-dataset dalam proyek test-project ke bucket test-bucket.

Request

{
    "ProjectName": "test-project",
    "URI": "oss://test-bucket",
    "DatasetName": "test-dataset"
}

Response

{
    "Binding": {
        "Phase": "",
        "ProjectName": "test-project",
        "DatasetName": "test-dataset",
        "State": "Ready",
        "CreateTime": "2022-07-06T07:03:28.054762739+08:00",
        "UpdateTime": "2022-07-06T07:03:28.054762739+08:00",
        "URI": "oss://test-bucket"
    },
    "RequestId": "090D2AC5-8450-0AA8-A1B1-****"
}

Kode contoh lengkap (IMM SDK untuk Python)

# -*- coding: utf-8 -*-

import os
from alibabacloud_imm20200930.client import Client as imm20200930Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_imm20200930 import models as imm_20200930_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient


class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client(
        access_key_id: str,
        access_key_secret: str,
    ) -> imm20200930Client:
        """
        Gunakan ID AccessKey dan rahasia AccessKey Anda untuk menginisialisasi client.
        @param access_key_id:
        @param access_key_secret:
        @return: Client
        @throws Exception
        """
        config = open_api_models.Config(
            access_key_id=access_key_id,
            access_key_secret=access_key_secret
        )
        # Tentukan endpoint.
        config.endpoint = f'imm.cn-beijing.aliyuncs.com'
        return imm20200930Client(config)

    @staticmethod
    def main() -> None:
        # Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin atas semua operasi API. Untuk mencegah risiko keamanan, kami menyarankan Anda memanggil operasi API atau melakukan O&M rutin sebagai RAM user.
        # Kami menyarankan agar Anda tidak menyertakan pasangan Kunci Akses (ID AccessKey dan Rahasia AccessKey) dalam kode proyek Anda. Jika tidak, pasangan Kunci Akses tersebut dapat bocor dan keamanan semua sumber daya dalam akun Anda dapat terganggu.
        # Dalam contoh ini, pasangan Kunci Akses dibaca dari variabel lingkungan untuk menerapkan verifikasi identitas akses API. Untuk informasi tentang cara mengonfigurasi variabel lingkungan, kunjungi https://www.alibabacloud.com/help/document_detail/2361894.html.
        imm_access_key_id = os.getenv("AccessKeyId")
        imm_access_key_secret = os.getenv("AccessKeySecret")
        client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
        create_binding_request = imm_20200930_models.CreateBindingRequest(
            # Tentukan nama proyek IMM.
            project_name='test-project',
            # Tentukan nama dataset.
            dataset_name='test-dataset',
            # Tentukan URI bucket.
            uri='oss://test-bucket'
        )
        runtime = util_models.RuntimeOptions()
        try:
            # Cetak respons operasi API.
            response = client.create_binding_with_options(create_binding_request, runtime)
            print(response.body.to_map())
        except Exception as error:
            # Cetak pesan kesalahan jika diperlukan.
            UtilClient.assert_as_string(error.message)
            print(error)


if __name__ == '__main__':
    Sample.main()

Langkah 2 (opsional): Periksa status binding

Panggil GetBinding untuk menanyakan status pemetaan.

Request

{
    "ProjectName": "test-project",
    "URI": "oss://test-bucket",
    "DatasetName": "test-dataset"
}

Response

{
    "Binding": {
        "Phase": "IncrementalScanning",
        "ProjectName": "test-project",
        "DatasetName": "test-dataset",
        "State": "Running",
        "CreateTime": "2022-07-06T07:04:05.105182822+08:00",
        "UpdateTime": "2022-07-06T07:04:13.302084076+08:00",
        "URI": "oss://test-bucket"
    },
    "RequestId": "B5A9F54B-6C54-03C9-B011-****"
}

Bidang respons utama:

FieldValueMeaning
PhaseIncrementalScanningIMM telah selesai mengindeks semua objek yang ada dan kini sedang memindai objek inkremental
StateRunningPemetaan sedang dalam proses pembentukan

Kode contoh lengkap (IMM SDK untuk Python 1.27.3)

# -*- coding: utf-8 -*-

import os
from alibabacloud_imm20200930.client import Client as imm20200930Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_imm20200930 import models as imm_20200930_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient


class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client(
        access_key_id: str,
        access_key_secret: str,
    ) -> imm20200930Client:
        """
        Gunakan ID AccessKey dan rahasia AccessKey Anda untuk menginisialisasi client.
        @param access_key_id:
        @param access_key_id:
        @param access_key_secret:
        @return: Client
        @throws Exception
        """
        config = open_api_models.Config(
            access_key_id=access_key_id,
            access_key_secret=access_key_secret
        )
        # Tentukan endpoint.
        config.endpoint = f'imm.cn-beijing.aliyuncs.com'
        return imm20200930Client(config)

    @staticmethod
    def main() -> None:
        # Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin atas semua operasi API. Untuk mencegah risiko keamanan, kami menyarankan Anda memanggil operasi API atau melakukan O&M rutin sebagai RAM user.
        # Kami menyarankan agar Anda tidak menyertakan pasangan Kunci Akses (ID AccessKey dan Rahasia AccessKey) dalam kode proyek Anda. Jika tidak, pasangan Kunci Akses tersebut dapat bocor dan keamanan semua sumber daya dalam akun Anda dapat terganggu.
        # Dalam contoh ini, pasangan Kunci Akses dibaca dari variabel lingkungan untuk menerapkan verifikasi identitas akses API. Untuk informasi tentang cara mengonfigurasi variabel lingkungan, kunjungi https://www.alibabacloud.com/help/document_detail/2361894.html.
        imm_access_key_id = os.getenv("AccessKeyId")
        imm_access_key_secret = os.getenv("AccessKeySecret")
        client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
        get_binding_request = imm_20200930_models.GetBindingRequest(
            # Tentukan nama proyek IMM.
            project_name='test-project',
            # Tentukan nama dataset.
            dataset_name='test-dataset',
            # Tentukan URI bucket.
            uri='oss://test-bucket'
        )
        runtime = util_models.RuntimeOptions()
        try:
            # Cetak respons operasi API.
            response = client.get_binding_with_options(get_binding_request, runtime)
            print(response.body.to_map())
        except Exception as error:
            # Cetak pesan kesalahan jika diperlukan.
            UtilClient.assert_as_string(error.message)
            print(error)


if __name__ == '__main__':
    Sample.main()

Pengindeksan manual

Untuk mengindeks file tertentu di OSS atau Drive and Photo Service, panggil BatchIndexFileMeta (beberapa file) atau IndexFileMeta (satu file). Kedua operasi ini mendukung label kustom dan notifikasi Message Service (MNS).

Indeks beberapa file (BatchIndexFileMeta)

Contoh berikut mengindeks oss://test-bucket/test-object1.jpg dan oss://test-bucket/test-object2.jpg dalam dataset test-dataset pada proyek test-project dengan label kustom.

Request

{
  "ProjectName": "test-project",
  "DatasetName": "test-dataset",
  "Files": [
    {
      "URI": "oss://test-bucket/test-object1.jpg",
      "CustomLabels": {
        "category": "Persons"
      }
    },
    {
      "URI": "oss://test-bucket/test-object2.jpg",
      "CustomLabels": {
        "category": "Pets"
      }
    }
  ],
  "Notification": {
    "MNS": {
      "TopicName": "test-topic"
    }
  }
}

Response

{
    "RequestId": "0D4CB096-EB44-02D6-A4E9-****",
    "EventId": "16C-1KoeYbdckkiOObpyzc****"
}

Pesan notifikasi MNS

Untuk informasi lebih lanjut tentang SDK Message Service, lihat Langkah 4: Terima dan hapus pesan.

{
    "ProjectName": "test-project",
    "DatasetName": "test-dataset",
    "RequestId": "658FFD57-B495-07C0-B24B-B64CC52993CB",
    "StartTime": "2022-07-06T07:18:18.664770352+08:00",
    "EndTime": "2022-07-06T07:18:20.762465221+08:00",
    "Success": true,
    "Message": "",
    "Files": [
        {
            "URI": "oss://test-bucket/test-object1.jpg",
            "CustomLabels": {
                "category": "Persons"
            },
            "Error": ""
        },
        {
            "URI": "oss://test-bucket/test-object2.jpg",
            "CustomLabels": {
                "category": "Pets"
            },
            "Error": ""
        }
    ]
}

Verifikasi hasil:

  • Success bernilai true: indeks metadata berhasil dibuat.

  • Error kosong untuk suatu file: file tersebut berhasil diindeks.

Kode contoh lengkap (IMM SDK untuk Python)

# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import sys
import os

from typing import List

from alibabacloud_imm20200930.client import Client as imm20200930Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_imm20200930 import models as imm_20200930_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient


class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client(
        access_key_id: str,
        access_key_secret: str,
    ) -> imm20200930Client:
        """
        Gunakan ID AccessKey dan rahasia AccessKey Anda untuk menginisialisasi client.
        @param access_key_id:
        @param access_key_secret:
        @return: Client
        @throws Exception
        """
        config = open_api_models.Config(
            access_key_id=access_key_id,
            access_key_secret=access_key_secret
        )
        # Tentukan endpoint.
        config.endpoint = f'imm.cn-beijing.aliyuncs.com'
        return imm20200930Client(config)

    @staticmethod
    def main(
        args: List[str],
    ) -> None:
        # Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin atas semua operasi API. Untuk mencegah risiko keamanan, kami menyarankan Anda memanggil operasi API atau melakukan O&M rutin sebagai RAM user.
        # Kami menyarankan agar Anda tidak menyertakan pasangan Kunci Akses (ID AccessKey dan Rahasia AccessKey) dalam kode proyek Anda. Jika tidak, pasangan Kunci Akses tersebut dapat bocor dan keamanan semua sumber daya dalam akun Anda dapat terganggu.
        # Dalam contoh ini, pasangan Kunci Akses dibaca dari variabel lingkungan untuk menerapkan verifikasi identitas akses API. Untuk informasi tentang cara mengonfigurasi variabel lingkungan, kunjungi https://www.alibabacloud.com/help/document_detail/2361894.html.
        imm_access_key_id = os.getenv("AccessKeyId")
        imm_access_key_secret = os.getenv("AccessKeySecret")
        client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
        notification_mns = imm_20200930_models.MNS(
            topic_name='test-topic'
        )
        notification = imm_20200930_models.Notification(
            mns=notification_mns
        )
        input_file_0custom_labels = {
            'category': 'Persons'
        }
        input_file_0 = imm_20200930_models.InputFile(
            uri='oss://test-bucket/test-object1.jpg',
            custom_labels=input_file_0custom_labels
        )
        input_file_1custom_labels = {
            'category': 'Pets'
        }
        input_file_1 = imm_20200930_models.InputFile(
            uri='oss://test-bucket/test-object2.jpg',
            custom_labels=input_file_1custom_labels
        )
        batch_index_file_meta_request = imm_20200930_models.BatchIndexFileMetaRequest(
            project_name='test-project',
            dataset_name='test-dataset',
            files=[
                input_file_0,
                input_file_1
            ],
            notification=notification
        )
        runtime = util_models.RuntimeOptions()
        try:
            # Tulis kode Anda untuk mencetak respons operasi API jika diperlukan.
            client.batch_index_file_meta_with_options(batch_index_file_meta_request, runtime)
        except Exception as error:
            # Cetak pesan kesalahan jika diperlukan.
            UtilClient.assert_as_string(error.message)

    @staticmethod
    async def main_async(
        args: List[str],
    ) -> None:
        # Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin atas semua operasi API. Untuk mencegah risiko keamanan, kami menyarankan Anda memanggil operasi API atau melakukan O&M rutin sebagai RAM user.
        # Kami menyarankan agar Anda tidak menyertakan pasangan Kunci Akses (ID AccessKey dan Rahasia AccessKey) dalam kode proyek Anda. Jika tidak, pasangan Kunci Akses tersebut dapat bocor dan keamanan semua sumber daya dalam akun Anda dapat terganggu.
        # Dalam contoh ini, pasangan Kunci Akses dibaca dari variabel lingkungan untuk menerapkan verifikasi identitas akses API. Untuk informasi tentang cara mengonfigurasi variabel lingkungan, kunjungi https://www.alibabacloud.com/help/document_detail/2361894.html.
        imm_access_key_id = os.getenv("AccessKeyId")
        imm_access_key_secret = os.getenv("AccessKeySecret")
        client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
        notification_mns = imm_20200930_models.MNS(
            topic_name='test-topic'
        )
        notification = imm_20200930_models.Notification(
            mns=notification_mns
        )
        input_file_0custom_labels = {
            'category': 'Persons'
        }
        input_file_0 = imm_20200930_models.InputFile(
            uri='oss://test-bucket/test-object1.jpg',
            custom_labels=input_file_0custom_labels
        )
        input_file_1custom_labels = {
            'category': 'Pets'
        }
        input_file_1 = imm_20200930_models.InputFile(
            uri='oss://test-bucket/test-object2.jpg',
            custom_labels=input_file_1custom_labels
        )
        batch_index_file_meta_request = imm_20200930_models.BatchIndexFileMetaRequest(
            project_name='test-project',
            dataset_name='test-dataset',
            files=[
                input_file_0,
                input_file_1
            ],
            notification=notification
        )
        runtime = util_models.RuntimeOptions()
        try:
            # Tulis kode Anda untuk mencetak respons operasi API jika diperlukan.
            await client.batch_index_file_meta_with_options_async(batch_index_file_meta_request, runtime)
        except Exception as error:
            # Cetak pesan kesalahan jika diperlukan.
            UtilClient.assert_as_string(error.message)


if __name__ == '__main__':
    Sample.main(sys.argv[1:])

Indeks satu file (IndexFileMeta)

Contoh berikut mengindeks oss://test-bucket/test-object1.jpg dalam dataset test-dataset pada proyek test-project.

Request

{
  "ProjectName": "test-project",
  "DatasetName": "test-dataset",
  "File": {
    "URI": "oss://test-bucket/test-object1.jpg",
    "CustomLabels": {
      "category": "Persons"
    }
  },
  "Notification": {
    "MNS": {
      "TopicName": "test-topic"
    }
  }
}

Response

{
    "RequestId": "5AA694AD-3D10-0B6A-85B2-****",
    "EventId": "17C-1Kofq1mlJxRYF7vAGF****"
}

Pesan notifikasi MNS

Untuk informasi lebih lanjut tentang SDK Message Service, lihat Langkah 4: Terima dan hapus pesan.

{
    "ProjectName": "test-project",
    "DatasetName": "test-dataset",
    "RequestId": "658FFD57-B495-07C0-B24B-B64CC52993CB",
    "StartTime": "2022-07-06T07:18:18.664770352+08:00",
    "EndTime": "2022-07-06T07:18:20.762465221+08:00",
    "Success": true,
    "Message": "",
    "Files": [
        {
            "URI": "oss://test-bucket/test-object1.jpg",
            "CustomLabels": {
                "category": "Persons"
            },
            "Error": ""
        }
    ]
}

Verifikasi hasil:

  • Success bernilai true: indeks metadata berhasil dibuat.

  • Error kosong untuk suatu file: file tersebut berhasil diindeks.

Kode contoh lengkap (IMM SDK untuk Python)

# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import sys
import os

from typing import List

from alibabacloud_imm20200930.client import Client as imm20200930Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_imm20200930 import models as imm_20200930_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient


class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client(
        access_key_id: str,
        access_key_secret: str,
    ) -> imm20200930Client:
        """
        Gunakan ID AccessKey dan rahasia AccessKey Anda untuk menginisialisasi client.
        @param access_key_id:
        @param access_key_secret:
        @return: Client
        @throws Exception
        """
        config = open_api_models.Config(
            access_key_id=access_key_id,
            access_key_secret=access_key_secret
        )
        # Tentukan endpoint.
        config.endpoint = f'imm.cn-beijing.aliyuncs.com'
        return imm20200930Client(config)

    @staticmethod
    def main(
        args: List[str],
    ) -> None:
        # Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin atas semua operasi API. Untuk mencegah risiko keamanan, kami menyarankan Anda memanggil operasi API atau melakukan O&M rutin sebagai RAM user.
        # Kami menyarankan agar Anda tidak menyertakan pasangan Kunci Akses (ID AccessKey dan Rahasia AccessKey) dalam kode proyek Anda. Jika tidak, pasangan Kunci Akses tersebut dapat bocor dan keamanan semua sumber daya dalam akun Anda dapat terganggu.
        # Dalam contoh ini, pasangan Kunci Akses dibaca dari variabel lingkungan untuk menerapkan verifikasi identitas akses API. Untuk informasi tentang cara mengonfigurasi variabel lingkungan, kunjungi https://www.alibabacloud.com/help/document_detail/2361894.html.
        imm_access_key_id = os.getenv("AccessKeyId")
        imm_access_key_secret = os.getenv("AccessKeySecret")
        client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
        notification_mns = imm_20200930_models.MNS(
            topic_name='test-topic'
        )
        notification = imm_20200930_models.Notification(
            mns=notification_mns
        )
        input_file_custom_labels = {
            'category': 'Persons'
        }
        input_file = imm_20200930_models.InputFile(
            uri='oss://test-bucket/test-object1.jpg',
            custom_labels=input_file_custom_labels
        )
        index_file_meta_request = imm_20200930_models.IndexFileMetaRequest(
            project_name='test-project',
            dataset_name='test-dataset',
            file=input_file,
            notification=notification
        )
        runtime = util_models.RuntimeOptions()
        try:
            # Tulis kode Anda untuk mencetak respons operasi API jika diperlukan.
            client.index_file_meta_with_options(index_file_meta_request, runtime)
        except Exception as error:
            # Cetak pesan kesalahan jika diperlukan.
            UtilClient.assert_as_string(error.message)

    @staticmethod
    async def main_async(
        args: List[str],
    ) -> None:
        # Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin atas semua operasi API. Untuk mencegah risiko keamanan, kami menyarankan Anda memanggil operasi API atau melakukan O&M rutin sebagai RAM user.
        # Kami menyarankan agar Anda tidak menyertakan pasangan Kunci Akses (ID AccessKey dan Rahasia AccessKey) dalam kode proyek Anda. Jika tidak, pasangan Kunci Akses tersebut dapat bocor dan keamanan semua sumber daya dalam akun Anda dapat terganggu.
        # Dalam contoh ini, pasangan Kunci Akses dibaca dari variabel lingkungan untuk menerapkan verifikasi identitas akses API. Untuk informasi tentang cara mengonfigurasi variabel lingkungan, kunjungi https://www.alibabacloud.com/help/document_detail/2361894.html.
        imm_access_key_id = os.getenv("AccessKeyId")
        imm_access_key_secret = os.getenv("AccessKeySecret")
        client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
        notification_mns = imm_20200930_models.MNS(
            topic_name='test-topic'
        )
        notification = imm_20200930_models.Notification(
            mns=notification_mns
        )
        input_file_custom_labels = {
            'category': 'Persons'
        }
        input_file = imm_20200930_models.InputFile(
            uri='oss://test-bucket/test-object1.jpg',
            custom_labels=input_file_custom_labels
        )
        index_file_meta_request = imm_20200930_models.IndexFileMetaRequest(
            project_name='test-project',
            dataset_name='test-dataset',
            file=input_file,
            notification=notification
        )
        runtime = util_models.RuntimeOptions()
        try:
            # Tulis kode Anda untuk mencetak respons operasi API jika diperlukan.
            await client.index_file_meta_with_options_async(index_file_meta_request, runtime)
        except Exception as error:
            # Cetak pesan kesalahan jika diperlukan.
            UtilClient.assert_as_string(error.message)


if __name__ == '__main__':
    Sample.main(sys.argv[1:])

Referensi