

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

# Akses data lintas wilayah ke domain OpenSearch
<a name="application-cross-region-data-access-domains"></a>

Anda dapat mengonfigurasi aplikasi OpenSearch UI Anda Wilayah AWS menjadi satu untuk mengakses OpenSearch domain di Wilayah AWS s yang berbeda. Ini memungkinkan Anda membuat dasbor terpadu yang mengumpulkan data dari OpenSearch domain di beberapa Wilayah AWS s dalam partisi yang sama. Dukungan sumber data lintas wilayah memerlukan kontrol akses berbutir halus untuk diaktifkan pada domain target. Kontrol akses berbutir halus menyediakan lapisan otorisasi tambahan di luar kebijakan akses domain, memungkinkan Anda mengontrol akses ke indeks, dokumen, dan bidang individual.

## Konsep utama
<a name="cross-region-key-concepts"></a>

Wilayah Aplikasi  
 Wilayah AWS Tempat aplikasi OpenSearch UI Anda di-host.

Wilayah Target  
Di Wilayah AWS mana OpenSearch domain berada. Ini bisa berupa Wilayah mana pun dalam partisi yang sama, terlepas dari apakah OpenSearch UI tersedia di Wilayah itu.

Peran lintas akun  
Peran IAM dalam akun target yang digunakan selama asosiasi sumber data saja. OpenSearch UI mengasumsikan peran ini untuk memanggil`es:DescribeDomain`, yang mengambil titik akhir domain dan memverifikasi bahwa kontrol akses berbutir halus diaktifkan. Peran ini hanya diperlukan ketika domain berada di akun yang berbeda dari aplikasi. Untuk informasi selengkapnya, lihat [Akses data lintas akun ke domain OpenSearch](application-cross-account-data-access-domains.md).

Peran aplikasi IAM Identity Center  
Peran IAM dalam akun aplikasi yang digunakan untuk akses pesawat data pengguna IAM Identity Center.

Wilayah yang Didukung (untuk domain VPC)  
Untuk domain VPC, Anda harus mengizinkan daftar tempat aplikasi OpenSearch UI Anda di-host saat Wilayah AWS mengotorisasi titik akhir VPC. Daftar yang diizinkan ini diperlukan agar OpenSearch UI dapat melakukan panggilan ke domain VPC.

## Prasyarat
<a name="cross-region-prerequisites"></a>

Sebelum Anda mengatur akses data lintas wilayah, pastikan Anda memiliki yang berikut:
+ AWS CLI diinstal dan dikonfigurasi
+ Akses ke Akun AWS di Wilayah aplikasi dan Wilayah target
+ OpenSearch domain dengan kontrol akses berbutir halus diaktifkan. Asosiasi sumber data multi-wilayah hanya didukung untuk domain dengan kontrol akses berbutir halus diaktifkan.
+ Untuk skenario lintas akun: Akses ke sumber dan target s Akun AWS
+ Untuk alur Pusat Identitas IAM: Sebuah contoh AWS IAM Identity Center organisasi. Aplikasi OpenSearch UI harus berada di Region yang sama dengan instance IAM Identity Center.

## Skenario
<a name="cross-region-scenarios"></a>

