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 platform pihak ketiga
Dalam tutorial ini, kita membahas cara membuat konektor dari OpenSearch Layanan ke Cohere. Untuk informasi selengkapnya tentang konektor, lihat Konek tor yang didukung
Saat menggunakan konektor pembelajaran mesin (ML) OpenSearch Layanan Amazon dengan model jarak jauh eksternal, Anda perlu menyimpan kredentif otorisasi spesifik Anda di AWS Secrets Manager. Ini bisa berupa kunci API, atau kombinasi nama pengguna dan kata sandi. Ini berarti Anda juga perlu membuat peran IAM yang memungkinkan akses OpenSearch Layanan untuk membaca dari Manajer Rahasia.
Prasyarat
Untuk membuat konektor untuk Cohere atau penyedia eksternal apa pun dengan OpenSearch Layanan, Anda harus memiliki peran IAM yang memberikan akses OpenSearch Layanan ke AWS Secrets Manager, tempat Anda menyimpan kredenSIAL Anda. Anda juga harus menyimpan kredensibilitas Anda di Manajer Rahasia.
Selain itu, perhatikan persyaratan jaringan berikut:
-
Penyedia eksternal harus mengizinkan lalu lintas masuk dari alamat IP publik, karena permintaan Konektor ML tidak berasal dari OpenSearch VPC.
-
Anda harus menambahkan URL penyedia eksternal ke pengaturan cluster
plugins.ml_commons.trusted_connector_endpoints_regexagar konektor dapat berkomunikasi dengan titik akhir eksternal.
Membuat peran IAM
Siapkan peran IAM untuk mendelegasikan izin Manajer Rahasia ke OpenSearch Layanan. Anda juga dapat menggunakan SecretManagerReadWrite peran yang ada. Untuk membuat peran baru, lihat Membuat peran IAM (konsol) di Panduan Pengguna IAM. Jika Anda membuat peran baru alih-alih menggunakan peran AWS terkelola, ganti opensearch-secretmanager-role dalam tutorial ini dengan nama peran Anda sendiri.
-
Lampirkan kebijakan IAM terkelola berikut ke peran baru Anda untuk mengizinkan OpenSearch Layanan mengakses nilai Manajer Rahasia Anda. Untuk melampirkan kebijakan ke peran, lihat Menambahkan Iz https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#add-policies-console in Identitas IAM.
-
Ikuti petunjuk dalam M emodifikasi kebijakan kepercayaan peran untuk mengedit hubungan kepercayaan peran. Dalam kebijakan berikut, ganti
service-principaldengan salah satu prinsip layanan berikut untuk OpenSearch Layanan atau Tanpa OpenSearch Server:- Untuk OpenSearch Layanan
-
opensearchservice.amazonaws.com - Untuk Tanpa OpenSearch Server
-
ml.opensearchservice.amazonaws.com
Kami menyarankan Anda menggunakan kunci
aws:SourceAccountdanaws:SourceArnkondisi untuk membatasi akses ke domain tertentu. IniSourceAccountadalah Akun AWS ID milik pemilik domain, dan ituSourceArnadalah 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:
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.
Penyiapan AWS Secrets Manager
Untuk menyimpan kredentif otorisasi Anda di Secrets Manager, lihat Membuat AWS Secrets Manager rahasia di Panduan AWS Secrets Manager Pengguna.
Setelah Secrets Manager menerima pasangan kunci-nilai Anda sebagai rahasia, Anda menerima ARN dengan format:. arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret-a1b2c3 Simpan catatan ARN ini, saat Anda menggunakannya dan kunci Anda saat Anda membuat konektor 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.
-
Arahkan ke plugin OpenSearch Dasbor untuk domain OpenSearch Layanan Anda. Anda dapat menemukan titik akhir Dasbor di dasbor domain Anda di konsol OpenSearch Layanan.
-
Dari menu utama pilih Keamanan, Peran, dan pilih peran ml_full_access.
-
Pilih Pengguna yang Dipetakan, Kelola pemetaan.
-
Di bawah peran backend, tambahkan ARN dari peran yang memiliki izin untuk lulus
opensearch-sagemaker-role.arn:aws:iam::account-id:role/role-name -
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:
POSTdomain-endpoint/_plugins/_ml/connectors/_create { "name": "Cohere Connector: embedding", "description": "The connector to cohere embedding model", "version": 1, "protocol": "http", "credential": { "secretArn": "arn:aws:secretsmanager:region:account-id:secret:cohere-key-id", "roleArn": "arn:aws:iam::account-id:role/opensearch-secretmanager-role" }, "actions": [ { "action_type": "predict", "method": "POST", "url": "https://api.cohere.ai/v1/embed", "headers": { "Authorization": "Bearer ${credential.secretArn.cohere-key-used-in-secrets-manager}" }, "request_body": "{ \"texts\": ${parameters.texts}, \"truncate\": \"END\" }" } ] }
Badan permintaan untuk permintaan ini berbeda dari permintaan konektor sumber terbuka dalam dua cara. Di dalam credential lapangan, Anda melewati ARN untuk peran IAM yang memungkinkan OpenSearch Layanan membaca dari Manajer Rahasia, bersama dengan ARN untuk rahasia apa. Di headers lapangan, Anda merujuk pada rahasia menggunakan kunci rahasia dan fakta itu berasal dari ARN.
Jika domain Anda berada di dalam cloud pribadi virtual (VPC), komputer Anda harus terhubung ke VPC agar permintaan berhasil membuat connetor 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:// dalam browser web dan verifikasi bahwa Anda menerima respons JSON default.your-vpc-domain.region.es.amazonaws.com
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)requestsrequests-aws4auth
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) path = '_plugins/_ml/connectors/_create' url = host + path payload = { "name": "Cohere Connector: embedding", "description": "The connector to cohere embedding model", "version": 1, "protocol": "http", "credential": { "secretArn": "arn:aws:secretsmanager:region:account-id:secret:cohere-key-id", "roleArn": "arn:aws:iam::account-id:role/opensearch-secretmanager-role" }, "actions": [ { "action_type": "predict", "method": "POST", "url": "https://api.cohere.ai/v1/embed", "headers": { "Authorization": "Bearer ${credential.secretArn.cohere-key-used-in-secrets-manager}" }, "request_body": "{ \"texts\": ${parameters.texts}, \"truncate\": \"END\" }" } ] } headers = {"Content-Type": "application/json"} r = requests.post(url, auth=awsauth, json=payload, headers=headers) print(r.status_code) print(r.text)