

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
<a name="ml-amazon-connector"></a>

Saat Anda menggunakan konektor pembelajaran mesin Amazon OpenSearch Service (ML) 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 Service ke SageMaker Runtime. Untuk informasi selengkapnya tentang konektor, lihat [Konektor yang didukung](https://opensearch.org/docs/latest/ml-commons-plugin/remote-models/connectors/#supported-connectors).

**Topics**
+ [Prasyarat](#connector-sagemaker-prereq)
+ [Buat konektor OpenSearch Service](#connector-sagemaker-create)

## Prasyarat
<a name="connector-sagemaker-prereq"></a>

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

### Siapkan domain Amazon SageMaker AI
<a name="connector-sagemaker"></a>

Lihat [Menerapkan Model di Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-deployment.html) di *Panduan Pengembang Amazon SageMaker AI* untuk menerapkan model pembelajaran mesin Anda. Perhatikan URL titik akhir untuk model Anda, yang Anda perlukan untuk membuat konektor AI.

### Membuat peran IAM
<a name="connector-sagemaker-iam"></a>

Siapkan peran IAM untuk mendelegasikan izin SageMaker Runtime ke Layanan. OpenSearch Untuk membuat peran baru, lihat [Membuat peran IAM (konsol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) di *Panduan Pengguna IAM*. 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 kebijakan IAM terkelola berikut ke peran baru Anda untuk memungkinkan OpenSearch Layanan mengakses titik akhir SageMaker AI Anda. Untuk melampirkan kebijakan ke peran, lihat [Menambahkan izin identitas IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#add-policies-console). 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {   
               "Action": [
                   "sagemaker:InvokeEndpointAsync",
                   "sagemaker:InvokeEndpoint"
               ],
               "Effect": "Allow",
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Ikuti instruksi dalam [Memodifikasi kebijakan kepercayaan peran](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-managingrole_edit-trust-policy) untuk mengedit hubungan kepercayaan peran. Dalam kebijakan berikut, ganti *service-principal* dengan salah satu prinsip layanan berikut untuk OpenSearch Layanan atau Tanpa Server: OpenSearch   
**Untuk OpenSearch Layanan**  
`opensearchservice.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 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 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
<a name="connector-sagemaker-permissions"></a>

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)
<a name="connector-sagemaker-fgac"></a>

Kontrol akses berbutir halus 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. 

1. Dari menu utama pilih **Keamanan**, **Peran, dan pilih peran** **ml\$1full\$1access**.

1. Pilih **Pengguna yang Dipetakan**, **Kelola pemetaan**. 

1. Di bawah **peran Backend**, tambahkan ARN dari peran yang memiliki izin untuk diteruskan. `opensearch-sagemaker-role`

   ```
   arn:aws:iam::account-id:role/role-name
   ```

1. Pilih **Peta** dan konfirmasikan pengguna atau peran muncul di bawah **Pengguna yang dipetakan**.

## Buat konektor OpenSearch Service
<a name="connector-sagemaker-create"></a>

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 virtual private cloud (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 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 respons JSON default.

### Contoh klien Python
<a name="connector-sagemaker-python"></a>

Klien Python lebih mudah diotomatisasi daripada permintaan HTTP dan memiliki kegunaan ulang yang lebih baik. Untuk membuat konektor AI dengan klien Python, simpan kode contoh berikut ke file Python. Klien membutuhkan [AWS SDK untuk Python (Boto3)](https://aws.amazon.com/sdk-for-python/), [https://requests.readthedocs.io/en/latest/](https://requests.readthedocs.io/en/latest/), dan [https://pypi.org/project/requests-aws4auth/](https://pypi.org/project/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)
```