View a markdown version of this page

Konek OpenSearch tor Amazon Service ML untuk Layanan AWS - OpenSearch Layanan Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Konek OpenSearch tor Amazon Service ML untuk Layanan AWS

Saat menggunakan konektor Machine Learning (ML) Amazon OpenSearch Service dengan konektor lain Layanan AWS, Anda perlu menyiapkan peran IAM untuk menghubungkan OpenSearch Layanan dengan aman ke layanan tersebut. Layanan AWS bahwa Anda dapat mengatur konektor untuk menyertakan Amazon SageMaker AI dan Amazon Bedrock. Dalam tutorial ini, kita membahas cara membuat konektor dari OpenSearch Layanan ke SageMaker Runtime. Untuk informasi selengkapnya tentang konektor, lihat Konek tor yang didukung.

Prasyarat

Untuk membuat konektor, Anda harus memiliki titik akhir Amazon SageMaker AI Domain dan peran IAM yang memberikan akses OpenSearch Layanan.

Menyiapkan domain SageMaker AI Amazon

Lihat Menyebarkan Model di Amazon SageMaker AI di Panduan Pengembang SageMaker AI Amazon untuk menerapkan model pembelajaran mesin Anda. Perhatikan URL titik akhir untuk model Anda, yang Anda perlukan untuk membuat konektor AI.

Membuat peran IAM

Siapkan peran IAM untuk mendelegasikan izin SageMaker Runtime ke OpenSearch Layanan. Untuk membuat peran baru, lihat Membuat peran IAM (konsol) di Panduan Pengguna IAM. Secara opsional, Anda dapat menggunakan peran yang ada selama memiliki kumpulan hak istimewa yang sama. Jika Anda membuat peran baru alih-alih menggunakan peran AWS terkelola, ganti opensearch-sagemaker-role dalam tutorial ini dengan nama peran Anda sendiri.

  1. Lampirkan kebijakan IAM terkelola berikut ke peran baru Anda untuk mengiz OpenSearch inkan Layanan mengakses titik akhir SageMaker AI Anda. Untuk melampirkan kebijakan ke peran, lihat Men ambahkan izin identitas IAM.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Action": [ "sagemaker:InvokeEndpointAsync", "sagemaker:InvokeEndpoint" ], "Effect": "Allow", "Resource": "*" } ] }
  2. Ikuti petunjuk dalam M emodifikasi kebijakan kepercayaan peran untuk mengedit hubungan kepercayaan peran. Dalam kebijakan berikut, ganti service-principal dengan salah satu prinsip layanan berikut untuk OpenSearch Layanan atau Tanpa OpenSearch Server:

    Untuk OpenSearch Layanan

    opensearchservice.amazonaws.com atau es.amazonaws.com

    Untuk Tanpa OpenSearch Server

    ml.opensearchservice.amazonaws.com

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Effect": "Allow", "Principal": { "Service": [ "ml.opensearchservice.amazonaws.com" ] } } ] }

    Kami menyarankan Anda menggunakan kunci aws:SourceAccount dan aws:SourceArn kondisi untuk membatasi akses ke domain tertentu. Ini SourceAccount adalah Akun AWS ID milik pemilik domain, dan itu SourceArn adalah ARN dari domain. Misalnya, Anda dapat menambahkan blok kondisi berikut ke kebijakan kepercayaan:

    "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:es:region:account-id:domain/domain-name" } }

Mengatur Konfigurasi Izin