Pilih skenario yang cocok dengan metode otentikasi dan konfigurasi domain Anda:
+ [Skenario 1: Pengguna IAM mengakses domain publik di Wilayah yang berbeda](#cross-region-scenario-1)
+ [Skenario 2: Pengguna IAM Identity Center mengakses domain publik di Wilayah yang berbeda](#cross-region-scenario-2)
+ [Skenario 3: Pengguna IAM mengakses domain VPC di Wilayah yang berbeda](#cross-region-scenario-3)
+ [Skenario 4: Pengguna IAM Identity Center mengakses domain VPC di Wilayah yang berbeda](#cross-region-scenario-4)

Setiap skenario mencakup akses lintas wilayah akun yang sama. Untuk akses lintas wilayah lintas akun, gabungkan langkah-langkah dalam skenario ini dengan pengaturan peran lintas akun yang dijelaskan dalam. [Akses data lintas akun ke domain OpenSearch](application-cross-account-data-access-domains.md)

## Skenario 1: Pengguna IAM mengakses domain publik di Wilayah yang berbeda
<a name="cross-region-scenario-1"></a>

Dalam skenario ini, Anda membuat aplikasi OpenSearch UI di satu Wilayah dan menghubungkannya ke OpenSearch domain publik di Wilayah yang berbeda dalam akun yang sama.

### Langkah 1: Buat OpenSearch domain (Wilayah target)
<a name="cross-region-scenario-1-step-1"></a>

Buat OpenSearch domain di Wilayah target dengan kontrol akses berbutir halus diaktifkan. Cakupan kebijakan akses ke root akun atau prinsip IAM tertentu.

```
aws opensearch create-domain \
  --domain-name {{domain-name}} \
  --engine-version OpenSearch_2.19 \
  --cluster-config InstanceType=m5.large.search,InstanceCount=1 \
  --ebs-options "EBSEnabled=true,VolumeType=gp3,VolumeSize=100" \
  --advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"{{admin}}","MasterUserPassword":"{{master-password}}"}}' \
  --node-to-node-encryption-options '{"Enabled":true}' \
  --encryption-at-rest-options '{"Enabled":true}' \
  --domain-endpoint-options '{"EnforceHTTPS":true,"TLSSecurityPolicy":"Policy-Min-TLS-1-2-2019-07"}' \
  --access-policies '{"Version":"2012-10-17",		 	 	 "Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::{{account-id}}:root"},"Action":"es:ESHttp*","Resource":"arn:aws:es:{{target-region}}:{{account-id}}:domain/{{domain-name}}/*"}]}' \
  --region {{target-region}}
```

Tunggu status domain menjadi `Active` sebelum melanjutkan.

### Langkah 2: Buat aplikasi OpenSearch UI (Wilayah aplikasi)
<a name="cross-region-scenario-1-step-2"></a>

Buat aplikasi di wilayah aplikasi dengan sumber data lintas wilayah. Wilayah diekstraksi dari sumber data ARN secara otomatis.

```
aws opensearch create-application \
  --region {{application-region}} \
  --name "{{cross-region-iam-app}}" \
  --data-sources '[{
    "dataSourceArn":"arn:aws:es:{{target-region}}:{{account-id}}:domain/{{domain-name}}",
    "dataSourceDescription":"{{Cross-region domain}}"
  }]' \
  --app-configs '[{"key":"opensearchDashboards.dashboardAdmin.users","value":"[\"{{test-user}}\"]"}]'
```

### Langkah 3: Verifikasi dan akses
<a name="cross-region-scenario-1-step-3"></a>

Ambil detail aplikasi untuk mendapatkan URL endpoint:

```
aws opensearch get-application \
  --region {{application-region}} \
  --id {{application-id}}
```
+ Arahkan ke URL titik akhir aplikasi dari respons.
+ Masuk dengan kredensi IAM.
+ Pengguna IAM menandatangani permintaan pesawat data dengan kredensialnya sendiri.
+ Kebijakan akses domain target dan pemetaan peran backend mengontrol data apa yang dapat diakses pengguna.

## Skenario 2: Pengguna IAM Identity Center mengakses domain publik di Wilayah yang berbeda
<a name="cross-region-scenario-2"></a>

Dalam skenario ini, Anda membuat aplikasi OpenSearch UI dengan autentikasi IAM Identity Center di satu Wilayah dan menghubungkannya ke OpenSearch domain publik di Wilayah yang berbeda dalam akun yang sama.

### Langkah 1: Buat OpenSearch domain dengan IAM Identity Center diaktifkan (Wilayah target)
<a name="cross-region-scenario-2-step-1"></a>

Buat OpenSearch domain di Wilayah target dengan kontrol akses berbutir halus dan integrasi Pusat Identitas IAM diaktifkan. Gunakan `--identity-center-options` parameter dengan `IdentityCenterInstanceRegion` untuk menentukan Wilayah di mana instans Pusat Identitas IAM Anda berada. Wilayah ini harus sama dengan tempat aplikasi OpenSearch UI di-host.

```
aws opensearch create-domain \
  --domain-name {{domain-name}} \
  --engine-version OpenSearch_2.19 \
  --cluster-config InstanceType=m5.large.search,InstanceCount=1 \
  --ebs-options "EBSEnabled=true,VolumeType=gp3,VolumeSize=100" \
  --advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"{{admin}}","MasterUserPassword":"{{master-password}}"}}' \
  --node-to-node-encryption-options '{"Enabled":true}' \
  --encryption-at-rest-options '{"Enabled":true}' \
  --domain-endpoint-options '{"EnforceHTTPS":true,"TLSSecurityPolicy":"Policy-Min-TLS-1-2-2019-07"}' \
  --identity-center-options '{"EnabledAPIAccess":true,"IdentityCenterInstanceARN":"arn:aws:sso:::instance/ssoins-{{instance-id}}","IdentityCenterInstanceRegion":"{{idc-region}}","RolesKey":"GroupId","SubjectKey":"UserId"}' \
  --access-policies '{"Version":"2012-10-17",		 	 	 "Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::{{account-id}}:role/{{NeoIdCAppRole}}"},"Action":"es:ESHttp*","Resource":"arn:aws:es:{{target-region}}:{{account-id}}:domain/{{domain-name}}/*"}]}' \
  --region {{target-region}}
```

Tunggu status domain menjadi `Active` sebelum melanjutkan.

### Langkah 2: Buat peran IAM untuk aplikasi IAM Identity Center
<a name="cross-region-scenario-2-step-2"></a>

Buat peran IAM yang digunakan OpenSearch UI untuk akses pesawat data pengguna IAM Identity Center.

**Untuk membuat peran aplikasi IAM Identity Center**

1. Buat kebijakan kepercayaan hanya dengan `sts:AssumeRole` pernyataan. Anda akan memperbarui kebijakan ini untuk menambahkan `sts:SetContext` pernyataan setelah membuat aplikasi di langkah berikutnya.

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

1. Membuat kebijakan izin:

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Sid": "OpenSearchDomain",
       "Effect": "Allow",
       "Action": ["es:ESHttp*"],
       "Resource": "arn:aws:es:{{target-region}}:{{account-id}}:domain/{{domain-name}}/*"
     }]
   }
   ```

1. Buat peran dan lampirkan kebijakan:

   ```
   aws iam create-role \
     --role-name {{NeoIdCAppRole}} \
     --assume-role-policy-document file://{{neoidc-trust-policy.json}}
   
   aws iam put-role-policy \
     --role-name {{NeoIdCAppRole}} \
     --policy-name {{NeoIdCAppPermissions}} \
     --policy-document file://{{neoidc-permissions-policy.json}}
   ```

### Langkah 3: Buat aplikasi OpenSearch UI dengan IAM Identity Center (Region aplikasi)
<a name="cross-region-scenario-2-step-3"></a>

**catatan**  
Pastikan instans IAM Identity Center berada di Region yang sama dengan Region aplikasi OpenSearch UI.

```
aws opensearch create-application \
  --region {{application-region}} \
  --name "{{cross-region-idc-app}}" \
  --iam-identity-center-options '{
    "enabled":true,
    "iamIdentityCenterInstanceArn":"arn:aws:sso:::instance/ssoins-{{instance-id}}",
    "iamRoleForIdentityCenterApplicationArn":"arn:aws:iam::{{account-id}}:role/{{NeoIdCAppRole}}"
  }' \
  --data-sources '[{
    "dataSourceArn":"arn:aws:es:{{target-region}}:{{account-id}}:domain/{{domain-name}}",
    "dataSourceDescription":"{{Cross-region domain}}"
  }]' \
  --app-configs '[{"key":"opensearchDashboards.dashboardAdmin.users","value":"[\"{{test-user}}\"]"}]'
