Konektor Amazon OpenSearch Service MS 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.

Konektor Amazon OpenSearch Service MS untuk Layanan AWS

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

Prasyarat

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

Siapkan SageMaker domain Amazon

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

Buat IAM peran

Siapkan IAM peran untuk mendelegasikan izin SageMaker Runtime ke Layanan. OpenSearch Untuk membuat peran baru, lihat Membuat IAM peran (konsol) di Panduan IAM Pengguna. Secara opsional, Anda dapat menggunakan peran yang ada selama memiliki set 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 IAM kebijakan terkelola berikut ke peran baru Anda untuk memungkinkan OpenSearch Layanan mengakses SageMaker titik akhir Anda. Untuk melampirkan kebijakan ke peran, lihat Menambahkan izin IAM identitas.

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "sagemaker:InvokeEndpointAsync", "sagemaker:InvokeEndpoint" ], "Effect": "Allow", "Resource": "*" } ] }
  2. Ikuti instruksi dalam Memodifikasi kebijakan kepercayaan peran untuk mengedit hubungan kepercayaan peran. Anda harus menentukan OpenSearch Layanan dalam Principal pernyataan:

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

    Kami menyarankan Anda menggunakan tombol aws:SourceAccount dan aws:SourceArn kondisi untuk membatasi akses ke domain tertentu. Itu SourceAccount adalah Akun AWS ID milik pemilik domain, dan SourceArn adalah ARN 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" } }

Konfigurasi izin

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::account-id:role/opensearch-sagemaker-role" }, { "Effect": "Allow", "Action": "es:ESHttpPost", "Resource": "arn:aws:es:region:account-id: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)

Kontrol akses berbutir halus memperkenalkan langkah tambahan saat menyiapkan konektor. Bahkan jika Anda menggunakan otentikasi HTTP dasar untuk semua tujuan lain, Anda perlu memetakan ml_full_access peran ke IAM peran Anda yang memiliki iam:PassRole izin untuk diteruskan. 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 peran ARN yang memiliki izin untuk diteruskan. opensearch-sagemaker-role

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

Buat konektor OpenSearch Service

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 dalam cloud pribadi virtual (VPC), komputer Anda harus terhubung ke VPC permintaan agar berhasil membuat konektor AI. Mengakses VPC bervariasi berdasarkan konfigurasi jaringan, tetapi biasanya melibatkan koneksi ke jaringan VPN atau perusahaan. Untuk memastikan bahwa Anda dapat mencapai domain OpenSearch Layanan, https://your-vpc-domain.region.es.amazonaws.com navigasikan ke browser web dan verifikasi bahwa Anda menerima JSON respons default.

Contoh klien Python

Klien Python lebih mudah untuk diotomatisasi daripada HTTP permintaan dan memiliki penggunaan kembali yang lebih baik. Untuk membuat konektor AI dengan klien Python, simpan kode contoh berikut ke file Python. Klien membutuhkan AWS SDK for Python (Boto3), requests, dan requests-aws4authpaket.

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)