Untuk membuat konektor, Anda memerlukan izin untuk meneruskan peran IAM ke OpenSearch Layanan. Anda juga memerlukan akses ke tindakan es:ESHttpPost. Untuk memberikan kedua izin ini, lampirkan kebijakan berikut ke peran IAM yang kredensialnya digunakan untuk menandatangani permintaan:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::111122223333:role/opensearch-sagemaker-role" }, { "Effect": "Allow", "Action": "es:ESHttpPost", "Resource": "arn:aws:es:us-east-1:111122223333:domain/domain-name/*" } ] }

Jika pengguna atau peran Anda tidak memiliki iam:PassRole izin untuk meneruskan peran Anda, Anda mungkin mengalami kesalahan otorisasi saat mencoba mendaftarkan repositori di langkah berikutnya.

Petakan peran ML di OpenSearch Dasbor (jika menggunakan kontrol akses berbutir halus)

Fine-grained kontrol akses memperkenalkan langkah tambahan saat menyiapkan konektor. Bahkan jika Anda menggunakan autentikasi basic HTTP untuk semua tujuan lain, Anda perlu memetakan peran ml_full_access ke IAM role Anda yang memiliki izin iam:PassRole untuk meneruskan opensearch-sagemaker-role.

  1. Arahkan ke plugin OpenSearch Dasbor untuk domain OpenSearch Layanan Anda. Anda dapat menemukan titik akhir Dasbor di dasbor domain Anda di konsol OpenSearch Layanan.

  2. Dari menu utama pilih Keamanan, Peran, dan pilih peran ml_full_access.

  3. Pilih Pengguna yang Dipetakan, Kelola pemetaan.

  4. Di bawah peran backend, tambahkan ARN dari peran yang memiliki izin untuk lulusopensearch-sagemaker-role.

    arn:aws:iam::account-id:role/role-name
  5. Pilih Peta dan konfirmasikan pengguna atau peran muncul di bawah Pengguna yang dipetakan.

Membuat konektor OpenSearch Layanan

Untuk membuat konektor, kirim POST permintaan ke titik akhir domain OpenSearch Layanan. Anda dapat menggunakan curl, contoh klien Python, Postman, atau metode lain untuk mengirim permintaan yang ditandatangani. Perhatikan bahwa Anda tidak dapat menggunakan POST permintaan di konsol Kibana. Permintaan mengambil format berikut:

POST domain-endpoint/_plugins/_ml/connectors/_create { "name": "sagemaker: embedding", "description": "Test connector for Sagemaker embedding model", "version": 1, "protocol": "aws_sigv4", "credential": { "roleArn": "arn:aws:iam::account-id:role/opensearch-sagemaker-role" }, "parameters": { "region": "region", "service_name": "sagemaker" }, "actions": [ { "action_type": "predict", "method": "POST", "headers": { "content-type": "application/json" }, "url": "https://runtime.sagemaker.region.amazonaws.com/endpoints/endpoint-id/invocations", "request_body": "{ \"inputs\": { \"question\": \"${parameters.question}\", \"context\": \"${parameters.context}\" } }" } ] }

Jika domain Anda berada di dalam cloud pribadi virtual (VPC), komputer Anda harus terhubung ke VPC agar permintaan berhasil membuat konektor AI. Mengakses VPC bervariasi menurut konfigurasi jaringan, tetapi biasanya melibatkan koneksi ke VPN atau jaringan perusahaan. Untuk memeriksa apakah Anda dapat mencapai domain OpenSearch Layanan Anda, navigasikan ke https://your-vpc-domain.region.es.amazonaws.com dalam browser web dan verifikasi bahwa Anda menerima respons JSON default.

Contoh klien Python

Klien Python lebih mudah diotomatisasi daripada permintaan HTTP dan memiliki kegunaan ulang yang lebih baik. Untuk membuat konektor AI dengan klien Python, simpan kode sampel berikut ke file Python. Klien membutuhkan AWS SDK for Python (Boto3), requests, dan requests-aws4auth paket.

import boto3 import requests from requests_aws4auth import AWS4Auth host = 'domain-endpoint/' region = 'region' service = 'es' credentials = boto3.Session().get_credentials() awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token) # Register repository path = '_plugins/_ml/connectors/_create' url = host + path payload = { "name": "sagemaker: embedding", "description": "Test connector for Sagemaker embedding model", "version": 1, "protocol": "aws_sigv4", "credential": { "roleArn": "arn:aws:iam::account-id:role/opensearch-sagemaker-role" }, "parameters": { "region": "region", "service_name": "sagemaker" }, "actions": [ { "action_type": "predict", "method": "POST", "headers": { "content-type": "application/json" }, "url": "https://runtime.sagemaker.region.amazonaws.com/endpoints/endpoint-id/invocations", "request_body": "{ \"inputs\": { \"question\": \"${parameters.question}\", \"context\": \"${parameters.context}\" } }" } ] } headers = {"Content-Type": "application/json"} r = requests.post(url, auth=awsauth, json=payload, headers=headers) print(r.status_code) print(r.text)

Daftarkan model untuk pencarian semantik

Jika Anda berencana menggunakan model yang terhubung untuk pencarian semantik, Anda harus menyertakan model_config parameter saat mendaftarkan model. Tanpa parameter ini, pembuatan indeks bidang semantik akan gagal dengan kesalahan “Konfigurasi model adalah nol untuk model jarak jauh [model_id]”.

Sertakan model_config objek dalam permintaan model register Anda:

POST _plugins/_ml/models/_register { "name": "Bedrock embedding model", "function_name": "remote", "connector_id": "connector_id", "model_config": { "model_type": "TEXT_EMBEDDING", "embedding_dimension": 1536, "framework_type": "SENTENCE_TRANSFORMERS", "additional_config": { "space_type": "l2" } } }

Ganti embedding_dimension dengan dimensi output model Anda (misalnya, 1536 untuk Amazon Titan Embeddings). Untuk informasi tentang jenis ruang yang didukung, lihat pencarian k-NN di OpenSearch Layanan Amazon.