```

Setelah aplikasi dibuat, perhatikan ID aplikasi SSO dari respons. Kemudian perbarui kebijakan kepercayaan pada peran aplikasi Pusat Identitas IAM untuk menambahkan `sts:SetContext` pernyataan:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "application.opensearchservice.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "application.opensearchservice.amazonaws.com"
      },
      "Action": "sts:SetContext",
      "Condition": {
        "ForAllValues:ArnEquals": {
          "sts:RequestContextProviders": "arn:aws:iam::{{account-id}}:oidc-provider/portal.sso.{{idc-region}}.amazonaws.com/apl/{{application-id}}"
        }
      }
    }
  ]
}
```

```
aws iam update-assume-role-policy \
  --role-name {{NeoIdCAppRole}} \
  --policy-document file://{{updated-trust-policy.json}}
```

### Langkah 4: Buat dan tetapkan pengguna dan grup IAM Identity Center
<a name="cross-region-scenario-2-step-4"></a>

**Buat pengguna Pusat Identitas IAM**  
Jalankan perintah berikut. Ganti {{placeholder values}} dengan informasi Anda sendiri.

```
aws identitystore create-user \
  --identity-store-id {{d-directory-id}} \
  --user-name {{user-email}} \
  --display-name "{{display-name}}" \
  --name Formatted=string,FamilyName={{last-name}},GivenName={{first-name}} \
  --emails Value={{user-email}},Type=work,Primary=true
```

**Buat grup Pusat Identitas IAM dan tambahkan pengguna**  
Jalankan perintah berikut:

```
aws identitystore create-group \
  --identity-store-id {{d-directory-id}} \
  --display-name "{{OpenSearchUsers}}" \
  --description "{{Users with OpenSearch access}}"

aws identitystore create-group-membership \
  --identity-store-id {{d-directory-id}} \
  --group-id {{group-id}} \
  --member-id UserId={{user-id}}
```

**Tetapkan pengguna atau grup ke aplikasi**  
Jalankan perintah berikut:

```
aws sso-admin create-application-assignment \
  --application-arn "arn:aws:sso::{{account-id}}:application/ssoins-{{instance-id}}/apl-{{application-id}}" \
  --principal-id {{user-id-or-group-id}} \
  --principal-type {{USER}}
```

**Konfigurasikan pemetaan peran backend pada domain target**  
Petakan grup Pusat Identitas IAM ke peran OpenSearch keamanan pada domain target:

```
curl -XPATCH "https://{{domain-endpoint}}/_plugins/_security/api/rolesmapping/all_access" \
  -u {{admin}}:{{master-password}} \
  -H 'Content-Type: application/json' \
  -d '[{"op": "add", "path": "/backend_roles", "value": ["{{group-id}}"]}]'
```

### Langkah 5: Verifikasi dan akses
<a name="cross-region-scenario-2-step-5"></a>

Ambil detail aplikasi untuk mendapatkan URL endpoint:

```
aws opensearch get-application \
  --region {{application-region}} \
  --id {{application-id}}
```
+ Arahkan ke URL titik akhir aplikasi.
+ Masuk dengan kredensi pengguna IAM Identity Center.
+ Permintaan data pengguna IAM Identity Center ditandatangani dengan peran aplikasi IAM Identity Center.
+ Pemetaan peran backend pada izin akses data kontrol domain.

## Skenario 3: Pengguna IAM mengakses domain VPC di Wilayah yang berbeda
<a name="cross-region-scenario-3"></a>

Dalam skenario ini, Anda membuat aplikasi OpenSearch UI di satu Wilayah dan menghubungkannya ke OpenSearch domain VPC di Wilayah yang berbeda dalam akun yang sama. Domain VPC memerlukan konfigurasi jaringan tambahan dan otorisasi titik akhir VPC eksplisit dengan dukungan lintas wilayah.

### Langkah 1: Siapkan VPC (Wilayah target)
<a name="cross-region-scenario-3-step-1"></a>

Lewati langkah ini jika VPC sudah ada di Wilayah target.

```
# Create VPC
aws ec2 create-vpc \
  --cidr-block 10.0.0.0/16 \
  --region {{target-region}}

# Create subnet
aws ec2 create-subnet \
  --vpc-id {{vpc-id}} \
  --cidr-block 10.0.1.0/24 \
  --availability-zone {{target-region}}a \
  --region {{target-region}}

# Create security group
aws ec2 create-security-group \
  --group-name {{opensearch-vpc-sg}} \
  --description "Security group for OpenSearch VPC domain" \
  --vpc-id {{vpc-id}} \
  --region {{target-region}}

# Allow inbound HTTPS
aws ec2 authorize-security-group-ingress \
  --group-id {{security-group-id}} \
  --protocol tcp \
  --port 443 \
  --cidr 10.0.0.0/16 \
  --region {{target-region}}
```

Pelajari lebih lanjut tentang [pembuatan domain VPC](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html).

### Langkah 2: Buat domain VPC (Wilayah target)
<a name="cross-region-scenario-3-step-2"></a>

```
aws opensearch create-domain \
  --domain-name {{vpc-domain-name}} \
  --engine-version OpenSearch_2.19 \
  --cluster-config InstanceType=m5.large.search,InstanceCount=1 \
  --ebs-options "EBSEnabled=true,VolumeType=gp3,VolumeSize=100" \
  --vpc-options "SubnetIds={{subnet-id}},SecurityGroupIds={{security-group-id}}" \
  --advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"{{admin}}","MasterUserPassword":"{{master-password}}"}}' \
  --node-to-node-encryption-options '{"Enabled":true}' \
  --encryption-at-rest-options '{"Enabled":true}' \
  --domain-endpoint-options '{"EnforceHTTPS":true,"TLSSecurityPolicy":"Policy-Min-TLS-1-2-2019-07"}' \
  --access-policies '{"Version":"2012-10-17",		 	 	 "Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::{{account-id}}:root"},"Action":"es:ESHttp*","Resource":"arn:aws:es:{{target-region}}:{{account-id}}:domain/{{vpc-domain-name}}/*"}]}' \
  --region {{target-region}}
```

Tunggu status domain menjadi `Active` sebelum melanjutkan.

### Langkah 3: Otorisasi titik akhir VPC untuk OpenSearch prinsip layanan UI dengan dukungan lintas wilayah (Wilayah target)
<a name="cross-region-scenario-3-step-3"></a>

```
# Authorize the service principal with cross-region support
aws opensearch authorize-vpc-endpoint-access \
  --domain-name {{vpc-domain-name}} \
  --service "application.opensearchservice.amazonaws.com" \
  --service-options '{"SupportedRegions":["{{target-region}}","{{application-region}}"]}' \
  --region {{target-region}}

# Verify authorization
aws opensearch list-vpc-endpoint-access \
  --domain-name {{vpc-domain-name}} \
  --region {{target-region}}
```

Tanggapan yang diharapkan:

```
{
  "AuthorizedPrincipalList": [
    {
      "PrincipalType": "AWS_SERVICE",
      "Principal": "application.opensearchservice.amazonaws.com",
      "ServiceOptions": {
        "SupportedRegions": ["{{target-region}}", "{{application-region}}"]
      }
    }
  ]
}
```

### Langkah 4: Buat aplikasi OpenSearch UI (Wilayah aplikasi)
<a name="cross-region-scenario-3-step-4"></a>

```
aws opensearch create-application \
  --region {{application-region}} \
  --name "{{cross-region-vpc-iam-app}}" \
  --data-sources '[{
    "dataSourceArn":"arn:aws:es:{{target-region}}:{{account-id}}:domain/{{vpc-domain-name}}",
    "dataSourceDescription":"{{Cross-region VPC domain}}"
  }]' \
  --app-configs '[{"key":"opensearchDashboards.dashboardAdmin.users","value":"[\"{{test-user}}\"]"}]'
```

### Langkah 5: Verifikasi dan akses
<a name="cross-region-scenario-3-step-5"></a>

Ambil detail aplikasi untuk mendapatkan URL endpoint:

```
aws opensearch get-application \
  --region {{application-region}} \
  --id {{application-id}}
```
+ Arahkan ke URL titik akhir aplikasi dari respons.
+ Masuk dengan kredensi IAM.
+ Pengguna IAM menandatangani permintaan pesawat data dengan kredensialnya sendiri.
+ Kebijakan akses domain target dan pemetaan peran backend mengontrol data apa yang dapat diakses pengguna.

## Skenario 4: Pengguna IAM Identity Center mengakses domain VPC di Wilayah yang berbeda
<a name="cross-region-scenario-4"></a>

Dalam skenario ini, Anda membuat aplikasi OpenSearch UI dengan autentikasi IAM Identity Center di satu Wilayah dan menghubungkannya ke OpenSearch domain VPC di Wilayah yang berbeda dalam akun yang sama.

### Langkah 1: Siapkan VPC (Wilayah target)
<a name="cross-region-scenario-4-step-1"></a>

Lewati langkah ini jika VPC sudah ada di Wilayah target.

```
# Create VPC
aws ec2 create-vpc \
  --cidr-block 10.0.0.0/16 \
  --region {{target-region}}

# Create subnet
aws ec2 create-subnet \
  --vpc-id {{vpc-id}} \
  --cidr-block 10.0.1.0/24 \
  --availability-zone {{target-region}}a \
  --region {{target-region}}

# Create security group
aws ec2 create-security-group \
  --group-name {{opensearch-vpc-sg}} \
  --description "Security group for OpenSearch VPC domain" \
  --vpc-id {{vpc-id}} \
  --region {{target-region}}

# Allow inbound HTTPS
aws ec2 authorize-security-group-ingress \
  --group-id {{security-group-id}} \
  --protocol tcp \
  --port 443 \
  --cidr 10.0.0.0/16 \
  --region {{target-region}}
```

Pelajari lebih lanjut tentang [pembuatan domain VPC](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html).

### Langkah 2: Buat domain VPC dengan IAM Identity Center diaktifkan (Wilayah target)
<a name="cross-region-scenario-4-step-2"></a>

Buat OpenSearch domain di Wilayah target dengan kontrol akses berbutir halus, integrasi Pusat Identitas IAM, dan konfigurasi VPC diaktifkan. Perbarui kebijakan akses untuk mengizinkan peran aplikasi Pusat Identitas IAM dan tambahkan `--identity-center-options` parameter:

```
aws opensearch create-domain \
  --domain-name {{vpc-domain-name}} \
  --engine-version OpenSearch_2.19 \
  --cluster-config InstanceType=m5.large.search,InstanceCount=1 \
  --ebs-options "EBSEnabled=true,VolumeType=gp3,VolumeSize=100" \
  --vpc-options "SubnetIds={{subnet-id}},SecurityGroupIds={{security-group-id}}" \
  --advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"{{admin}}","MasterUserPassword":"{{master-password}}"}}' \
  --node-to-node-encryption-options '{"Enabled":true}' \
  --encryption-at-rest-options '{"Enabled":true}' \
  --domain-endpoint-options '{"EnforceHTTPS":true,"TLSSecurityPolicy":"Policy-Min-TLS-1-2-2019-07"}' \
  --identity-center-options '{"EnabledAPIAccess":true,"IdentityCenterInstanceARN":"arn:aws:sso:::instance/ssoins-{{instance-id}}","IdentityCenterInstanceRegion":"{{idc-region}}","RolesKey":"GroupId","SubjectKey":"UserId"}' \
  --access-policies '{"Version":"2012-10-17",		 	 	 "Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::{{account-id}}:role/{{NeoIdCAppRole}}"},"Action":"es:ESHttp*","Resource":"arn:aws:es:{{target-region}}:{{account-id}}:domain/{{vpc-domain-name}}/*"}]}' \
  --region {{target-region}}
```

Tunggu status domain menjadi `Active` sebelum melanjutkan.

### Langkah 3: Otorisasi titik akhir VPC untuk OpenSearch prinsip layanan UI dengan dukungan lintas wilayah (Wilayah target)
<a name="cross-region-scenario-4-step-3"></a>

**penting**  
Ini adalah langkah penting yang unik untuk domain VPC dengan akses lintas wilayah. Layanan OpenSearch UI harus secara eksplisit diizinkan untuk mengakses titik akhir VPC, dan Anda harus menyertakan Wilayah aplikasi dalam daftar. `SupportedRegions`

```
# Authorize the service principal with cross-region support
aws opensearch authorize-vpc-endpoint-access \
  --domain-name {{vpc-domain-name}} \
  --service "application.opensearchservice.amazonaws.com" \
  --service-options '{"SupportedRegions":["{{target-region}}","{{application-region}}"]}' \
  --region {{target-region}}

# Verify authorization
aws opensearch list-vpc-endpoint-access \
  --domain-name {{vpc-domain-name}} \
  --region {{target-region}}
```

Tanggapan yang diharapkan:

```
{
  "AuthorizedPrincipalList": [
    {
      "PrincipalType": "AWS_SERVICE",
      "Principal": "application.opensearchservice.amazonaws.com",
      "ServiceOptions": {
        "SupportedRegions": ["{{target-region}}", "{{application-region}}"]
      }
    }
  ]
}
```

### Langkah 4: Buat peran IAM untuk aplikasi IAM Identity Center
<a name="cross-region-scenario-4-step-4"></a>

Buat peran IAM yang digunakan OpenSearch UI untuk akses pesawat data pengguna IAM Identity Center.

**Untuk membuat peran aplikasi IAM Identity Center**

1. Buat kebijakan kepercayaan hanya dengan `sts:AssumeRole` pernyataan. Anda akan memperbarui kebijakan ini untuk menambahkan `sts:SetContext` pernyataan setelah membuat aplikasi di langkah berikutnya.

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

1. Membuat kebijakan izin:

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [{
       "Sid": "OpenSearchDomain",
       "Effect": "Allow",
       "Action": ["es:ESHttp*"],
       "Resource": "arn:aws:es:{{target-region}}:{{account-id}}:domain/{{vpc-domain-name}}/*"
     }]
   }
   ```

1. Buat peran dan lampirkan kebijakan:

   ```
   aws iam create-role \
     --role-name {{NeoIdCAppRole}} \
     --assume-role-policy-document file://{{neoidc-trust-policy.json}}
   
   aws iam put-role-policy \
     --role-name {{NeoIdCAppRole}} \
     --policy-name {{NeoIdCAppPermissions}} \
     --policy-document file://{{neoidc-permissions-policy.json}}
   ```

### Langkah 5: Buat aplikasi OpenSearch UI dengan IAM Identity Center (Region aplikasi)
<a name="cross-region-scenario-4-step-5"></a>

```
aws opensearch create-application \
  --region {{application-region}} \
  --name "{{cross-region-vpc-idc-app}}" \
  --iam-identity-center-options '{
    "enabled":true,
    "iamIdentityCenterInstanceArn":"arn:aws:sso:::instance/ssoins-{{instance-id}}",
    "iamRoleForIdentityCenterApplicationArn":"arn:aws:iam::{{account-id}}:role/{{NeoIdCAppRole}}"
  }' \
  --data-sources '[{
    "dataSourceArn":"arn:aws:es:{{target-region}}:{{account-id}}:domain/{{vpc-domain-name}}",
    "dataSourceDescription":"{{Cross-region VPC domain}}"
  }]' \
  --app-configs '[{"key":"opensearchDashboards.dashboardAdmin.users","value":"[\"{{test-user}}\"]"}]'
```

Setelah aplikasi dibuat, perhatikan ID aplikasi SSO dari respons. Kemudian perbarui kebijakan kepercayaan pada peran aplikasi Pusat Identitas IAM untuk menambahkan `sts:SetContext` pernyataan:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "application.opensearchservice.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "application.opensearchservice.amazonaws.com"
      },
      "Action": "sts:SetContext",
      "Condition": {
        "ForAllValues:ArnEquals": {
          "sts:RequestContextProviders": "arn:aws:iam::{{account-id}}:oidc-provider/portal.sso.{{idc-region}}.amazonaws.com/apl/{{application-id}}"
        }
      }
    }
  ]
}
```

```
aws iam update-assume-role-policy \
  --role-name {{NeoIdCAppRole}} \
  --policy-document file://{{updated-trust-policy.json}}
```

### Langkah 6: Buat dan tetapkan pengguna dan grup IAM Identity Center
<a name="cross-region-scenario-4-step-6"></a>

Ikuti langkah yang sama seperti [Langkah 4: Buat dan tetapkan pengguna dan grup IAM Identity Center](#cross-region-scenario-2-step-4) membuat pengguna, grup, menetapkannya ke aplikasi, dan mengonfigurasi pemetaan peran backend pada domain target.

### Langkah 7: Verifikasi dan akses
<a name="cross-region-scenario-4-step-7"></a>

Ambil detail aplikasi untuk mendapatkan URL endpoint:

```
aws opensearch get-application \
  --region {{application-region}} \
  --id {{application-id}}
```
+ Arahkan ke URL titik akhir aplikasi.
+ Masuk dengan kredensi pengguna IAM Identity Center.
+ Permintaan data pengguna IAM Identity Center ditandatangani dengan peran aplikasi IAM Identity Center.
+ Pemetaan peran backend pada izin akses data kontrol domain.

## Mengelola aplikasi
<a name="cross-region-managing-applications"></a>

**Perbarui aplikasi dengan sumber data lintas wilayah**  
Jalankan perintah berikut. Ganti {{placeholder values}} dengan informasi Anda sendiri.

```
aws opensearch update-application \
  --region {{application-region}} \
  --id {{application-id}} \
  --data-sources '[{
    "dataSourceArn":"arn:aws:es:{{target-region-1}}:{{account-id}}:domain/{{domain-1}}",
    "dataSourceDescription":"{{Domain in target Region 1}}"
  },{
    "dataSourceArn":"arn:aws:es:{{target-region-2}}:{{account-id}}:domain/{{domain-2}}",
    "dataSourceDescription":"{{Domain in target Region 2}}"
  }]'
```

**penting**  
Operasi pembaruan menggantikan seluruh array sumber data. Sertakan semua sumber data yang ingin Anda simpan.

**Daftar aplikasi**  
Jalankan perintah berikut:

```
aws opensearch list-applications \
  --region {{application-region}}
```

**Menghapus sebuah aplikasi**  
Jalankan perintah berikut:

```
aws opensearch delete-application \
  --region {{application-region}} \
  --id {{application-id}}
```

**Mencabut akses titik akhir VPC untuk Wilayah tertentu**  
Untuk mencabut akses lintas wilayah untuk Wilayah AWS s tertentu sambil mempertahankan yang lain, gunakan `--service-options` parameter dengan Wilayah untuk mencabut:

```
aws opensearch revoke-vpc-endpoint-access \
  --domain-name {{vpc-domain-name}} \
  --service "application.opensearchservice.amazonaws.com" \
  --service-options '{"SupportedRegions":["{{region-to-revoke}}"]}' \
  --region {{target-region}}
```

## Referensi cepat
<a name="cross-region-quick-reference"></a>

Tabel berikut merangkum perbedaan utama antara jenis domain, metode otentikasi, dan akses wilayah yang sama versus lintas wilayah.


**Domain publik dibandingkan dengan domain VPC**  

| Aspek | Domain publik | Domain VPC | 
| --- | --- | --- | 
| Otorisasi titik akhir VPC | Tidak diperlukan | Wajib — harus mengotorisasi dengan application.opensearchservice.amazonaws.com SupportedRegions | 
| Pengaturan jaringan | Tidak ada | VPC, subnet, grup keamanan dengan HTTPS (443) masuk | 
| Kebijakan akses IAM | Diperlukan | Diperlukan | 


**Pengguna IAM dibandingkan dengan pengguna IAM Identity Center**  

| Aspek | Pengguna IAM | Pengguna Pusat Identitas IAM | 
| --- | --- | --- | 
| Kredensial bidang data | Kredensi IAM milik pengguna sendiri | Peran aplikasi IAM Identity Center | 
| Kontrol akses | Kebijakan akses domain dan pemetaan peran backend | Kebijakan akses domain dan pemetaan peran backend | 
| Kendala Wilayah Aplikasi | Wilayah mana saja | Harus berada di Region yang sama dengan instans IAM Identity Center | 
| Konfigurasi domain | Standar | Membutuhkan --identity-center-options dengan IdentityCenterInstanceRegion | 
| Pengaturan tambahan | Tidak ada | Peran aplikasi IAM Identity Center, user/group pembuatan, penugasan aplikasi, pemetaan peran backend | 


**Wilayah yang sama dibandingkan dengan lintas wilayah**  

| Aspek | Wilayah yang sama | Lintas wilayah | 
| --- | --- | --- | 
| Sumber data ARN | Wilayah yang sama dengan aplikasi | Wilayah yang berbeda dari aplikasi (partisi yang sama) | 
| Otorisasi titik akhir VPC | Hilangkan --service-options | Sertakan --service-options dengan SupportedRegions | 
| Konfigurasi domain Pusat Identitas IAM | IdentityCenterInstanceRegionopsional | IdentityCenterInstanceRegiondiperlukan | 
| Dukungan lintas-partisi | N/A | Tidak didukung - sumber data harus berada di partisi yang sama | 

## Catatan penting
<a name="cross-region-important-notes"></a>
+ Asosiasi sumber data lintas wilayah memerlukan kontrol akses berbutir halus untuk diaktifkan pada domain target.
+ Sumber data lintas wilayah harus berada dalam partisi yang sama. Akses lintas partisi (misalnya, dari `aws` ke`aws-cn`) tidak didukung.
+ Wilayah sumber data diekstraksi dari sumber data ARN secara otomatis. Tidak ada parameter Wilayah tambahan yang diperlukan di `CreateApplication` or `UpdateApplication` APIs.
+ Untuk sumber data lintas wilayah akun yang sama, `iamRoleForDataSourceArn` tidak diperlukan. Ini hanya diperlukan untuk sumber data lintas akun.
+ Untuk domain VPC, Anda harus menyertakan Wilayah aplikasi dalam `SupportedRegions` parameter saat memanggil. `AuthorizeVpcEndpointAccess` Menghilangkan `--service-options` otorisasi hanya akses wilayah yang sama.
+ Untuk alur IAM Identity Center, aplikasi OpenSearch UI harus berada di Region yang sama dengan instance IAM Identity Center.
+ Untuk alur Pusat Identitas IAM dengan domain lintas wilayah, domain target harus disertakan `--identity-center-options` untuk mengaktifkan `IdentityCenterInstanceRegion` introspeksi token lintas wilayah.
+ Versi mesin yang didukung: OpenSearch 1.3 dan di atas.

## Pemecahan masalah
<a name="cross-region-troubleshooting"></a>


| Isu | Resolusi | 
| --- | --- | 
| Pembuatan aplikasi gagal dengan “Tidak dapat mengakses domain” | Verifikasi bahwa domain ada di Wilayah target dan kontrol akses berbutir halus diaktifkan. Untuk skenario lintas akun, verifikasi peran lintas akun memiliki es:DescribeDomain izin dan kebijakan kepercayaan memungkinkan akun sumber. | 
| Akses domain VPC gagal untuk lintas wilayah | Pastikan bahwa titik akhir VPC diotorisasi application.opensearchservice.amazonaws.com dengan Wilayah aplikasi yang disertakan di dalamnya. SupportedRegions | 
| Akses pesawat data ditolak untuk pengguna IAM | Periksa apakah kebijakan akses domain target memungkinkan pengguna IAM atau kepala peran, dan bahwa pemetaan peran backend kontrol akses berbutir halus memberikan izin yang sesuai. | 
| Akses pesawat data ditolak untuk pengguna IAM Identity Center | Verifikasi bahwa pemetaan peran backend menyertakan ID grup Pusat Identitas IAM, kebijakan domain mengizinkan peran aplikasi Pusat Identitas IAM, dan IdentityCenterInstanceRegion disetel dengan benar ke Wilayah yang sama dengan aplikasi OpenSearch UI pada domain. | 
| Sumber data partisi silang ditolak | Akses lintas partisi tidak didukung. Pastikan ARN sumber data berada di partisi yang sama dengan aplikasi. | 
| Autentikasi Pusat Identitas IAM gagal untuk domain lintas wilayah | Verifikasi bahwa IdentityCenterInstanceRegion disetel ke Wilayah yang benar di mana instans Pusat Identitas IAM Anda diaktifkan. Aplikasi OpenSearch UI juga harus berada di Wilayah yang sama ini. | 