

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

# Nama domain khusus untuk REST publik APIs di API Gateway
<a name="how-to-custom-domains"></a>

*Nama domain khusus* lebih sederhana dan lebih intuitif URLs yang dapat Anda berikan kepada pengguna API Anda.

Setelah menerapkan API, Anda (dan pelanggan) dapat menjalankan API menggunakan URL dasar default dari format berikut: 

```
https://api-id.execute-api.region.amazonaws.com/stage
```

dimana *api-id* dihasilkan oleh API Gateway, *region* adalah AWS Wilayah, dan *stage* ditentukan oleh Anda saat menerapkan API.

Bagian nama host dari URL, `api-id.execute-api.region.amazonaws.com` mengacu pada titik akhir API. Nama endpoint API default dibuat secara acak, sulit diingat, dan tidak ramah pengguna.

Dengan nama domain khusus, Anda dapat mengatur nama host API Anda, dan memilih jalur dasar (misalnya,`myservice`) untuk memetakan URL alternatif ke API Anda. Misalnya, URL dasar API yang lebih ramah pengguna dapat menjadi:

```
https://api.example.com/myservice
```

**catatan**  
Untuk informasi tentang nama domain khusus untuk pribadi APIs, lihat[Nama domain khusus untuk pribadi APIs di API Gateway](apigateway-private-custom-domains.md).

## Pertimbangan-pertimbangan
<a name="custom-domain-considerations"></a>

Pertimbangan berikut dapat memengaruhi penggunaan nama domain kustom Anda:
+ Anda dapat menonaktifkan titik akhir default untuk API Anda. Klien masih dapat terhubung ke titik akhir default Anda, tetapi mereka akan menerima kode `403 Forbidden` status.
+ Nama domain kustom Regional dapat dikaitkan dengan REST APIs dan HTTP APIs. Anda dapat menggunakan [API Gateway Versi 2 APIs](https://docs.aws.amazon.com/apigatewayv2/latest/api-reference/api-reference.html) untuk membuat dan mengelola nama domain kustom Regional untuk REST APIs. 
+ Nama domain khusus harus unik di dalam Wilayah di semua AWS akun. 
+ Anda dapat memigrasikan nama domain kustom antara titik akhir yang dioptimalkan tepi dan Regional, tetapi Anda tidak dapat memigrasikan domain kustom publik ke nama domain kustom pribadi.
+ Anda harus membuat atau memperbarui catatan sumber daya penyedia DNS Anda untuk memetakan ke titik akhir API Anda. Tanpa pemetaan seperti itu, permintaan API yang terikat untuk nama domain khusus tidak dapat mencapai API Gateway.
+ Anda dapat mendukung jumlah nama domain yang hampir tak terbatas tanpa melebihi kuota default dengan menggunakan sertifikat wildcard. Untuk informasi selengkapnya, lihat [Nama domain kustom wildcard](#wildcard-custom-domain-names).
+ Anda dapat memilih kebijakan keamanan untuk nama domain kustom Anda. Untuk informasi selengkapnya, lihat [Pilih kebijakan keamanan untuk domain kustom Anda di API Gateway](apigateway-custom-domain-tls-version.md).
+ Untuk mengonfigurasi pemetaan API dengan beberapa level, Anda harus menggunakan nama domain kustom Regional dan menggunakan kebijakan keamanan TLS 1.2.

## Prasyarat untuk nama domain khusus
<a name="how-to-custom-domains-prerequisites"></a>

Berikut ini adalah prasyarat untuk membuat nama domain kustom publik atau pribadi. Untuk informasi tentang nama domain khusus untuk pribadi APIs, lihat[Nama domain khusus untuk pribadi APIs di API Gateway](apigateway-private-custom-domains.md).

### Daftarkan nama domain
<a name="custom-domain-names-register"></a>

Anda harus memiliki nama domain internet terdaftar untuk mengatur nama domain khusus untuk Anda APIs. Anda dapat mendaftarkan nama domain internet Anda menggunakan [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/) atau menggunakan registrar domain pihak ketiga pilihan Anda. Nama domain kustom Anda dapat berupa nama subdomain atau domain root (juga dikenal sebagai “zone apex”) dari domain internet terdaftar.

Nama domain Anda harus mengikuti spesifikasi [RFC 1035](https://tools.ietf.org/html/rfc1035#section-2.3.4) dan dapat memiliki maksimum 63 oktet per label dan total 255 oktet.

### Tentukan sertifikat untuk nama domain kustom Anda
<a name="custom-domain-names-certificates"></a>

Sebelum menyiapkan nama domain khusus untuk API, Anda harus memiliki SSL/TLS sertifikat yang siap di ACM. Jika ACM tidak tersedia di AWS Wilayah tempat Anda membuat nama domain kustom, Anda harus mengimpor sertifikat ke API Gateway di Wilayah tersebut.

Untuk mengimpor SSL/TLS sertifikat, Anda harus menyediakan badan SSL/TLS sertifikat berformat PEM, kunci pribadinya, dan rantai sertifikat untuk nama domain kustom.

Setiap sertifikat yang disimpan dalam ACM diidentifikasi oleh ARN-nya. Dengan sertifikat yang dikeluarkan oleh ACM, Anda tidak perlu khawatir mengekspos detail sertifikat sensitif, seperti kunci pribadi. Untuk menggunakan sertifikat AWS terkelola untuk nama domain, Anda cukup mereferensikan ARN-nya. 

Jika aplikasi Anda menggunakan pinning sertifikat, kadang-kadang dikenal sebagai penyematan SSL, untuk menyematkan sertifikat ACM, aplikasi mungkin tidak dapat terhubung ke domain Anda setelah AWS memperbarui sertifikat. Untuk informasi selengkapnya, lihat [Masalah penyematan sertifikat](https://docs.aws.amazon.com/acm/latest/userguide/troubleshooting-pinning.html) di *Panduan AWS Certificate Manager Pengguna*.

## Nama domain kustom wildcard
<a name="wildcard-custom-domain-names"></a>

Dengan nama domain khusus wildcard, Anda dapat mendukung jumlah nama domain yang hampir tak terbatas tanpa melebihi kuota [default](limits.md). Misalnya, Anda bisa memberi setiap pelanggan Anda nama domain mereka sendiri`customername.example.com`.

Untuk membuat nama domain kustom wildcard, tentukan wildcard (`*`) sebagai subdomain pertama dari domain kustom yang mewakili semua kemungkinan subdomain dari domain root.

Misalnya, nama domain kustom wildcard `*.example.com` menghasilkan subdomain seperti`a.example.com`,, `b.example.com` dan. `c.example.com` Saat Anda membuat nama domain khusus wildcard, semua subdomainnya dirutekan oleh mode perutean nama domain wildcard. Untuk merutekan subdomain ke yang berbeda APIs, Anda dapat melakukan salah satu hal berikut:
+ Gunakan aturan perutean untuk merutekan permintaan masuk `*.example.com` ke REST target yang berbeda APIs menggunakan header. `Host` Untuk informasi selengkapnya, lihat [Contoh 4: Aturan perutean untuk nama domain wildcard](rest-api-routing-rules-examples.md#rest-api-routing-rules-examples-rule-for-wildcard-domains). 
+ Buat nama domain untuk setiap subdomain yang ingin Anda rute ke titik akhir yang berbeda. Dalam satu AWS akun, Anda dapat memiliki keduanya `*.example.com` dan`a.example.com`.

Anda dapat menggunakan variabel `$context.domainName` dan `$context.domainPrefix` konteks untuk menentukan nama domain yang digunakan klien untuk memanggil API Anda. Untuk mempelajari lebih lanjut tentang variabel konteks, lihat[Variabel untuk transformasi data untuk API Gateway](api-gateway-mapping-template-reference.md).

Untuk membuat nama domain kustom wildcard, Anda harus memberikan sertifikat yang dikeluarkan oleh ACM yang telah divalidasi menggunakan DNS atau metode validasi email.

**catatan**  
Anda tidak dapat membuat nama domain khusus wildcard jika AWS akun lain telah membuat nama domain kustom yang bertentangan dengan nama domain kustom wildcard. Misalnya, jika akun A telah dibuat`a.example.com`, maka akun B tidak dapat membuat nama `*.example.com` domain khusus wildcard.  
Jika akun A dan akun B berbagi pemilik, Anda dapat menghubungi [Pusat AWS Dukungan](https://console.aws.amazon.com/support/home#/) untuk meminta pengecualian.

## Langkah selanjutnya untuk nama domain kustom
<a name="how-to-custom-domains-next-steps"></a>

Berikut ini adalah langkah selanjutnya untuk nama domain kustom.

**Langkah selanjutnya**
+ Untuk mempelajari cara mengatur SSL/TLS sertifikat Anda, lihat[Siapkan sertifikat AWS Certificate Manager](how-to-specify-certificate-for-custom-domain-name.md).
+ Untuk mempelajari cara membuat nama domain kustom Regional, lihat[Siapkan nama domain kustom Regional di API Gateway](apigateway-regional-api-custom-domain-create.md).
+ Untuk mempelajari cara membuat nama domain kustom yang dioptimalkan tepi, lihat. [Siapkan nama domain kustom yang dioptimalkan tepi di API Gateway](how-to-edge-optimized-custom-domain-name.md)
+ Untuk mempelajari cara bermigrasi antara nama domain kustom Regional dan yang dioptimalkan di tepi, lihat. [Memigrasikan nama domain kustom ke jenis endpoint API yang berbeda di API Gateway](apigateway-regional-api-custom-domain-migrate.md)
+ Untuk mempelajari cara menghubungkan tahapan API ke nama domain kustom, lihat[Kirim lalu lintas ke Anda APIs melalui nama domain kustom Anda di API Gateway](rest-api-routing-mode.md).
+ Untuk mempelajari cara memilih kebijakan keamanan untuk nama domain kustom Anda, lihat[Pilih kebijakan keamanan untuk domain kustom Anda di API Gateway](apigateway-custom-domain-tls-version.md).
+ Untuk mempelajari cara menonaktifkan titik akhir default untuk nama domain kustom Anda, lihat[Nonaktifkan titik akhir default untuk REST APIs](rest-api-disable-default-endpoint.md).
+ Untuk mempelajari cara menggunakan pemeriksaan kesehatan Route 53 untuk mengontrol failover DNS dari API Gateway API, lihat. [Konfigurasikan pemeriksaan kesehatan khusus untuk failover DNS untuk API Gateway API](dns-failover.md)

Jika ini adalah pertama kalinya Anda membuat nama domain kustom, kami sarankan Anda mulai dengan[Siapkan sertifikat AWS Certificate Manager](how-to-specify-certificate-for-custom-domain-name.md), untuk menentukan sertifikat Anda, dan kemudian [Siapkan nama domain kustom Regional di API Gateway](apigateway-regional-api-custom-domain-create.md) membuat nama domain kustom Regional. 

# Siapkan sertifikat AWS Certificate Manager
<a name="how-to-specify-certificate-for-custom-domain-name"></a>

Sebelum menyiapkan nama domain khusus untuk API, Anda harus memiliki sertifikat SSL/TLS yang siap. AWS Certificate Manager Untuk informasi selengkapnya, silakan lihat [Panduan Pengguna AWS Certificate Manager](https://docs.aws.amazon.com/acm/latest/userguide/).

## Pertimbangan-pertimbangan
<a name="how-to-specify-certificate-for-custom-domain-name-considerations"></a>

Berikut ini adalah pertimbangan untuk SSL/TLS sertifikat Anda.
+ Jika Anda membuat nama domain kustom yang dioptimalkan tepi, API Gateway memanfaatkan CloudFront untuk mendukung sertifikat untuk nama domain kustom. Dengan demikian, persyaratan dan batasan SSL/TLS sertifikat nama domain kustom ditentukan oleh. [CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html) Misalnya, ukuran maksimum kunci publik adalah 2048 dan ukuran kunci pribadi bisa 1024, 2048, dan 4096. Ukuran kunci publik ditentukan oleh otoritas sertifikat yang Anda gunakan. Minta otoritas sertifikat Anda untuk mengembalikan kunci dengan ukuran yang berbeda dari panjang default. Untuk informasi selengkapnya, lihat [Akses aman ke objek Anda](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https.html) dan [Buat cookie yang ditandatangani URLs dan ditandatangani](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-trusted-signers.html).
+ Jika Anda membuat nama domain kustom Regional, ukuran maksimum kunci publik adalah 2048.
+ Untuk menggunakan sertifikat ACM dengan nama domain kustom Regional, Anda harus meminta atau mengimpor sertifikat di Wilayah yang sama dengan API Anda. Sertifikat harus mencakup nama domain khusus.
+  Untuk menggunakan sertifikat ACM dengan nama domain kustom yang dioptimalkan tepi, Anda harus meminta atau mengimpor sertifikat di Wilayah AS Timur (Virginia N.). `us-east-1`
+  Anda harus memiliki nama domain terdaftar, seperti`example.com`. Anda dapat menggunakan [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/) atau registrar domain terakreditasi pihak ketiga. Untuk daftar pendaftar tersebut, lihat [Direktori Panitera Terakreditasi di situs web ICANN](https://www.icann.org/en/accredited-registrars). 

## Untuk membuat atau mengimpor SSL/TLS sertifikat ke ACM
<a name="how-to-specify-certificate-for-custom-domain-name-setup"></a>

Prosedur berikut menunjukkan cara membuat atau mengimpor SSL/TLS sertifikat untuk nama domain.

------
#### [ To request a certificate provided by ACM for a domain name ]

1. Masuk ke [konsol AWS Certificate Manager](https://console.aws.amazon.com/acm) tersebut.

1. Pilih **Minta sertifikat**.

1. Untuk **jenis Sertifikat**, pilih **Minta sertifikat publik**.

1. Pilih **Berikutnya**.

1. Untuk **nama domain yang sepenuhnya memenuhi syarat**, masukkan nama domain khusus untuk API Anda, misalnya,`api.example.com`.

1. Secara opsional, pilih **Tambahkan nama lain ke sertifikat ini**.

1. Untuk **metode Validasi**, pilih metode untuk memvalidasi kepemilikan domain.

1. Untuk **Algoritma kunci**, pilih algoritma enkripsi.

1. Pilih **Minta**.

1. Untuk permintaan yang valid, pemilik domain internet yang terdaftar harus menyetujui permintaan tersebut sebelum ACM mengeluarkan sertifikat. Jika Anda menggunakan Route 53 untuk mengelola catatan DNS publik, Anda dapat memperbarui catatan Anda melalui konsol ACM secara langsung.

------
#### [ To import into ACM a certificate for a domain name ]

1.  Dapatkan sertifikat yang dikodekan PEM untuk nama domain kustom Anda dari otoritas SSL/TLS sertifikat. Untuk daftar parsialnya CAs, lihat [Daftar CA Termasuk Mozilla](https://ccadb.my.salesforce-sites.com/mozilla/IncludedCACertificateReport). 

   1. Buat kunci pribadi untuk sertifikat dan simpan output ke file, menggunakan toolkit [OpenSSL di situs web](https://www.openssl.org) OpenSSL:

      ```
      openssl genrsa -out private-key-file 2048
      ```

   1. Buat permintaan penandatanganan sertifikat (CSR) dengan kunci pribadi yang dibuat sebelumnya, menggunakan OpenSSL:

      ```
      openssl req -new -sha256 -key private-key-file -out CSR-file
      ```

   1. Kirimkan CSR ke otoritas sertifikat dan simpan sertifikat yang dihasilkan.

   1. Unduh rantai sertifikat dari otoritas sertifikat.
**catatan**  
 Jika Anda mendapatkan kunci pribadi dengan cara lain dan kunci dienkripsi, Anda dapat menggunakan perintah berikut untuk mendekripsi kunci sebelum mengirimkannya ke API Gateway untuk menyiapkan nama domain kustom.   

   ```
   openssl pkcs8 -topk8 -inform pem -in MyEncryptedKey.pem -outform pem -nocrypt -out MyDecryptedKey.pem
   ```

1. Unggah sertifikat ke AWS Certificate Manager:

   1. Masuk ke [konsol AWS Certificate Manager](https://console.aws.amazon.com/acm) tersebut.

   1. Pilih **Impor sertifikat**.

   1. Untuk **badan Sertifikat**, masukkan badan sertifikat server berformat PEM dari otoritas sertifikat Anda. Berikut ini menunjukkan contoh singkat dari sertifikat tersebut.

      ```
      -----BEGIN CERTIFICATE-----
      EXAMPLECA+KgAwIBAgIQJ1XxJ8Pl++gOfQtj0IBoqDANBgkqhkiG9w0BAQUFADBB
      ...
      az8Cg1aicxLBQ7EaWIhhgEXAMPLE
      -----END CERTIFICATE-----
      ```

   1. Untuk **kunci pribadi Sertifikat**, masukkan kunci pribadi sertifikat berformat PEM Anda. Berikut ini menunjukkan contoh singkat dari kunci tersebut. 

      ```
      -----BEGIN RSA PRIVATE KEY-----
      EXAMPLEBAAKCAQEA2Qb3LDHD7StY7Wj6U2/opV6Xu37qUCCkeDWhwpZMYJ9/nETO
      ...
      1qGvJ3u04vdnzaYN5WoyN5LFckrlA71+CszD1CGSqbVDWEXAMPLE
      -----END RSA PRIVATE KEY-----
      ```

   1. Untuk **rantai Sertifikat**, masukkan sertifikat perantara berformat PEM dan, secara opsional, sertifikat root, satu demi satu tanpa baris kosong. Jika Anda menyertakan sertifikat root, rantai sertifikat Anda harus dimulai dengan sertifikat perantara dan diakhiri dengan sertifikat root. Gunakan sertifikat perantara yang disediakan oleh otoritas sertifikat Anda. Jangan sertakan perantara yang tidak berada dalam jalur rantai kepercayaan. Berikut ini menunjukkan contoh singkat. 

      ```
      -----BEGIN CERTIFICATE-----
      EXAMPLECA4ugAwIBAgIQWrYdrB5NogYUx1U9Pamy3DANBgkqhkiG9w0BAQUFADCB
      ...
      8/ifBlIK3se2e4/hEfcEejX/arxbx1BJCHBvlEPNnsdw8EXAMPLE
      -----END CERTIFICATE-----
      ```

      Berikut adalah contoh lain.

      ```
      -----BEGIN CERTIFICATE-----
      Intermediate certificate 2
      -----END CERTIFICATE-----
      -----BEGIN CERTIFICATE-----
      Intermediate certificate 1
      -----END CERTIFICATE-----
      -----BEGIN CERTIFICATE-----
      Optional: Root certificate
      -----END CERTIFICATE-----
      ```

   1. Pilih **Berikutnya**, lalu pilih **Berikutnya**.

------

Setelah sertifikat berhasil dibuat atau diimpor, catat sertifikat ARN. Anda membutuhkannya saat menyiapkan nama domain khusus.

# Siapkan nama domain kustom Regional di API Gateway
<a name="apigateway-regional-api-custom-domain-create"></a>

Gunakan nama domain kustom Regional untuk membuat URL dasar API yang mudah digunakan. Dengan nama domain kustom Regional, Anda dapat memetakan tahap HTTP dan REST API ke nama domain kustom yang sama dan menggunakan otentikasi TLS bersama. 

## Pertimbangan-pertimbangan
<a name="regional-custom-domain-names"></a>

Berikut ini adalah pertimbangan untuk nama domain kustom Regional Anda:
+ Anda harus memberikan sertifikat ACM khusus Wilayah. Sertifikat ini harus berada di Wilayah yang sama dengan API Anda. Untuk informasi selengkapnya tentang membuat atau mengunggah sertifikat nama domain kustom, lihat[Siapkan sertifikat AWS Certificate Manager](how-to-specify-certificate-for-custom-domain-name.md).
+ Saat Anda membuat nama domain kustom Regional (atau memigrasikan satu) dengan sertifikat ACM, API Gateway akan membuat peran terkait layanan di akun Anda. Peran terkait layanan diperlukan untuk melampirkan sertifikat ACM Anda ke titik akhir Regional Anda. Peran tersebut diberi nama **AWSServiceRoleForAPIGateway**dan akan memiliki kebijakan **APIGatewayServiceRolePolicy**terkelola yang melekat padanya. Untuk informasi selengkapnya tentang penggunaan peran terkait layanan, lihat [Menggunakan Peran Tertaut Layanan](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html).
+ Setelah Anda membuat nama domain kustom Regional Anda, Anda harus membuat catatan DNS untuk mengarahkan nama domain kustom ke domain Regional. Hal ini memungkinkan lalu lintas yang terikat pada nama domain kustom untuk dirutekan ke nama host Regional API.

  Catatan DNS dapat berupa catatan CNAME atau A Alias. Jika Anda menggunakan Route 53 sebagai penyedia DNS Anda, buat catatan Alias A. Jika Anda menggunakan penyedia DNS pihak ketiga, gunakan catatan CNAME. Jika Anda menggunakan catatan CNAME dan membuat titik akhir VPC antarmuka API Gateway dengan DNS pribadi diaktifkan untuk API pribadi, Anda tidak dapat menyelesaikan nama domain kustom dalam VPC yang menghosting API pribadi Anda. 

## Buat nama domain kustom Regional
<a name="apigateway-regional-api-custom-domain-create-procedure"></a>

Prosedur berikut menunjukkan cara membuat nama domain kustom Regional. Setelah menyelesaikan prosedur ini, Anda membuat aturan perutean untuk merutekan tahapan API Anda ke nama domain kustom Anda.

------
#### [ Konsol Manajemen AWS ]

1. Masuk ke konsol API Gateway di [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Pilih **Nama domain khusus** dari panel navigasi utama. 

1. Pilih **Buat**.

1. Untuk **nama Domain**, masukkan nama domain.

1. Untuk **mode Routing**, pilih **Routing rules only**.

   Dalam mode routing ini, Anda hanya dapat mengirim lalu lintas dari nama domain kustom Anda ke Anda APIs dengan menggunakan aturan routing. Untuk informasi selengkapnya, lihat [Kirim lalu lintas ke Anda APIs melalui nama domain kustom Anda di API Gateway](rest-api-routing-mode.md).

1. Untuk **versi TLS Minimum**, pilih versi.

1. **Di bawah **Konfigurasi titik akhir**, untuk **jenis titik akhir API**, pilih Regional.**

1. Pilih sertifikat ACM. Sertifikat harus berada di Wilayah yang sama dengan API.

1. Pilih **Buat**.

------
#### [ AWS CLI ]

[create-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-domain-name.html)Perintah berikut membuat nama domain kustom:

```
aws apigatewayv2 create-domain-name \ 
    --domain-name 'regional.example.com' \
    --domain-name-configurations CertificateArn=arn:aws:acm:us-west-2:123456789012:certificate/123456789012-1234-1234-1234-12345678 \
    --routing-mode ROUTING_RULE_ONLY
```

Outputnya akan terlihat seperti berikut:

```
{
    "ApiMappingSelectionExpression": "$request.basepath",
    "DomainName": "regional.example.com",
    "DomainNameConfigurations": [
        {
            "ApiGatewayDomainName": "d-numh1z56v6.execute-api.us-west-2.amazonaws.com",
            "CertificateArn": "arn:aws:acm:us-west-2:123456789012:certificate/123456789012-1234-1234-1234-12345678",
            "DomainNameStatus": "AVAILABLE",
            "EndpointType": "REGIONAL",
            "HostedZoneId": "Z2OJLYMUO9EFXC",
            "SecurityPolicy": "TLS_1_2"
        }
        "RoutingMode": "ROUTING_RULE_ONLY"
    ]
}
```

Nilai `DomainNameConfigurations` properti mengembalikan nama host API Regional. Anda harus membuat catatan DNS untuk mengarahkan nama domain kustom Anda ke nama domain Regional ini. Ini memungkinkan lalu lintas yang terikat pada nama domain kustom untuk dirutekan ke nama host API Regional ini.

------

## Buat aturan perutean untuk nama domain kustom Regional Anda
<a name="apigateway-regional-api-custom-domain-base-path-mapping"></a>

Setelah Anda membuat nama domain kustom Anda, Anda mengonfigurasi bagaimana lalu lintas dirutekan dari nama domain khusus Anda ke nama domain Anda APIs. Karena Anda mengatur mode perutean`ROUTING_RULE_ONLY`, Anda menggunakan aturan perutean untuk merutekan permintaan masuk ke nama domain kustom Anda ke nama domain Anda. APIs

Dalam contoh ini, Anda membuat aturan catch-all yang merutekan semua permintaan masuk ke nama domain kustom Anda ke satu tahap API Anda. Anda juga dapat mengonfigurasi aturan perutean berdasarkan kondisi header dan jalur yang berbeda. Untuk informasi selengkapnya, lihat [Aturan perutean untuk menghubungkan tahapan API ke nama domain khusus untuk REST APIs](rest-api-routing-rules.md).

------
#### [ Konsol Manajemen AWS ]

1. Masuk ke konsol API Gateway di [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Pilih nama domain khusus.

1. Pada tab **Routing details**, pilih **Add routing rule.**

1. Pilih **Tambahkan kondisi baru** untuk menambahkan kondisi baru.

1. Pertahankan aturan ini tanpa syarat apa pun. Ini merutekan semua permintaan ke nama domain kustom Anda ke API target dan tahap target Anda.

1. Untuk **Action**, gunakan dropdown untuk memilih API target dan tahap target Anda.

1. Pilih **Berikutnya**.

1. Di bidang prioritas, masukkan**100**.

   API Gateway mengevaluasi aturan dalam urutan prioritas, dari nilai terendah hingga nilai tertinggi. Karena ini adalah aturan catch-all, Anda menggunakan prioritas tinggi sehingga API Gateway dapat mencocokkan aturan tambahan apa pun yang Anda buat terlebih dahulu.

1. Pilih **Buat aturan perutean**.

------
#### [ AWS CLI ]

`create-routing-rule`Perintah berikut membuat aturan perutean catch-all:

```
aws apigatewayv2 create-routing-rule \
  --domain-name 'regional.example.com' \
  --priority 100 \
  --conditions  \
  --actions '[{
    "InvokeApi": {
      "ApiId": "a1b2c3",
      "Stage": "prod"
    }
  }]'
```

------

Anda dapat mengubah mode perutean dan membuat aturan baru kapan saja. Untuk informasi selengkapnya, lihat [Kirim lalu lintas ke Anda APIs melalui nama domain kustom Anda di API Gateway](rest-api-routing-mode.md).

## Buat catatan DNS untuk nama domain kustom Regional Anda
<a name="apigateway-regional-api-custom-domain-dns-record"></a>

Setelah Anda membuat nama domain kustom dan membuat pemetaan jalur dasar, Anda membuat catatan DNS untuk mengarahkan nama domain kustom Anda nama domain Regional yang baru dibuat.

------
#### [ Konsol Manajemen AWS ]

Untuk menggunakan Konsol Manajemen AWS, ikuti dokumentasi Route 53 tentang [mengonfigurasi Route 53 untuk merutekan lalu lintas ke API Gateway](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-api-gateway.html).

------
#### [ AWS CLI ]

Untuk mengonfigurasi catatan DNS Anda untuk memetakan nama domain kustom Regional ke nama hostnya dari ID zona host yang diberikan, pertama-tama buat file JSON yang berisi konfigurasi untuk menyiapkan catatan DNS untuk nama domain Regional. 

Berikut ini `setup-dns-record.json` menunjukkan cara membuat `A` catatan DNS untuk memetakan nama domain kustom Regional (`regional.example.com`) ke nama host Regional (`d-numh1z56v6.execute-api.us-west-2.amazonaws.com`) yang disediakan sebagai bagian dari pembuatan nama domain kustom. `HostedZoneId`Properti `DNSName` dan `AliasTarget` dapat mengambil `regionalHostedZoneId` nilai `regionalDomainName` dan, masing-masing, dari nama domain kustom. Anda juga bisa mendapatkan Regional Route 53 Hosted Zone IDs di [Amazon API Gateway Endpoints dan Quotas](https://docs.aws.amazon.com/general/latest/gr/apigateway.html).

```
{
  "Changes": [
    {
      "Action": "CREATE",
      "ResourceRecordSet": {
        "Name": "regional.example.com",
        "Type": "A",
        "AliasTarget": {
          "DNSName": "d-numh1z56v6.execute-api.us-west-2.amazonaws.com",
          "HostedZoneId": "Z2OJLYMUO9EFXC",
          "EvaluateTargetHealth": false
        }
      }
    }
  ]
}
```

Berikut ini [change-resource-record-sets](https://docs.aws.amazon.com/cli/latest/reference/route53/change-resource-record-sets.html)membuat catatan DNS untuk nama domain kustom Regional Anda:

```
aws route53 change-resource-record-sets \
    --hosted-zone-id Z2OJLYMUO9EFXC \
    --change-batch file://path/to/your/setup-dns-record.json
```

Ganti `hosted-zone-id` dengan ID Zona Dihosting Route 53 dari catatan DNS yang ditetapkan di akun Anda. Nilai `change-batch` parameter menunjuk ke file JSON (*setup-dns-record.json*) dalam folder (*path/to/your*).

------

# Siapkan nama domain kustom yang dioptimalkan tepi di API Gateway
<a name="how-to-edge-optimized-custom-domain-name"></a>

Saat Anda membuat nama domain khusus untuk API yang dioptimalkan tepi, API Gateway menyiapkan CloudFront distribusi dan catatan DNS untuk memetakan nama domain API ke nama domain CloudFront distribusi. Permintaan untuk API kemudian dirutekan ke API Gateway melalui distribusi yang dipetakan CloudFront . Pemetaan ini untuk permintaan API yang terikat untuk nama domain kustom yang akan dirutekan ke API Gateway melalui distribusi yang CloudFront dipetakan.

## Pertimbangan-pertimbangan
<a name="how-to-edge-optimized-custom-domain-name-considerations"></a>

Berikut ini adalah pertimbangan untuk nama domain kustom yang dioptimalkan tepi Anda:
+  Untuk menyiapkan nama domain kustom yang dioptimalkan tepi atau memperbarui sertifikatnya, Anda harus memiliki izin untuk memperbarui CloudFront distribusi.

  Izin berikut diperlukan untuk memperbarui CloudFront distribusi: 

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
           {
              "Sid": "AllowCloudFrontUpdateDistribution",
              "Effect": "Allow",
              "Action": [
                  "cloudfront:updateDistribution"
              ],
              "Resource": [
                  "*"
              ]
          }
      ]
  }
  ```

------
+ Anda harus meminta atau mengimpor sertifikat untuk nama domain kustom yang dioptimalkan tepi Anda di Wilayah AS Timur (Virginia N.). `us-east-1`
+  CloudFront Distribusi yang dibuat oleh API Gateway dimiliki oleh akun khusus Wilayah yang berafiliasi dengan API Gateway. Saat melacak operasi untuk membuat dan memperbarui CloudFront distribusi seperti itu CloudTrail, Anda harus menggunakan ID akun API Gateway ini. Untuk informasi selengkapnya, lihat [Log pembuatan nama domain kustom di CloudTrail](#how-to-custom-domain-log-cloudfront-distribution-update-in-cloudtrail).
+  API Gateway mendukung nama domain kustom yang dioptimalkan tepi dengan memanfaatkan Server Name Indication (SNI) pada distribusi. CloudFront Untuk informasi selengkapnya tentang penggunaan nama domain khusus pada CloudFront distribusi, termasuk format sertifikat yang diperlukan dan ukuran maksimum panjang kunci sertifikat, lihat [Menggunakan Nama Domain Alternatif dan HTTPS](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https-alternate-domain-names.html) di *Panduan CloudFront Pengembang Amazon*
+ Nama domain kustom yang dioptimalkan tepi membutuhkan waktu sekitar 40 menit untuk siap.
+ Setelah membuat nama domain kustom yang dioptimalkan tepi, Anda harus membuat catatan DNS untuk memetakan nama domain kustom ke nama distribusi. CloudFront 

## Buat nama domain kustom yang dioptimalkan tepi
<a name="how-to-custom-domains-console"></a>

Prosedur berikut menjelaskan cara membuat nama domain kustom yang dioptimalkan tepi untuk API.

------
#### [ Konsol Manajemen AWS ]

1. Masuk ke konsol API Gateway di [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Pilih **Nama domain khusus** dari panel navigasi utama. 

1. Pilih **Tambahkan nama domain**.

1. Untuk **nama Domain**, masukkan nama domain.

1. Untuk **mode Routing**, pilih **API\$1MAPPING\$1ONLY**.

1. Untuk **jenis endpoint API**, pilih **Edge-optimized**.

1. Pilih versi TLS minimum.

1. Pilih sertifikat ACM.

1. Pilih **Tambahkan nama domain**.

------
#### [ REST API ]

1. Panggil [domainname:create](https://docs.aws.amazon.com/apigateway/latest/api/API_CreateDomainName.html), tentukan nama domain kustom dan ARN dari sertifikat yang disimpan di. AWS Certificate Manager

    Panggilan API yang berhasil mengembalikan `201 Created` respons yang berisi ARN sertifikat serta nama CloudFront distribusi terkait dalam muatannya.

1. Perhatikan nama domain CloudFront distribusi yang ditunjukkan pada output. Anda memerlukannya di langkah berikutnya untuk mengatur target alias A-record domain kustom di DNS Anda.

Untuk contoh kode panggilan REST API ini, lihat [domainname:create](https://docs.aws.amazon.com/apigateway/latest/api/API_CreateDomainName.html).

------

Nama domain khusus yang dioptimalkan tepi membutuhkan waktu sekitar 40 menit untuk siap, tetapi konsol segera menampilkan nama domain CloudFront distribusi terkait, dalam bentuk`distribution-id.cloudfront.net`, bersama dengan sertifikat ARN. Sementara itu, Anda dapat membuat pemetaan jalur dasar atau aturan perutean dan kemudian mengonfigurasi alias catatan DNS untuk memetakan nama domain kustom ke nama domain distribusi terkait. CloudFront 

## Konfigurasikan pemetaan jalur dasar API dengan nama domain khusus sebagai nama hostnya
<a name="how-to-custom-domains-mapping-console"></a>

Karena Anda mengatur mode perutean`API_MAPPING_ONLY`, Anda dapat menggunakan pemetaan jalur dasar untuk menggunakan satu nama domain kustom sebagai nama host dari beberapa. APIs Ini membuat API dapat diakses melalui kombinasi nama domain khusus dan jalur dasar terkait.

Misalnya, jika di API Gateway, Anda membuat API bernama `PetStore` dan API lain bernama `Dogs` lalu menyiapkan nama domain kustom`api.example.com`, Anda dapat mengatur URL `PetStore` API sebagai`https://api.example.com`.

Ini mengaitkan `PetStore` API dengan jalur dasar string kosong. Jika Anda menetapkan URL `PetStore` API sebagai`https://api.example.com/PetStore`, ini mengaitkan `PetStore` API dengan jalur dasar. `PetStore` Anda dapat menetapkan jalur dasar `MyDogList` untuk `Dogs` API. URL kemudian `https://api.example.com/MyDogList` adalah URL root dari `Dogs` API.

Untuk mengonfigurasi pemetaan API di beberapa level, Anda hanya dapat menggunakan nama domain kustom Regional. Nama domain kustom yang dioptimalkan tepi tidak didukung. Untuk informasi selengkapnya, lihat [Gunakan pemetaan API untuk menghubungkan tahapan API ke nama domain khusus untuk REST APIs](rest-api-mappings.md).

Prosedur berikut menyiapkan pemetaan API untuk memetakan jalur dari nama domain kustom Anda ke tahapan API Anda.

------
#### [ Konsol Manajemen AWS ]

1. Masuk ke konsol API Gateway di [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Pilih **Nama domain khusus** dari panel navigasi utama konsol API Gateway.

1. Pilih nama domain khusus.

1. Pilih **Konfigurasi pemetaan API**.

1. Pilih **Tambahkan pemetaan baru**.

1. Tentukan **API**, **Stage**, dan **Path** (opsional) untuk pemetaan.

1. Pilih **Simpan**.

------
#### [ REST API ]

 Panggil [basepathmapping:create](https://docs.aws.amazon.com/apigateway/latest/api/API_CreateBasePathMapping.html) pada nama domain kustom tertentu, tentukan properti`restApiId`, dan deployment dalam `basePath` payload permintaan. `stage`

 Panggilan API yang berhasil mengembalikan `201 Created` respons.

Untuk contoh kode panggilan REST API, lihat [basepathmapping:create](https://docs.aws.amazon.com/apigateway/latest/api/API_CreateBasePathMapping.html).

------

Untuk fleksibilitas lebih lanjut tentang cara Anda merutekan lalu lintas ke Anda APIs, Anda dapat mengubah mode perutean ke `ROUTING_RULE_ONLY` atau `ROUTING_RULE_THEN_API_MAPPING` dan membuat aturan perutean. Untuk informasi selengkapnya, lihat [Kirim lalu lintas ke Anda APIs melalui nama domain kustom Anda di API Gateway](rest-api-routing-mode.md).

## Buat catatan DNS untuk nama domain kustom yang dioptimalkan tepi
<a name="how-to-edge-optimized-custom-domain-name-dns-record"></a>

Setelah Anda memulai pembuatan nama domain kustom yang dioptimalkan tepi, siapkan alias catatan DNS.

Kami menyarankan Anda menggunakan Route 53 untuk membuat alias A-record untuk nama domain kustom Anda dan menentukan nama domain CloudFront distribusi sebagai target alias. Ini berarti bahwa Route 53 dapat merutekan nama domain kustom Anda meskipun itu adalah puncak zona. Untuk informasi selengkapnya, lihat [Memilih Antara Kumpulan Rekaman Sumber Daya Alias dan Non-Alias di Panduan Pengembang](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-choosing-alias-non-alias.html) *Amazon Route 53*.

 Untuk petunjuk tentang Amazon Route 53, lihat [Merutekan lalu lintas ke API Amazon API Gateway dengan menggunakan nama domain Anda](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-api-gateway.html) di *Panduan Pengembang Amazon Route 53*.

## Log pembuatan nama domain kustom di CloudTrail
<a name="how-to-custom-domain-log-cloudfront-distribution-update-in-cloudtrail"></a>

Saat CloudTrail diaktifkan untuk mencatat panggilan API Gateway yang dilakukan oleh akun Anda, API Gateway mencatat pembaruan CloudFront distribusi terkait saat nama domain khusus dibuat atau diperbarui untuk API. Log ini tersedia di`us-east-1`. Karena CloudFront distribusi ini dimiliki oleh API Gateway, masing-masing CloudFront distribusi yang dilaporkan diidentifikasi oleh salah satu akun API Gateway khusus Wilayah berikut, bukan ID IDs akun pemilik API. 


| **Wilayah** | **ID Akun** | 
| --- | --- | 
| us-east-1 | 392220576650 | 
| us-east-2 | 718770453195 | 
| us-west-1 | 968246515281 | 
| us-west-2 | 109351309407 | 
| ca-central-1 | 796887884028 | 
| eu-west-1 | 631144002099 | 
| eu-west-2 | 544388816663 | 
| eu-west-3 | 061510835048 | 
| eu-central-1 | 474240146802 | 
| eu-central-2 | 166639821150 | 
| eu-north-1 | 394634713161 | 
| eu-south-1 | 753362059629 | 
| eu-south-2 | 359345898052 | 
| ap-northeast-1 | 969236854626 | 
| ap-northeast-2 | 020402002396 | 
| ap-northeast-3 | 360671645888 | 
| ap-southeast-1 | 195145609632 | 
| ap-southeast-2 | 798376113853 | 
| ap-southeast-3 | 652364314486 | 
| ap-southeast-4 | 849137399833 | 
| ap-south-1 | 507069717855 | 
| ap-south-2 | 644042651268 | 
| ap-east-1 | 174803364771 | 
| sa-east-1 | 287228555773 | 
| me-south-1 | 855739686837 | 
| me-central-1 | 614065512851 | 

## Putar sertifikat yang diimpor ke ACM
<a name="how-to-rotate-custom-domain-certificate"></a>

 ACM secara otomatis menangani pembaruan sertifikat yang dikeluarkannya. Anda tidak perlu memutar sertifikat yang dikeluarkan ACM untuk nama domain kustom Anda. CloudFront menanganinya atas nama Anda. 

 Namun, jika Anda mengimpor sertifikat ke ACM dan menggunakannya untuk nama domain khusus, Anda harus memutar sertifikat sebelum kedaluwarsa. Ini melibatkan mengimpor sertifikat pihak ketiga baru untuk nama domain dan memutar sertifikat yang ada ke yang baru. Anda perlu mengulangi proses ketika sertifikat yang baru diimpor kedaluwarsa. Atau, Anda dapat meminta ACM untuk mengeluarkan sertifikat baru untuk nama domain dan memutar yang sudah ada ke sertifikat baru yang dikeluarkan ACM. Setelah itu, Anda dapat meninggalkan ACM dan CloudFront menangani rotasi sertifikat untuk Anda secara otomatis. Untuk membuat atau mengimpor sertifikat ACM baru, ikuti langkah-langkahnya. [Untuk membuat atau mengimpor SSL/TLS sertifikat ke ACM](how-to-specify-certificate-for-custom-domain-name.md#how-to-specify-certificate-for-custom-domain-name-setup)

Prosedur berikut menjelaskan cara memutar sertifikat untuk nama domain.

**catatan**  
Dibutuhkan sekitar 40 menit untuk memutar sertifikat yang diimpor ke ACM.

------
#### [ Konsol Manajemen AWS ]

1. Meminta atau mengimpor sertifikat di ACM.

1. Masuk ke konsol API Gateway di [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Pilih **Nama domain khusus** dari panel navigasi utama konsol API Gateway.

1. Pilih nama domain kustom yang dioptimalkan tepi.

1. Untuk **konfigurasi Endpoint**, pilih **Edit**.

1. Untuk sertifikat **ACM, pilih sertifikat** dari daftar dropdown.

1. Pilih **Simpan perubahan** untuk mulai memutar sertifikat untuk nama domain kustom. 

------
#### [ REST API ]

 Panggil [domainname:update action](https://docs.aws.amazon.com/apigateway/latest/api/API_UpdateDomainName.html), yang menentukan ARN dari sertifikat ACM baru untuk nama domain yang ditentukan. 

------
#### [ AWS CLI ]

 Berikut ini [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)memperbarui sertifikat ACM untuk nama domain yang dioptimalkan tepi.

```
aws apigateway update-domain-name \
    --domain-name edge.example.com \
    --patch-operations "op='replace',path='/certificateArn',value='arn:aws:acm:us-east-2:111122223333:certificate/CERTEXAMPLE123EXAMPLE'"
```

 Berikut ini [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)memperbarui sertifikat ACM untuk nama domain Regional.

```
aws apigateway update-domain-name \
    --domain-name regional.example.com \
    --patch-operations "op='replace',path='/regionalCertificateArn',value='arn:aws:acm:us-east-2:111122223333:certificate/CERTEXAMPLE123EXAMPLE'"
```

------

## Panggil API Anda dengan nama domain khusus saat Anda menggunakan pemetaan jalur dasar
<a name="how-to-custom-domains-call-api-with-sni"></a>

Memanggil API dengan nama domain khusus sama dengan memanggil API dengan nama domain defaultnya, asalkan URL yang benar digunakan.

Contoh berikut membandingkan dan membedakan satu set default URLs dan kustom yang sesuai URLs dari dua APIs (`udxjef`dan`qf3duz`) di Region tertentu (`us-east-1`), dan nama domain kustom yang diberikan (`api.example.com`).


| ID API | Stage | URL default | Jalur dasar | URL kustom | 
| --- | --- | --- | --- | --- | 
| udxjef | prod | https://udxjef.execute-api.us-east-1.amazonaws.com/prod | /toko hewan peliharaan | https://api.example.com/toko hewan peliharaan | 
| udxjef | tst | https://udxjef.execute-api.us-east-1.amazonaws.com/tst | /petdepot | https://api.example.com/petdepot | 
| qf3duz | dev | https://qf3duz.execute-api.us-east-1.amazonaws.com/dev | /toko buku | https://api.example.com/toko buku | 
| qf3duz | tst | https://qf3duz.execute-api.us-east-1.amazonaws.com/tst | /rak buku | https://api.example.com/rak buku | 

Untuk fleksibilitas lebih lanjut tentang cara Anda mengarahkan lalu lintas ke Anda APIs, Anda dapat membuat aturan perutean. Untuk informasi selengkapnya, lihat [Kirim lalu lintas ke Anda APIs melalui nama domain kustom Anda di API Gateway](rest-api-routing-mode.md).

 API Gateway mendukung nama domain kustom untuk API dengan menggunakan [Server Name Indication (SNI)](https://en.wikipedia.org/wiki/Server_Name_Indication). Anda dapat memanggil API dengan nama domain khusus menggunakan browser atau pustaka klien yang mendukung SNI. 

 API Gateway memberlakukan SNI pada distribusi. CloudFront Untuk informasi tentang cara CloudFront menggunakan nama domain kustom, lihat [Amazon CloudFront Custom SSL](https://aws.amazon.com/cloudfront/custom-ssl-domains/). 

# Memigrasikan nama domain kustom ke jenis endpoint API yang berbeda di API Gateway
<a name="apigateway-regional-api-custom-domain-migrate"></a>

 Anda dapat memigrasikan nama domain kustom antara titik akhir yang dioptimalkan tepi dan Regional. Anda tidak dapat memigrasikan nama domain kustom publik ke nama domain kustom pribadi. Pertama-tama Anda menambahkan jenis konfigurasi titik akhir baru ke `endpointConfiguration.types` daftar yang ada untuk nama domain kustom. Selanjutnya, Anda menyiapkan data DNS untuk mengarahkan nama domain kustom ke titik akhir yang baru disediakan. Terakhir, Anda menghapus titik akhir nama domain kustom yang sudah usang.

## Pertimbangan-pertimbangan
<a name="apigateway-regional-api-custom-domain-migration-considerations"></a>

Berikut ini adalah pertimbangan untuk memigrasikan domain kustom Anda antara titik akhir API Regional dan titik akhir API yang dioptimalkan tepi:
+ Nama domain kustom yang dioptimalkan tepi memerlukan sertifikat yang disediakan oleh ACM dari Wilayah AS Timur (Virginia N.). `us-east-1` Sertifikat ini didistribusikan ke semua lokasi geografis.
+ Nama domain kustom Regional memerlukan sertifikat yang disediakan oleh ACM di Wilayah yang sama yang menghosting API. Anda dapat memigrasikan nama domain kustom yang dioptimalkan tepi yang tidak ada di `us-east-1` Wilayah ke nama domain kustom Regional dengan meminta sertifikat ACM baru dari Wilayah yang lokal ke API.
+ Mungkin diperlukan waktu hingga 60 detik untuk menyelesaikan migrasi antara nama domain kustom yang dioptimalkan tepi dan nama domain kustom Regional. Waktu migrasi juga tergantung pada saat Anda memperbarui catatan DNS Anda.
+ Anda hanya dapat menambahkan konfigurasi titik akhir tambahan jika mode akses titik akhir diatur ke. `BASIC` Setelah Anda memiliki dua konfigurasi titik akhir, Anda tidak dapat mengubah mode akses titik akhir. Untuk informasi selengkapnya, lihat [Mode akses titik akhir](apigateway-security-policies.md#apigateway-security-policies-endpoint-access-mode).
+ Jika nama domain kustom Anda menggunakan kebijakan keamanan yang dimulai dengan`SecurityPolicy_`, ketika Anda menambahkan jenis konfigurasi titik akhir baru, mode akses titik akhir akan sama di kedua jenis titik akhir, dan Anda harus memilih kebijakan keamanan yang dimulai dengan `SecurityPolicy_` untuk jenis konfigurasi titik akhir yang baru.

## Migrasi nama domain kustom
<a name="apigateway-api-custom-domain-names-migrate-procedure"></a>

**catatan**  
Untuk menyelesaikan migrasi, pastikan Anda menghapus titik akhir usang dari nama domain kustom Anda.

Prosedur berikut menunjukkan cara memigrasikan nama domain kustom yang dioptimalkan tepi ke nama domain kustom Regional.

------
#### [ Konsol Manajemen AWS ]

1. Masuk ke konsol API Gateway di [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Pilih **Nama domain khusus** dari panel navigasi utama. 

1. Pilih nama domain kustom yang dioptimalkan tepi.

1. Untuk **konfigurasi Endpoint**, pilih **Edit**.

1. Pilih **Tambahkan titik akhir Regional**.

1. Untuk **sertifikat ACM**, pilih sertifikat.

   Sertifikat Regional harus berada di Wilayah yang sama dengan API Regional.

1. Pilih **Simpan perubahan**.

1. Siapkan data DNS untuk mengarahkan nama domain kustom Regional ke nama host Regional ini. Untuk informasi selengkapnya, lihat [mengonfigurasi Route 53 untuk merutekan lalu lintas ke API Gateway](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-api-gateway.html).

1. Setelah mengonfirmasi bahwa konfigurasi DNS Anda menggunakan titik akhir yang benar, Anda menghapus konfigurasi titik akhir yang dioptimalkan tepi. **Pilih nama domain kustom Anda, lalu untuk **konfigurasi titik akhir yang dioptimalkan di tepi**, pilih Hapus.**

1. Konfirmasikan pilihan Anda dan hapus titik akhir.

------
#### [ AWS CLI ]

[update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)Perintah berikut memigrasikan nama domain kustom edge-optmized ke nama domain kustom Regional:

```
aws apigateway update-domain-name \
    --domain-name 'api.example.com' \
    --patch-operations  '[ 
        { "op":"add", "path": "/endpointConfiguration/types","value": "REGIONAL" },
        { "op":"add", "path": "/regionalCertificateArn", "value": "arn:aws:acm:us-west-2:123456789012:certificate/cd833b28-58d2-407e-83e9-dce3fd852149" }
      ]'
```

Sertifikat Regional harus dari Wilayah yang sama dengan API Regional. 

Outputnya akan terlihat seperti berikut:

```
{
    "certificateArn": "arn:aws:acm:us-east-1:123456789012:certificate/34a95aa1-77fa-427c-aa07-3a88bd9f3c0a",
    "certificateName": "edge-cert",
    "certificateUploadDate": "2017-10-16T23:22:57Z",
    "distributionDomainName": "d1frvgze7vy1bf.cloudfront.net",
    "domainName": "api.example.com",
    "endpointConfiguration": {
        "types": [
            "EDGE",
            "REGIONAL"
        ]
    },
    "regionalCertificateArn": "arn:aws:acm:us-west-2:123456789012:certificate/cd833b28-58d2-407e-83e9-dce3fd852149",
    "regionalDomainName": "d-fdisjghyn6.execute-api.us-west-2.amazonaws.com"
}
```

Untuk nama domain kustom Regional yang dimigrasi, `regionalDomainName` properti yang dihasilkan menampilkan nama host API Regional. Anda harus menyiapkan catatan DNS untuk mengarahkan nama domain kustom Regional ke nama host Regional ini. Hal ini memungkinkan lalu lintas yang terikat pada nama domain kustom untuk diarahkan ke host Regional. 

Setelah catatan DNS disetel, Anda dapat menghapus nama domain kustom yang dioptimalkan tepi. [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)Perintah berikut menghapus nama domain kustom yang dioptimalkan tepi:

```
aws apigateway update-domain-name \
    --domain-name api.example.com \
    --patch-operations '[
            {"op":"remove", "path":"/endpointConfiguration/types", "value":"EDGE"},
            {"op":"remove", "path":"certificateName"},
            {"op":"remove", "path":"certificateArn"}
        ]'
```

------

Prosedur berikut menunjukkan cara memigrasikan nama domain kustom yang dioptimalkan tepi yang menggunakan kebijakan keamanan yang disempurnakan ke nama domain kustom Regional yang juga menggunakan kebijakan keamanan yang ditingkatkan.

------
#### [ Konsol Manajemen AWS ]

1. Masuk ke konsol API Gateway di [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Pilih **Nama domain khusus** dari panel navigasi utama. 

1. Pilih nama domain kustom yang dioptimalkan tepi.

1. Untuk **konfigurasi Endpoint**, pilih **Edit**.

1. Pilih **Tambahkan titik akhir Regional**.

1. Untuk **sertifikat ACM**, pilih sertifikat.

   Sertifikat Regional harus berada di Wilayah yang sama dengan API Regional.

1. Untuk **kebijakan Keamanan**, pilih kebijakan keamanan yang dimulai dengan`SecurityPolicy_`.

1. Untuk **mode akses Endpoint**, pilih **Basic**.

1. Pilih **Simpan perubahan**.

1. Siapkan data DNS untuk mengarahkan nama domain kustom Regional ke nama host Regional ini. Untuk informasi selengkapnya, lihat [mengonfigurasi Route 53 untuk merutekan lalu lintas ke API Gateway](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-api-gateway.html).

1. Setelah mengonfirmasi bahwa konfigurasi DNS Anda menggunakan titik akhir yang benar, Anda menghapus konfigurasi titik akhir yang dioptimalkan tepi. **Pilih nama domain kustom Anda, lalu untuk **konfigurasi titik akhir yang dioptimalkan di tepi**, pilih Hapus.**

1. Konfirmasikan pilihan Anda dan hapus titik akhir.

------
#### [ AWS CLI ]

[update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)Perintah berikut memigrasikan nama domain kustom edge-optmized ke nama domain kustom Regional:

```
aws apigateway update-domain-name \
    --domain-name 'api.example.com' \
    --patch-operations  '[ 
        { "op":"add", "path": "/endpointConfiguration/types","value": "REGIONAL" },
        { "op":"replace", "path": "/securityPolicy", "value":"SecurityPolicy_TLS13_1_3_2025_09"},
        { "op":"add", "path": "/regionalCertificateArn", "value": "arn:aws:acm:us-west-2:123456789012:certificate/cd833b28-58d2-407e-83e9-dce3fd852149" }
      ]'
```

Sertifikat Regional harus dari Wilayah yang sama dengan API Regional. 

Outputnya akan terlihat seperti berikut:

```
{
    "certificateArn": "arn:aws:acm:us-east-1:123456789012:certificate/34a95aa1-77fa-427c-aa07-3a88bd9f3c0a",
    "certificateName": "edge-cert",
    "certificateUploadDate": "2017-10-16T23:22:57Z",
    "distributionDomainName": "d1frvgze7vy1bf.cloudfront.net",
    "domainName": "api.example.com",
    "endpointConfiguration": {
        "types": [
            "EDGE",
            "REGIONAL"
        ]
    },
    "securityPolicy": "SecurityPolicy_TLS13_1_3_2025_09",
    "endpointAccessMode": "BASIC",
    "regionalCertificateArn": "arn:aws:acm:us-west-2:123456789012:certificate/cd833b28-58d2-407e-83e9-dce3fd852149",
    "regionalDomainName": "d-fdisjghyn6.execute-api.us-west-2.amazonaws.com"
}
```

Untuk nama domain kustom Regional yang dimigrasi, `regionalDomainName` properti yang dihasilkan menampilkan nama host API Regional. Anda harus menyiapkan catatan DNS untuk mengarahkan nama domain kustom Regional ke nama host Regional ini. Hal ini memungkinkan lalu lintas yang terikat pada nama domain kustom untuk diarahkan ke host Regional. 

Setelah catatan DNS disetel, Anda dapat menghapus nama domain kustom yang dioptimalkan tepi. [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)Perintah berikut menghapus nama domain kustom yang dioptimalkan tepi:

```
aws apigateway update-domain-name \
    --domain-name api.example.com \
    --patch-operations '[
            {"op":"remove", "path":"/endpointConfiguration/types", "value":"EDGE"},
            {"op":"remove", "path":"certificateName"},
            {"op":"remove", "path":"certificateArn"}
        ]'
```

------

Prosedur berikut menunjukkan cara memigrasikan nama domain kustom Regional ke nama domain kustom yang dioptimalkan tepi.

------
#### [ Konsol Manajemen AWS ]

1. Masuk ke konsol API Gateway di [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Di panel navigasi utama, pilih **Nama domain khusus**.

1. Pilih nama domain kustom Regional.

1. Untuk **konfigurasi Endpoint**, pilih **Edit**.

1. Pilih **Tambahkan titik akhir yang dioptimalkan tepi**.

1. Untuk **sertifikat ACM**, pilih sertifikat.

    Sertifikat domain yang dioptimalkan tepi harus dibuat di Wilayah. `us-east-1` 

1. Pilih **Simpan**.

1. Siapkan data DNS untuk mengarahkan nama domain kustom yang dioptimalkan tepi ke nama host yang dioptimalkan tepi ini. Untuk informasi selengkapnya, lihat [mengonfigurasi Route 53 untuk merutekan lalu lintas ke API Gateway](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-api-gateway.html).

1. Setelah mengonfirmasi bahwa konfigurasi DNS Anda menggunakan titik akhir yang benar, Anda menghapus konfigurasi titik akhir Regional. Pilih nama domain kustom Anda, dan kemudian untuk **konfigurasi titik akhir Regional**, pilih **Hapus**.

1. Konfirmasikan pilihan Anda dan hapus titik akhir.

------
#### [ AWS CLI ]

[update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)Perintah berikut memigrasikan nama domain kustom Regional Anda ke nama domain kustom yang dioptimalkan tepi:

```
aws apigateway update-domain-name \
    --domain-name 'api.example.com' \
    --patch-operations  '[ 
        { "op":"add", "path": "/endpointConfiguration/types","value": "EDGE" },
        { "op":"add", "path": "/certificateName", "value": "edge-cert" },
	{"op":"add", "path": "/certificateArn", "value": "arn:aws:acm:us-east-1:738575810317:certificate/34a95aa1-77fa-427c-aa07-3a88bd9f3c0a"}
      ]'
```

Sertifikat domain yang dioptimalkan tepi harus dibuat di Wilayah. `us-east-1` 

Outputnya akan terlihat seperti berikut:

```
{
    "certificateArn": "arn:aws:acm:us-east-1:738575810317:certificate/34a95aa1-77fa-427c-aa07-3a88bd9f3c0a",
    "certificateName": "edge-cert",
    "certificateUploadDate": "2017-10-16T23:22:57Z",
    "distributionDomainName": "d1frvgze7vy1bf.cloudfront.net",
    "domainName": "api.example.com",
    "endpointConfiguration": {
        "types": [
            "EDGE",
            "REGIONAL"
        ]
    },
    "regionalCertificateArn": "arn:aws:acm:us-east-1:123456789012:certificate/3d881b54-851a-478a-a887-f6502760461d",
    "regionalDomainName": "d-cgkq2qwgzf.execute-api.us-east-1.amazonaws.com"
}
```

Untuk nama domain kustom yang ditentukan, API Gateway menampilkan nama host API yang dioptimalkan tepi sebagai nilai properti. `distributionDomainName` Anda harus menetapkan catatan DNS untuk mengarahkan nama domain kustom yang dioptimalkan tepi ke nama domain distribusi ini. Ini memungkinkan lalu lintas yang terikat pada nama domain kustom yang dioptimalkan tepi untuk dirutekan ke nama host API yang dioptimalkan tepi. 

Setelah catatan DNS ditetapkan, Anda dapat menghapus jenis `REGION` titik akhir dari nama domain kustom. [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)Perintah berikut menghapus tipe endpoint Regional:

```
aws apigateway update-domain-name \
    --domain-name api.example.com \
    --patch-operations '[
        {"op":"remove", "path":"/endpointConfiguration/types", value:"REGIONAL"},
        {"op":"remove", "path":"regionalCertificateArn"}
      ]'
```

Outputnya terlihat seperti berikut:

```
{
    "certificateArn": "arn:aws:acm:us-east-1:738575810317:certificate/34a95aa1-77fa-427c-aa07-3a88bd9f3c0a",
    "certificateName": "edge-cert",
    "certificateUploadDate": "2017-10-16T23:22:57Z",
    "distributionDomainName": "d1frvgze7vy1bf.cloudfront.net",
    "domainName": "api.example.com",
    "endpointConfiguration": {
        "types": "EDGE"
    }
}
```

------

# Kirim lalu lintas ke Anda APIs melalui nama domain kustom Anda di API Gateway
<a name="rest-api-routing-mode"></a>

Ketika Anda mengkonfigurasi mode routing untuk nama domain kustom Anda, Anda mengatur bagaimana lalu lintas masuk diarahkan ke Anda. APIs Anda mengirim lalu lintas ke APIs menggunakan aturan perutean, pemetaan API, atau aturan perutean dan pemetaan API. Bagian berikut menjelaskan kapan harus menggunakan aturan perutean, kapan menggunakan pemetaan API, dan cara mengatur mode perutean untuk nama domain kustom Anda.

## Kapan menggunakan aturan perutean
<a name="when-to-use-routing-rules"></a>

Saat Anda menggunakan aturan perutean, Anda mengarahkan permintaan masuk yang cocok dengan kondisi tertentu ke tahapan REST APIs tertentu. Misalnya, aturan dapat merutekan permintaan ke `production` tahap `users` REST API Anda jika berisi header `version:v1` dan jalur dasar`/users`. Gunakan aturan perutean untuk membuat topologi perutean dinamis lanjutan yang mendukung kasus penggunaan seperti A/B pengujian atau peningkatan penggunaan versi baru Anda. APIs

Sebaiknya saat mengarahkan lalu lintas ke REST API, Anda menggunakan aturan perutean untuk nama domain kustom Anda. Anda dapat membuat ulang pemetaan API apa pun dengan menggunakan aturan perutean. Untuk informasi selengkapnya, lihat [Membuat ulang pemetaan API menggunakan aturan perutean](rest-api-routing-rules-recreate-api-mapping.md).

Untuk REST APIs, Anda juga dapat menggunakan aturan routing dan pemetaan API bersama-sama. Saat Anda menggunakan aturan perutean dan pemetaan API bersama-sama, API Gateway selalu mengevaluasi aturan perutean sebelum mengevaluasi pemetaan API apa pun. Gunakan aturan perutean dan pemetaan API bersama-sama untuk memigrasikan nama domain kustom Anda saat ini atau untuk menjelajahi aturan perutean.

### Pertimbangan untuk aturan perutean
<a name="considerations-for-private-preview"></a>

Pertimbangan berikut dapat memengaruhi penggunaan aturan perutean Anda:
+ WebSocket atau HTTP APIs tidak didukung sebagai target APIs untuk aturan perutean.
+ Jika nama domain kustom Anda memiliki pemetaan API ke REST dan HTTP APIs, aturan perutean tidak didukung.
+ Anda dapat membuat aturan perutean untuk domain kustom pribadi ke REST API pribadi. Anda dapat membuat aturan perutean untuk domain kustom publik ke API Regional atau yang dioptimalkan tepi. 
+ Anda tidak dapat membuat aturan perutean untuk domain kustom publik ke API pribadi. Anda tidak dapat membuat aturan perutean untuk nama domain kustom pribadi ke API publik.

## Pilih antara aturan perutean dan pemetaan API
<a name="choose-between-routing-rules-and-api-mappings"></a>

Kami menyarankan bahwa jika memungkinkan, Anda menggunakan aturan routing. Hanya gunakan pemetaan API untuk mengirim lalu lintas ke HTTP atau WebSocket API.

# Mengatur mode routing untuk nama domain kustom Anda
<a name="set-routing-mode"></a>

Anda dapat memilih mode perutean yang digunakan API Gateway untuk merutekan lalu lintas ke Anda APIs. Untuk informasi selengkapnya, lihat [Kirim lalu lintas ke Anda APIs melalui nama domain kustom Anda di API Gateway](rest-api-routing-mode.md). Bagian ini membahas mode routing untuk nama domain kustom. Anda harus mengatur mode perutean untuk nama domain kustom Anda untuk mengarahkan lalu lintas ke Anda APIs. Mode perutean berikut didukung:
+ **ROUTING\$1RULE\$1THEN\$1 API\$1MAPPING** — Gunakan mode ini untuk mengirim lalu lintas ke Anda APIs dengan aturan perutean dan pemetaan API. Dalam mode ini, semua aturan perutean diprioritaskan daripada pemetaan API apa pun. Untuk contoh mode ini, lihat[Contoh 2: Aturan perutean dan pemetaan API](rest-api-routing-rules-examples.md#rest-api-routing-rules-examples-rule-and-mappings). 
+ **ROUTING\$1RULE\$1ONLY — Gunakan mode ini untuk hanya** mengizinkan aturan routing untuk mengirim lalu lintas ke Anda. APIs Ketika nama domain kustom Anda menggunakan mode ini, Anda tidak dapat membuat pemetaan API, tetapi Anda dapat menggunakan [get-api-mappings](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/get-api-mappings.html)perintah untuk melihatnya. Pemanggil API tidak dapat menggunakan pemetaan API untuk mengakses nama domain ini.
+ **API\$1MAPPING\$1ONLY** — Gunakan mode ini untuk hanya mengizinkan pemetaan API untuk mengirim lalu lintas ke Anda. APIs Saat nama domain kustom Anda menggunakan mode ini, Anda tidak dapat membuat aturan perutean, tetapi Anda dapat menggunakan `list-routing-rules` perintah untuk melihatnya. Pemanggil API tidak dapat menggunakan aturan perutean untuk mengakses nama domain ini.

  Ini adalah mode routing default untuk semua nama domain yang ada, dan nama domain baru yang Anda buat.

Ketika Anda membuat nama domain kustom menggunakan`apigateway`, `API_MAPPING_ONLY` dipanggil `BASE_PATH_MAPPING_ONLY` dan `ROUTING_RULE_THEN_API_MAPPING` dipanggil`ROUTING_RULE_THEN_BASE_PATH_MAPPING`. Perilaku ini hanya ada untuk AWS CLI, CloudFormation, atau apa pun SDKs, tidak di Konsol Manajemen AWS.

Prosedur berikut menunjukkan cara mengubah mode routing untuk nama domain kustom yang ada. Saat Anda mengubah mode perutean nama domain kustom Anda, pemanggil API tidak dapat mengakses nama domain Anda menggunakan mode perutean yang tidak didukung.

------
#### [ Konsol Manajemen AWS ]

1. Masuk ke konsol API Gateway di [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Pilih **Nama domain khusus** dari panel navigasi utama.

1. Pilih nama domain khusus.

1. Untuk **detail Domain**, pilih **Edit**.

1. Untuk **mode Routing**, pilih **API\$1MAPPINGROUTING\$1RULE\$1THEN\$1**.

1. Pilih **Simpan**.

Jika Anda mengubah mode perutean ke `ROUTING_RULE_ONLY` atau`API_MAPPING_ONLY`, pemetaan API atau aturan perutean apa pun yang Anda buat akan dihapus dari halaman detail nama domain konsol. Jika Anda mengubah mode perutean untuk mendukung aturan perutean atau pemetaan API, sumber daya ini akan kembali.

------
#### [ AWS CLI - apigatewayv2 ]

[update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/update-domain-name.html)Perintah berikut memperbarui nama domain untuk menggunakan mode `ROUTING_RULE_THEN_API_MAPPING` routing:

```
aws apigatewayv2 update-domain-name \
  --domain-name 'api.example.com' \
  --routing-mode "ROUTING_RULE_THEN_API_MAPPING"
```

Outputnya akan terlihat seperti berikut:

```
{
"ApiMappingSelectionExpression": "$request.basepath",
"DomainName": "api.example.com",
"DomainNameArn": "arn:aws:apigateway:us-west-2::/domainnames/api.example.com",
"DomainNameConfigurations": [
  {
      "ApiGatewayDomainName": "d-abcdefg.execute-api.us-west-2.amazonaws.com",
      "CertificateArn": "arn:aws:acm:us-west-2:111122223333:certificate/abcdefg-123456-abcdefg",
      "DomainNameStatus": "AVAILABLE",
      "EndpointType": "REGIONAL",
      "HostedZoneId": "Z2OJLYMUO9EFXC",
      "SecurityPolicy": "TLS_1_2"
   }
 ],
"RoutingMode": "ROUTING_RULE_THEN_API_MAPPING",
"Tags": {}
}
```

------
#### [ AWS CLI - apigateway ]

[update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)Perintah berikut memperbarui nama domain kustom pribadi untuk menggunakan mode `ROUTING_RULE_THEN_BASE_PATH_MAPPING` perutean:

```
aws apigateway update-domain-name \
  --domain-name 'private.example.com' \
  --patch-operations "op='replace',path='/routingMode',value='ROUTING_RULE_THEN_BASE_PATH_MAPPING'"
```

Outputnya akan terlihat seperti berikut:

```
{
"domainName": "private.example.com",
"domainNameId": "abcd1234",
"domainNameArn": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234",
"certificateArn": "arn:aws:acm:us-west-2:111122223333:certificate/a1b2c3d4-5678-90ab-cdef",
"certificateUploadDate": "2024-09-10T10:31:20-07:00",
"endpointConfiguration": {
  "types": [
    "PRIVATE"
   ],
  "ipAddressType": "dualstack"
  },
"domainNameStatus": "AVAILABLE",
"securityPolicy": "TLS_1_2",
"policy": "...",
"routingMode" : "ROUTING_RULE_THEN_BASE_PATH_MAPPING"
}
```

------

# Aturan perutean untuk menghubungkan tahapan API ke nama domain khusus untuk REST APIs
<a name="rest-api-routing-rules"></a>

Aturan routing adalah serangkaian kondisi yang ketika dicocokkan, memanggil tindakan. Misalnya, aturan dapat merutekan permintaan masuk ke nama domain kustom yang berisi header `Hello:World` dan berisi jalur dasar `users` ke `production` tahap REST API.

Aturan dievaluasi dalam urutan prioritas, dan jika Anda menyetel mode perutean`ROUTING_RULE_THEN_API_MAPPING`, API Gateway selalu mengevaluasi semua aturan perutean sebelum mengevaluasi pemetaan API apa pun. Daftar berikut menjelaskan bagaimana aturan routing menggunakan kondisi, tindakan, dan prioritas. 

**Ketentuan**  
Bila syarat untuk suatu peraturan terpenuhi, maka tindakannya dilakukan. API Gateway mendukung hingga dua kondisi header dan satu kondisi jalur. API Gateway mengevaluasi kondisi header dan kondisi jalur dasar secara bersamaan.  
Anda dapat membuat aturan tanpa syarat apa pun. Saat API Gateway mengevaluasi aturan ini, tindakan selalu dilakukan. Anda dapat membuat aturan tanpa syarat apa pun sebagai aturan catch-all.  
Untuk informasi selengkapnya tentang kondisi header, lihat[Ketentuan header pertandingan](#rest-api-routing-rules-condition-headers). Untuk informasi selengkapnya tentang kondisi jalur, lihat[Cocokkan kondisi jalur dasar](#rest-api-routing-rules-condition-path). 

**Tindakan**  
Tindakan adalah hasil dari kondisi pencocokan dengan aturan routing. Saat ini, satu-satunya tindakan yang didukung adalah memanggil tahap REST API.  
Setiap aturan dapat memiliki satu tindakan.

**Prioritas**  
Prioritas menentukan urutan aturan yang dievaluasi, dari nilai terendah hingga nilai tertinggi. Aturan tidak dapat memiliki prioritas yang sama.  
Anda dapat menetapkan prioritas dari 1-1.000.000. Jika aturan memiliki prioritas satu, API Gateway mengevaluasinya terlebih dahulu. Kami menyarankan bahwa ketika Anda membuat aturan, Anda menambahkan kesenjangan dalam prioritas. Ini membantu Anda mengubah prioritas aturan dan menambahkan aturan baru. Untuk informasi selengkapnya, lihat [Mengubah prioritas aturan routing](apigateway-routing-rules-use.md#rest-api-routing-rules-change-priority).

Untuk contoh cara API Gateway mengevaluasi aturan perutean, lihat. [Contoh bagaimana API Gateway mengevaluasi aturan perutean](rest-api-routing-rules-examples.md)

## Jenis kondisi aturan perutean API Gateway
<a name="rest-api-routing-rules-condition-types"></a>

Bagian berikut menjelaskan jenis kondisi aturan routing. API Gateway hanya cocok dengan aturan jika semua kondisi benar.

### Ketentuan header pertandingan
<a name="rest-api-routing-rules-condition-headers"></a>

Saat Anda membuat kondisi header, Anda dapat mencocokkan nama header dan nilai glob header, seperti`Hello:World`. API Gateway menggunakan kecocokan literal untuk memvalidasi kondisi header kecocokan. Kondisi Anda dapat menggunakan hingga dua header yang digunakan di `AND` antara mereka. Misalnya, kondisi Anda dapat cocok jika permintaan masuk berisi `Hello:World` dan`x-version:beta`.

Pencocokan nama header tidak peka huruf besar/kecil, tetapi nilai glob header peka huruf besar/kecil. `Hello:World`akan cocok`hello:World`, tapi tidak`Hello:world`.

Untuk daftar nilai header terbatas lihat,[Pembatasan](#rest-api-routing-rules-restrictions).

#### Menggunakan wildcard dengan kondisi header
<a name="rest-api-routing-rules-condition-headers-wildcards"></a>

Anda hanya dapat menggunakan wildcard dalam nilai header glob, dan wildcard harus`*prefix-match`,, `suffix-match*` atau. `*contains*` Tabel berikut menunjukkan contoh cara menggunakan wildcard untuk pencocokan kondisi header. 


|  Kondisi header  |  Permintaan yang cocok dengan aturan perutean  |  Permintaan yang tidak cocok dengan aturan perutean  | 
| --- | --- | --- | 
|  `x-version: a*`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/rest-api-routing-rules.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/rest-api-routing-rules.html)  | 
|  `x-version: *a`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/rest-api-routing-rules.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/rest-api-routing-rules.html)  | 
|  `x-version: *a*`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/rest-api-routing-rules.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/rest-api-routing-rules.html)  | 
|  `x-version: *a*` dan `x-version: *b*`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/rest-api-routing-rules.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/rest-api-routing-rules.html)  | 
|  `x-version: b*` dan `x-version: *a`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/rest-api-routing-rules.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/rest-api-routing-rules.html)  | 
|  `x-version: *`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/rest-api-routing-rules.html)  |  Tidak ada  | 

Jika Anda membuat kondisi untuk beberapa nilai header, seperti`Accept:application/json,text/xml`, kami sarankan Anda menggunakan `*contains*` untuk kondisi header Anda dan menghindari membuat kondisi menggunakan karakter koma (`,`).

Karena API Gateway cocok dengan kondisi header secara harfiah, kecocokan semantik mungkin dirutekan secara berbeda. Tabel berikut menunjukkan perbedaan dalam hasil aturan routing.


|  Kondisi header  |  Permintaan yang cocok dengan aturan perutean  |  Permintaan yang tidak cocok dengan aturan perutean  | 
| --- | --- | --- | 
|  `Accept: *json`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/rest-api-routing-rules.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/rest-api-routing-rules.html)  | 
|  `Accept: *json*`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/rest-api-routing-rules.html)  |  Tidak ada  | 

### Cocokkan kondisi jalur dasar
<a name="rest-api-routing-rules-condition-path"></a>

Saat Anda membuat kondisi jalur dasar, jika permintaan masuk berisi jalur yang Anda tentukan, aturannya cocok. Pencocokannya peka huruf besar/kecil, jadi jalurnya tidak `New/Users` akan cocok`new/users`.

Anda dapat membuat kondisi jalur dasar hanya untuk satu jalur dasar.

Untuk daftar kondisi jalur dasar terbatas,[Pembatasan](#rest-api-routing-rules-restrictions).

#### Lepaskan jalur dasar dengan kondisi jalur dasar
<a name="rest-api-routing-rules-condition-path-split"></a>

Saat Anda membuat kondisi jalur dasar, Anda dapat memilih untuk menghapus jalur dasar. Saat Anda menghapus jalur dasar, API Gateway menghapus jalur dasar yang cocok yang masuk saat memanggil API target. Ini adalah perilaku yang sama seperti ketika Anda menggunakan pemetaan API. Jika Anda tidak menghapus jalur dasar, API Gateway meneruskan seluruh jalur dasar ke API target. Sebaiknya Anda hanya menghapus jalur dasar saat membuat ulang pemetaan API.

Tabel berikut menunjukkan contoh bagaimana API Gateway mengevaluasi kondisi jalur dasar strip.


|  Kondisi  | Jalur dasar strip |  Permintaan masuk  |  Hasil  | 
| --- | --- | --- | --- | 
|  Jika jalur dasar berisi `PetStoreShopper/dogs`  |  True  |  `GET https://example.com/PetStoreShopper/dogs`  |  API Gateway memanggil `GET` metode `/` sumber daya.  | 
|  Jika jalur dasar berisi`PetStoreShopper/dogs`.  |  False  |  `GET https://example.com/PetStoreShopper/dogs`  |  API Gateway memanggil `GET` metode `PetStoreShopper/dogs` sumber daya.  | 
|  Jika jalur dasar berisi `PetStoreShopper`  |  True  |  `GET https://example.com/PetStoreShopper/dogs`  |  API Gateway memanggil `GET` metode `dogs` sumber daya.  | 
|  Jika jalur dasar berisi `PetStoreShopper`  |  False  |  `GET https://example.com/PetStoreShopper/dogs`  |  API Gateway memanggil `GET` metode `PetStoreShopper/dogs` sumber daya.  | 
|  Jika jalur dasar berisi `PetStoreShopper`  |  True  |  `GET https://example.com/PetStoreShopper?birds=available`  |  API Gateway memanggil `GET` metode `/` sumber daya dengan parameter string kueri`birds=available`.  | 
|  Jika jalur dasar berisi `PetStoreShopper`  |  False  |  `GET https://example.com/PetStoreShopper?birds=available`  |  API Gateway memanggil `GET` metode `/PetStoreShopper` sumber daya dengan parameter string kueri`birds=available`.  | 

## Pembatasan
<a name="rest-api-routing-rules-restrictions"></a>
+ API target dan nama domain khusus harus berada di AWS akun yang sama.
+ Setiap aturan dapat memiliki satu API target. 
+ Anda hanya dapat membuat aturan perutean untuk nama domain kustom pribadi ke API pribadi, dan untuk nama domain kustom publik ke API publik. Anda tidak dapat mencampur sumber daya publik dan swasta.
+ Jika nama domain kustom Anda memiliki pemetaan API ke REST dan HTTP APIs, aturan perutean tidak didukung.
+ Jumlah prioritas maksimum adalah 1.000.000.
+ Pembatasan header:
  + Setiap `anyOf` kondisi hanya dapat berisi satu nilai header.
  + Satu-satunya karakter yang diizinkan untuk nama header dan nilai glob header ditentukan oleh [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230), yaitu,`a-z`, `A-Z``0-9`, dan karakter khusus berikut:. `*?-!#$%&'.^_`|~`
  + Anda dapat menggunakan wildcard dalam nilai header glob, tetapi wildcard harus`*prefix-match`,, `suffix-match*` atau. `*contains*` Anda tidak dapat menggunakan `*` di tengah nilai glob header.
  + Nama header wildcard tidak didukung.
  + Nama header harus kurang dari 40 karakter.
  + Nilai header glob harus kurang dari 128 karakter.
  + Nilai header glob untuk kecocokan infix harus kurang dari 40 karakter.
  + Header berikut tidak didukung sebagai kondisi:
    + `access-control-*`
    + `apigw-*`
    + `Authorization`
    + `Connection`
    + `Content-Encoding`
    + `Content-Length`
    + `Content-Location`
    + `Forwarded`
    + `Keep-Alive`
    + `Origin`
    + `Proxy-Authenticate`
    + `Proxy-Authorization`
    + `TE`
    + `Trailers`
    + `Transfer-Encoding`
    + `Upgrade`
    + `x-amz-*`
    + `x-amzn-*`
    + `x-apigw-api-id`
    + `X-Forwarded-For`
    + `X-Forwarded-Host`
    + `X-Forwarded-Proto`
    + `x-restAPI`
    + `Via`
+ Batasan jalur dasar:
  + Panjang jalur dasar harus kurang dari 128 karakter.
  + Jalur dasar harus berisi hanya huruf, angka, dan karakter berikut:`$-_.+!*'()/`.

    Karakter ini tidak didukung untuk ekspresi reguler (regex). 
  + Jalur dasar tidak dapat memulai atau mengakhiri dengan karakter garis miring terbalik (`\`).

# Contoh bagaimana API Gateway mengevaluasi aturan perutean
<a name="rest-api-routing-rules-examples"></a>

Bagian berikut menunjukkan empat contoh bagaimana API Gateway mengevaluasi aturan routing dan pemetaan API.

## Contoh 1: Aturan perutean saja
<a name="rest-api-routing-rules-examples-rule-only"></a>

Dalam contoh ini, nama domain khusus `https://petstore.example.com` memiliki mode perutean yang disetel ke `ROUTING_RULE_ONLY` dan memiliki aturan dan prioritas perutean berikut.


|  ID aturan  |  Prioritas  |  Ketentuan  |  Tindakan  | 
| --- | --- | --- | --- | 
|  `abc123`  |   10   |   Jika permintaan berisi header: `Hello:World`   |   Target API 1   | 
|  `zzz000`  |   50   |   Jika permintaan berisi header: `Accept:image/webp` dan `Pet:Dog-*` dan jika jalur dasar berisi `PetStoreShopper`  |   Target API 2   | 
|  `efg456`  |   100   |  Tidak ada  |   Target API 3   | 

Tabel berikut menunjukkan bagaimana API Gateway menerapkan aturan perutean sebelumnya ke permintaan contoh.


| Permintaan | API yang dipilih | Penjelasan | 
| --- | --- | --- | 
|  `https://petstore.example.com -h "Hello:World"`  |  Target API 1  |  Permintaan cocok dengan aturan `abc123` routing.  | 
|  `https://petstore.example.com/PetStoreShopper -h "Hello:World", "Pet:Dog-Bella", "Accept:image/webp"`  |  Target API 1  |  API Gateway mengevaluasi semua aturan perutean dalam urutan prioritas. Aturan perutean `abc123` memiliki prioritas pertama dan kondisinya cocok, sehingga API Gateway memanggil Target API 1. Meskipun kondisi permintaan juga cocok dengan aturan perutean`zzz000`, API Gateway tidak mengevaluasi aturan perutean lainnya setelah membuat kecocokan.  | 
|  `https://petstore.example.com/PetStoreShopper -h "Pet:Dog-Bella", "Accept:image/webp"`  |  Target API 2  |  Permintaan cocok dengan aturan `zzz000` routing. Ini adalah pertandingan karena itu `Pet:Dog-Bella` adalah string yang cocok `Pet:Dog-*`  | 
|  `https://petstore.example.com/PetStoreShopper -h "Pet:Dog-Bella"`  |  Target API 3  |  Permintaan tidak cocok dengan aturan `abc123` routing. Permintaan tidak cocok dengan aturan perutean `zzz000` karena semua header yang diperlukan tidak ada. Aturan prioritas berikutnya cocok dengan semua permintaan yang masuk, jadi API Gateway memanggil Target API 3.  | 

## Contoh 2: Aturan perutean dan pemetaan API
<a name="rest-api-routing-rules-examples-rule-and-mappings"></a>

Dalam contoh ini, nama domain khusus `https://petstore.diagram.example.com` memiliki mode perutean yang disetel ke `ROUTING_RULE_THEN_API_MAPPING` dan memiliki aturan perutean dan pemetaan API berikut.


|  ID aturan  |  Prioritas  |  Ketentuan  |  Tindakan  | 
| --- | --- | --- | --- | 
|  `abc123`  |   1   |   Jika permintaan basis berisi `pets`   |   Memanggil `Prod` tahap `PetStore` API.   | 
|  `000zzz`  |   5   |   Jika permintaan berisi header:`Cookie`: `*ux=beta*` dan dan jika jalur dasar berisi `/refunds`  |   Memanggil `Beta` tahap `Refunds` API.   | 

Tabel berikut menunjukkan pemetaan API untuk. `https://petstore.backup.example.com`


|  Pemetaan API  |  API yang dipilih  | 
| --- | --- | 
|   `/refunds`   |   Memanggil `Prod` tahap `Refunds` API.   | 
|   `(none)`   |   Memanggil `Prod` tahap `Search` API.   | 

Diagram berikut menunjukkan bagaimana API Gateway menerapkan aturan perutean sebelumnya dan pemetaan API ke permintaan contoh. Contoh permintaan dirangkum dalam tabel setelah diagram ini.

![\[Diagram bagaimana API Gateway menerapkan aturan perutean dan pemetaan API sebelumnya.\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/rr-diagram.png)


Tabel berikut menunjukkan bagaimana API Gateway menerapkan aturan perutean sebelumnya dan pemetaan API ke permintaan contoh.


| Permintaan | API yang dipilih | Penjelasan | 
| --- | --- | --- | 
|  `https://petstore.diagram.com/pets`  |  `Prod`Tahap `PetStore` API.  |  Permintaan cocok dengan aturan `abc123` perutean.  | 
|  `https://petstore.diagram.example.com/refunds -h "Cookie:lang=en-us;ux=beta"`  |  `Beta`Tahap `Refunds` API.  |  Permintaan cocok dengan aturan `000zzz` perutean. `Cookie`Header berisi `*contains*` kecocokan yang benar dan pencocokan jalur dasar untuk kondisi ini.   | 
|  `https://petstore.diagram.example.com/refunds`  |  `Prod`Tahap `Refunds` API.   |  Permintaan tidak memiliki header yang diperlukan untuk mencocokkan aturan perutean. `zzz000` Jika API Gateway tidak berhasil mencocokkan aturan perutean, itu akan kembali ke pemetaan API. API Gateway dapat memetakan jalur dasar ke `Prod` tahap `Refunds` API.   | 
|  `https://petstore.diagram.example.com/`  |  `Prod`Tahap `Search` API.   |  Permintaan mencocokkan pemetaan API dengan jalur `(none)` kosong.  | 

## Contoh 3: Aturan perutean dan pemetaan API dengan beberapa level
<a name="rest-api-routing-rules-examples-rule-and-mappings-with-multiple-levels"></a>

Dalam contoh ini, nama domain khusus `https://petstore.backup.example.com` memiliki mode perutean yang disetel ke `ROUTING_RULE_THEN_API_MAPPING` dan memiliki aturan perutean dan pemetaan API berikut.

Tabel berikut menunjukkan aturan routing untuk`https://petstore.backup.example.com`.


|  ID aturan  |  Prioritas  |  Ketentuan  |  Tindakan  | 
| --- | --- | --- | --- | 
|  `abc123`  |   10   |   Jika permintaan berisi header: `Hello:World`   |   Target API 1   | 
|  `000zzz`  |   50   |   Jika permintaan berisi header:`Accept`: `image/webp` dan `Pet:Dog-*` dan jika jalur dasar berisi `PetStoreShopper`  |  Target API 2  | 

Tabel berikut menunjukkan pemetaan API untuk. `https://petstore.backup.example.com`


|  Pemetaan API  |  API yang dipilih  | 
| --- | --- | 
|   `PetStoreShopper`   |   Target API 3   | 
|   `PetStoreShopper/cats`   |   Target API 4   | 

Tabel berikut menunjukkan bagaimana API Gateway menerapkan aturan perutean sebelumnya dan pemetaan API ke permintaan contoh.


| Permintaan | API yang dipilih | Penjelasan | 
| --- | --- | --- | 
|  `https://petstore.example.com/PetStoreShopper -h "Accept:image/webp", "Pet:Cats" `  |  Target API 3  |  Permintaan tidak memiliki header yang diperlukan untuk mencocokkan aturan perutean. `zzz000` Jika API Gateway tidak berhasil mencocokkan aturan perutean, itu akan kembali ke pemetaan API. API Gateway dapat memetakan jalur dasar ke Target API 3.  | 
|  `https://petstore.example.com/PetStoreShopper/cats -h "Hello:World"`  |  Target API 1  |  Permintaan cocok dengan aturan `abc123` perutean. Jika mode perutean disetel ke`ROUTING_RULE_THEN_API_MAPPING`, aturan perutean selalu diprioritaskan daripada pemetaan API.  | 
|  `https://petstore.example.com/Admin -h "Pet:Dog-Bella"`  |  Tidak ada  |  Permintaan tidak cocok dengan aturan perutean atau pemetaan API apa pun. Karena tidak ada aturan perutean default, API Gateway menolak panggilan dan mengirimkan kode status kepada `403 Forbidden` pemanggil.  | 

## Contoh 4: Aturan perutean untuk nama domain wildcard
<a name="rest-api-routing-rules-examples-rule-for-wildcard-domains"></a>

Dalam contoh ini, nama domain kustom `https://*.example.com` adalah nama domain wildcard. Wildcard mendukung semua subdomain yang merutekan kembali ke domain yang sama. Contoh aturan perutean berikut mengubah perilaku ini untuk memungkinkan subdomain merutekan ke target yang berbeda APIs dengan menggunakan header. `Host`

Tabel berikut menunjukkan aturan routing untuk`https://*.example.com`.


|  ID aturan  |  Prioritas  |  Ketentuan  |  Tindakan  | 
| --- | --- | --- | --- | 
|  `abc123`  |   10   |   Jika permintaan berisi header: `Host:a.example.com`   |   Target API 1   | 
|  `000zzz`  |   50   |   Jika permintaan berisi header: `Host:b.example.com`  |  Target API 2  | 
|  `efg456`  |   500   |  Tidak ada  |  Target API 3  | 

Tabel berikut menunjukkan bagaimana API Gateway menerapkan aturan perutean sebelumnya ke permintaan contoh.


| Permintaan | API yang dipilih | Penjelasan | 
| --- | --- | --- | 
|  `https://a.example.com`  |  Target API 1  |  `Host`Header adalah`a.example.com`. Permintaan ini cocok dengan aturan `abc123` routing.  | 
|  `https://b.example.com`  |  Target API 2  |  `Host`Header adalah`b.example.com`. Permintaan ini cocok dengan aturan `000zzz` routing.  | 
|  `https://testing.example.com`  |  Target API 3  |  Ini cocok dengan aturan perutean catch-all. `efg456`  | 

# Cara menggunakan aturan routing
<a name="apigateway-routing-rules-use"></a>

Anda dapat membuat aturan perutean menggunakan Konsol Manajemen AWS, AWS CLI, atau AWS SDK apa pun. Setelah Anda membuat aturan, Anda dapat mengubah prioritasnya.

## Buat aturan perutean
<a name="rest-api-routing-rules-create"></a>

Prosedur berikut menunjukkan cara membuat aturan routing untuk nama domain kustom dengan mode routing diatur ke salah satu atau`ROUTING_RULE_THEN_API_MAPPING`. `ROUTING_RULE_ONLY`

------
#### [ Konsol Manajemen AWS ]

1. Masuk ke konsol API Gateway di [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Pilih **Nama domain khusus** dari panel navigasi utama. 

1. Pilih nama domain khusus.

1. Pada tab **Routing details**, pilih **Add routing rule.**

1. Pilih **Tambahkan kondisi baru** untuk menambahkan kondisi baru.

   Anda dapat menambahkan header atau kondisi jalur dasar. Untuk mencocokkan semua permintaan yang masuk dengan nama domain kustom Anda, jangan tambahkan kondisi. 

1. Untuk **Action**, gunakan dropdown untuk memilih API target dan tahap target Anda.

1. Pilih **Berikutnya**.

1. Di bidang prioritas, masukkan nomor untuk prioritas Anda.

   API Gateway mengevaluasi aturan dalam urutan prioritas, dari nilai terendah hingga nilai tertinggi.

   Jika Anda membuat aturan tanpa syarat, kami sarankan Anda menggunakan prioritas nilai tinggi.

1. Pilih **Buat aturan perutean**.

------
#### [ AWS CLI ]

[create-routing-rule](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-routing-rule.html)Perintah berikut membuat aturan routing dengan prioritas 50. Dalam contoh ini, API Gateway merutekan permintaan masuk yang memiliki header `Hello:World` dan `x-version:beta` dan jalur dasar `PetStoreShopper` ke API target. `a1b2c3`

```
 aws apigatewayv2 create-routing-rule \
  --domain-name 'api.example.com' \
  --priority 50 \
  --conditions '[
    {
      "MatchHeaders": {
        "AnyOf": [
          {
            "Header": "Hello",
            "ValueGlob": "World"
          }
        ]
      }
    },
    {
      "MatchHeaders": {
        "AnyOf": [
          {
            "Header": "x-version",
            "ValueGlob": "beta"
          }
        ]
      }
    },
    {
      "MatchBasePaths": {
        "AnyOf": [
          "PetStoreShopper"
        ]
      }
    }
  ]'\
  --actions '[
  {
    "InvokeApi": {
      "ApiId": "a1b2c3",
      "Stage": "prod"
    }
  }
 ]'
```

Outputnya akan terlihat seperti berikut ini.

```
{
    "Actions": [
        {
            "InvokeApi": {
                "ApiId": "a1b2c3",
                "Stage": "prod",
                "StripBasePath": false
            }
        }
    ],
    "Conditions": [
        {
            "MatchHeaders": {
                "AnyOf": [
                    {
                        "Header": "Hello",
                        "ValueGlob": "World"
                    }
                ]
            }
        },
        {
            "MatchHeaders": {
                "AnyOf": [
                    {
                        "Header": "x-version",
                        "ValueGlob": "beta"
                    }
                ]
            }
        },
        {
            "MatchBasePaths": {
                "AnyOf": [
                    "PetStoreShopper"
                ]
            }
        }
    ],
    "Priority": 50,
    "RoutingRuleArn": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/api.example.com/routingrules/abc123",
    "RoutingRuleId": "abc123"
}
```

------

## Mengubah prioritas aturan routing
<a name="rest-api-routing-rules-change-priority"></a>

Anda dapat mengubah prioritas aturan routing. Ini segera berlaku dan mungkin memengaruhi cara konsumen API memanggil nama domain kustom Anda. Kami menyarankan bahwa ketika Anda menetapkan prioritas aturan routing Anda, Anda meninggalkan kesenjangan di antara aturan.

Misalnya, pertimbangkan dua aturan routing, aturan `abc123` dengan prioritas 50 dan aturan `zzz000` dengan prioritas 150. Untuk mengubah prioritas aturan agar API Gateway mengevaluasi aturan `zzz000` terlebih dahulu, Anda dapat mengubah prioritas aturan `zzz000` menjadi 30.

------
#### [ Konsol Manajemen AWS ]

1. Masuk ke konsol API Gateway di [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Pilih **Nama domain khusus** dari panel navigasi utama. 

1. Pilih nama domain khusus.

1. **Pada tab **Routing details**, pilih aturan routing Anda, lalu pilih Edit.** 

1. Pilih **Berikutnya**.

1. Untuk prioritas, masukkan prioritas baru.

1. Pilih **Simpan perubahan**.

------
#### [ AWS CLI ]

[put-routing-rule](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/put-routing-rule.html)Perintah berikut mengubah prioritas aturan `abc123` routing.

```
 aws apigatewayv2 put-routing-rule \
  --domain-name 'api.example.com' \
  --priority 30 \
  --routing-rule-id abc123 \
  --conditions '[
    {
      "MatchHeaders": {
        "AnyOf": [
          {
            "Header": "Hello",
            "ValueGlob": "World"
          }
        ]
      }
    },
    {
      "MatchHeaders": {
        "AnyOf": [
          {
            "Header": "x-version",
            "ValueGlob": "beta"
          }
        ]
      }
    },
    {
      "MatchBasePaths": {
        "AnyOf": [
          "PetStoreShopper"
        ]
      }
    }
  ]'\
  --actions '[
  {
    "InvokeApi": {
      "ApiId": "a1b2c3",
      "Stage": "prod"
    }
  }
 ]'
```

Outputnya akan terlihat seperti berikut:

```
{
    "Actions": [
        {
            "InvokeApi": {
                "ApiId": "a1b2c3",
                "Stage": "prod",
                "StripBasePath": false
            }
        }
    ],
    "Conditions": [
        {
            "MatchHeaders": {
                "AnyOf": [
                    {
                        "Header": "Hello",
                        "ValueGlob": "World"
                    }
                ]
            }
        },
        {
            "MatchHeaders": {
                "AnyOf": [
                    {
                        "Header": "x-version",
                        "ValueGlob": "beta"
                    }
                ]
            }
        },
        {
            "MatchBasePaths": {
                "AnyOf": [
                    "PetStoreShopper"
                ]
            }
        }
    ],
    "Priority": 38,
    "RoutingRuleArn": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/api.example.com/routingrules/abc123",
    "RoutingRuleId": "abc123"
}
```

------

# Membuat ulang pemetaan API menggunakan aturan perutean
<a name="rest-api-routing-rules-recreate-api-mapping"></a>

Anda dapat membuat ulang pemetaan API menggunakan aturan perutean. Untuk membuat ulang pemetaan API, pastikan untuk mengaktifkan striping jalur dasar. Ini mempertahankan perilaku pemetaan API. Untuk informasi selengkapnya, lihat [Lepaskan jalur dasar dengan kondisi jalur dasar](rest-api-routing-rules.md#rest-api-routing-rules-condition-path-split).

Tutorial berikut menunjukkan cara membuat ulang pemetaan API `https:// api.example.com/orders/v2/items/categories/5` sebagai aturan perutean dan cara memperbarui log akses Anda untuk mencatat aturan perutean ID API Gateway yang digunakan untuk mengirim lalu lintas ke API Anda.

------
#### [ Konsol Manajemen AWS ]

**Untuk mengatur mode perutean ke ROUTING\$1RULE\$1THEN\$1 API\$1MAPPING**

1. Masuk ke konsol API Gateway di [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Pilih **Nama domain khusus** dari panel navigasi utama. 

1. Pilih nama domain kustom Anda.

1. Untuk **detail Domain**, pilih **Edit**.

1. Untuk **mode Routing**, pilih **API\$1MAPPINGROUTING\$1RULE\$1THEN\$1**.

1. Pilih **Simpan**. 

Setelah Anda mengatur mode routing, Anda membuat aturan routing.

**Untuk membuat aturan routing**

1. Pada tab **Routing details**, pilih **Add routing rule.**

1. Pilih **Tambahkan kondisi baru** dan kemudian pilih **Path**.

1. Untuk **Path**, masuk**orders/v2/items/categories/5**.

1. Untuk **jalur dasar Strip**, pilih **Aktif**.

1. Untuk **API Target**, pilih API target Anda.

1. Untuk **tahap Target**, pilih tahap target Anda.

1. Pilih **Berikutnya**.

1. Untuk prioritas, masukkan prioritas.

   Bahkan jika Anda mempertahankan pemetaan API yang ada, API Gateway akan selalu menggunakan aturan perutean baru karena aturan perutean selalu diprioritaskan daripada pemetaan API.

1. Pilih **Simpan perubahan**.

Setelah Anda membuat aturan perutean, perbarui format log akses untuk tahap Anda atau buat log baru untuk mengonfirmasi bahwa API Gateway menggunakan aturan perutean Anda untuk mengirim lalu lintas ke API Anda.

**Untuk memperbarui log akses Anda**

1. Masuk ke konsol API Gateway di [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Pilih API Anda.

1. Di panel navigasi utama, pilih **Tahapan**.

1. Untuk **Log dan penelusuran**, pilih **Edit**.

   Jika Anda tidak memiliki grup log, lihat[Siapkan CloudWatch logging untuk REST APIs di API Gateway](set-up-logging.md).

1. Tambahkan **\$1context.customDomain.routingRuleIdMatched** ke format log Anda.

   Grup log ini mencatat ID aturan perutean yang digunakan API Gateway untuk mengirim lalu lintas ke API Anda. Untuk informasi selengkapnya, lihat [Saya tidak tahu bagaimana API Gateway mengirim lalu lintas ke saya APIs](rest-api-routing-rules-troubleshoot.md#rest-api-routing-rules-logging).

1. Pilih **Simpan**.

Setelah memperbarui log akses, panggil nama domain kustom Anda. Berikut ini adalah contoh perintah curl untuk memanggil nama domain kustom `https://api.example.com` dengan jalur dasar. `orders/v2/items/categories/5`

```
curl "https://api.example.com/orders/v2/items/categories/5"
```

Setelah Anda berhasil memanggil nama domain kustom Anda, konfirmasikan bahwa CloudWatch Log menunjukkan. `routingRuleIdMatched` Untuk mempelajari cara menggunakan konsol CloudWatch Log untuk melihat grup log, lihat[Melihat peristiwa log API Gateway di CloudWatch konsol](view-cloudwatch-log-events-in-cloudwatch-console.md).

------
#### [ AWS CLI ]

1. Gunakan [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/update-domain-name.html)perintah berikut untuk memperbarui nama domain `api.example.com` untuk menggunakan mode `ROUTING_RULE_THEN_API_MAPPING` routing.

   ```
   aws apigatewayv2 update-domain-name \
     --domain-name 'api.example.com' \
     --routing-mode ROUTING_RULE_THEN_API_MAPPING
   ```

1. Gunakan [create-routing-rule](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-routing-rule.html)perintah berikut untuk membuat aturan routing baru untuk membuat ulang pemetaan API. `https://api.example.com/orders/v2/items/categories/5`

   ```
   aws apigatewayv2 create-routing-rule \
     --domain-name 'api.example.com' \
     --priority 50 \
     --conditions '[
     {
       "MatchBasePaths": {
         "AnyOf": [
           "orders/v2/items/categories/5"
         ]
       }
     }
   ]' \
     --actions '[
     {
       "InvokeApi": {
         "ApiId": "a1b2c3",
         "Stage": "prod",
         "StripBasePath": true
       }
     }
   ]'
   ```

1. Gunakan perintah [update-stage](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-stage.html) berikut untuk memperbarui format log akses untuk menyertakan variabel. `$context.customDomain.routingRuleIdMatched` Variabel ini mencatat ID aturan perutean yang digunakan API Gateway untuk mengirim lalu lintas ke API Anda. Anda menggunakan log ini untuk mengonfirmasi bahwa API Gateway menggunakan aturan perutean Anda untuk mengirim lalu lintas ke API Anda. Untuk informasi selengkapnya, lihat [Saya tidak tahu bagaimana API Gateway mengirim lalu lintas ke saya APIs](rest-api-routing-rules-troubleshoot.md#rest-api-routing-rules-logging).

   ```
   aws apigateway update-stage \
     --rest-api-id a1bc2c3 \
     --stage-name prod \
     --patch-operations "op=replace,path=/accessLogSettings/format,value='\$context.path \$context.customDomain.routingRuleIdMatched \$context.requestId \$context.extendedRequestId'"
   ```

   Jika Anda tidak memiliki grup log, lihat[Siapkan CloudWatch logging untuk REST APIs di API Gateway](set-up-logging.md).

1. Gunakan contoh perintah curl berikut untuk memanggil nama domain kustom Anda dengan jalur dasar. `orders/v2/items/categories/5`

   ```
   curl "https://api.example.com/orders/v2/items/categories/5
   ```

1. Gunakan [filter-log-events](https://docs.aws.amazon.com/cli/latest/reference/logs/filter-log-events.html)perintah berikut untuk mendapatkan peristiwa log dari grup log `access-log-group-orders` yang berisi ID `abc123` aturan routing.

   ```
   aws logs filter-log-events --log-group-name access-log-group-orders --filter-pattern abc123
   ```

    Ini mengonfirmasi bahwa API Gateway menggunakan aturan perutean untuk mengirim lalu lintas ke API Anda.

------

# Memecahkan masalah dengan aturan perutean
<a name="rest-api-routing-rules-troubleshoot"></a>

Panduan pemecahan masalah berikut dapat membantu menyelesaikan masalah dengan aturan perutean Anda.

## Saya tidak tahu bagaimana API Gateway mengirim lalu lintas ke saya APIs
<a name="rest-api-routing-rules-logging"></a>

Anda dapat menggunakan log akses untuk tahap REST API untuk mencatat dan memecahkan masalah aturan perutean Anda. Anda dapat melihat ID aturan perutean yang digunakan API Gateway untuk mengirim lalu lintas ke API menggunakan `$context.customDomain.routingRuleIdMatched` variabel. Untuk melihat pemetaan API yang digunakan API Gateway untuk mengirim lalu lintas ke API Anda, gunakan `$context.customDomain.basePathMatched` variabel tersebut. 

 Untuk mencatat aturan perutean, Anda perlu mengonfigurasi ARN [peran CloudWatch Log yang sesuai](set-up-logging.md#set-up-access-logging-permissions) untuk akun Anda dan membuat grup log.

Contoh grup log akses berikut dapat mengambil informasi yang relevan untuk memecahkan masalah aturan perutean dan pemetaan API. API Gateway hanya mengisi variabel konteks untuk mekanisme perutean yang digunakannya, jika tidak, variabel konteksnya. `-` 

------
#### [ CLF ]

```
$context.path $context.customDomain.routingRuleIdMatched $context.customDomain.basePathMatched $context.requestId $context.extendedRequestId
```

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

```
{"requestPath": "$context.path", "routingRuleId" : "$context.customDomain.routingRuleIdMatched", "API mapping" : "$context.customDomain.basePathMatched", "requestId":"$context.requestId", "extendedRequestId":"$context.extendedRequestId"}
```

------
#### [ XML ]

```
<request id="$context.requestId"> <requestPath>$context.path</requestPath> <ruleId>$context.customDomain.routingRuleIdMatched</ruleId> <ApiMapping>$context.customDomain.basePathMatched</ApiMapping> <extendedRequestId>$context.extendedRequestId</extendedRequestId> </request>
```

------
#### [ CSV ]

```
$context.path,$context.customDomain.routingRuleIdMatched,$context.customDomain.basePathMatched,$context.requestId,$context.extendedRequestId
```

------

Kami juga menyarankan Anda mengonfirmasi mode perutean untuk nama domain kustom Anda. Untuk informasi selengkapnya, lihat [Mengatur mode routing untuk nama domain kustom Anda](set-routing-mode.md).

## Saya tidak dapat mengaktifkan aturan perutean pada nama domain khusus saya
<a name="rest-routing-rules-access-denied"></a>

Anda mungkin menerima error berikut dari API Gateway:

```
Your account doesn’t have permission to use RoutingRules.
This might be caused by an IAM policy in your account with a deny statement on BasePathMapping or ApiMapping.
To grant permission for this account to use RoutingRules, use the UpdateAccount API.
This will impact any existing IAM policies that deny access to BasePathMapping or ApiMapping.
See API Gateway documentation for further details.
```

Anda akan menerima kesalahan ini jika memiliki atau memiliki kebijakan IAM yang menolak akses ke [BasePathMapping](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonapigatewaymanagement.html#amazonapigatewaymanagement-resources-for-iam-policies)atau. [ApiMapping](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonapigatewaymanagementv2.html#amazonapigatewaymanagementv2-resources-for-iam-policies) Bila Anda mengaktifkan aturan perutean untuk nama domain kustom, meskipun kebijakan Anda akan terus menolak akses ke `BasePathMapping` atau`ApiMapping`, kebijakan yang sama dapat digunakan untuk mengakses`RoutingRule`. Ini mungkin memungkinkan pengguna untuk mengubah perilaku perutean nama domain kustom Anda.

Misalnya, jika Anda memiliki kebijakan seperti berikut:

```
{
    "Sid": "DenyCreatingApiMappings",
    "Effect": "Deny",
    "Action": "apigateway:POST",
    "Resource": [
        "arn:aws:apigateway:us-west-2::/domainnames/example.com/apimappings"
    ]
}
```

Saat Anda mengaktifkan aturan perutean`example.com`, kebijakan ini akan terus menolak akses untuk membuat `ApiMapping` tetapi tidak akan menolak akses untuk membuat `RoutingRule` file.

Kami menyarankan Anda mengaudit kebijakan IAM di akun Anda. Contoh kebijakan berikut akan menolak akses untuk membuat`ApiMapping`,`BasePathMapping`, dan`RoutingRule`:

```
{
    "Sid": "DenyCreatingBasePathMappingsApiMappings",
    "Effect": "Deny",
    "Action": "apigateway:POST",
    "Resource": [
        "arn:aws:apigateway:us-west-2::/domainnames/example.com/basepathmappings",
        "arn:aws:apigateway:us-west-2::/domainnames/example.com/apimappings"
    ]
},
{
    "Sid": "DenyCreatingRoutingRules",
    "Effect": "Deny",
    "Action": "apigateway:CreateRoutingRule",
    "Resource": [
        "arn:aws:apigateway:us-west-2:111122223333:/domainnames/example.com/routingrules/*"
    ]
}
```

Setelah mengonfirmasi bahwa semua kebijakan telah diperbarui, Anda dapat memperbarui setelan tingkat akun API untuk mengaktifkan aturan perutean untuk Wilayah.

Gunakan perintah [update-account](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-account.html) berikut untuk memperbarui setelan setelan tingkat akun API Anda untuk Wilayah:

```
aws apigateway update-account --patch-operations 'op=remove,path=/features,value=BlockedForRoutingRules' --region us-west-2
```

Setelah memperbarui setelan tingkat akun API, Anda dapat mengubah mode perutean nama domain kustom Anda. Anda juga dapat terus menggunakan kebijakan IAM untuk menolak akses ke`RoutingRules`, `ApiMapping` atau`BasePathMapping`.

# Gunakan pemetaan API untuk menghubungkan tahapan API ke nama domain khusus untuk REST APIs
<a name="rest-api-mappings"></a>

Anda menggunakan pemetaan API untuk menghubungkan tahapan API ke nama domain kustom. Ini mengirimkan lalu lintas ke Anda APIs melalui nama domain kustom Anda.

Pemetaan API menentukan API, tahap, dan jalur opsional yang akan digunakan untuk pemetaan. Misalnya, Anda dapat `https://api.example.com/orders` memetakan ke `production` tahap API.

Anda dapat memetakan tahap HTTP dan REST API ke nama domain kustom yang sama.

Sebelum membuat pemetaan API, Anda harus memiliki API, panggung, dan nama domain khusus. Untuk mempelajari selengkapnya tentang membuat nama domain kustom, lihat[Siapkan nama domain kustom Regional di API Gateway](apigateway-regional-api-custom-domain-create.md).

## Permintaan masuk ke nama domain kustom Anda
<a name="rest-api-mappings-incoming-requests"></a>

Saat Anda memetakan nama domain kustom ke tahap API Anda, API Gateway menghapus jalur dasar yang masuk. Ini menghapus jalur dasar yang dipetakan dari pemanggilan ke API. Misalnya, jika pemetaan jalur dasar Anda `https://api.example.com/orders/shop/5` ke `test` panggung, dan Anda menggunakan permintaan berikut`https://api.example.com/orders/shop/5/hats`, API Gateway akan memanggil `/hats` sumber daya `test` tahap API Anda, bukan sumber daya. `orders/shop/5/hats`

## Memetakan permintaan API
<a name="rest-api-mappings-evalutation"></a>

Berikut ini menjelaskan bagaimana API Gateway mengevaluasi pemetaan API.

Anda dapat membuat pemetaan API menggunakan pemetaan tingkat tunggal, seperti pemetaan API dari `orders` `beta` tahap API dan pemetaan API dari `shipping` tahap API. `alpha` Untuk nama domain kustom Regional dengan kebijakan keamanan TLS 1.2, API Gateway mendukung pemetaan API multi-level. Anda dapat membuat pemetaan API dari `orders/v1/items` `alpha` tahap API dan `orders/v2/items` ke `beta` tahap API. Saat Anda membuat pemetaan dengan beberapa level, API Gateway mengirimkan permintaan ke pemetaan API yang memiliki jalur pencocokan terpanjang.

Anda dapat membuat pemetaan API ke jalur `(none)` kosong. Jika tidak ada jalur yang cocok dengan permintaan, API Gateway mengirimkan permintaan ke jalur kosong`(none)`.

Dalam contoh ini, nama domain kustom `https://api.example.com` memiliki pemetaan API berikut.


|  Pemetaan API  |  API yang dipilih  | 
| --- | --- | 
|  `(none)`  |   API 1   | 
|   `orders`   |   API 2   | 
|  `orders/v1/items`  |   API 3   | 
|  `orders/v2/items`  |   API 4   | 
|  `orders/v1/items/categories`  |   API 5   | 

Tabel berikut menunjukkan bagaimana API Gateway menerapkan pemetaan API sebelumnya ke permintaan contoh.


| Permintaan | API yang dipilih | Penjelasan | 
| --- | --- | --- | 
|  `https://api.example.com/orders`  |  API 2  |  Permintaan sama persis dengan pemetaan API ini.  | 
|  `https://api.example.com/orders/v1/items`  |  API 3  |  Permintaan sama persis dengan pemetaan API ini.  | 
|  `https://api.example.com/orders/v2/items`  |  API 4  |  Permintaan sama persis dengan pemetaan API ini.  | 
|  `https://api.example.com/orders/v1/items/123`  |  API 3  |  API Gateway memilih pemetaan yang memiliki jalur pencocokan terpanjang. `123`Pada akhir permintaan tidak mempengaruhi pemilihan. Lihat [Permintaan masuk ke nama domain kustom Anda](#rest-api-mappings-incoming-requests).  | 
|  `https://api.example.com/orders/v2/items/categories/5`  |  API 5  |  API Gateway memilih pemetaan yang memiliki jalur pencocokan terpanjang.  | 
|  `https://api.example.com/customers`  |  API 1  |  API Gateway menggunakan pemetaan kosong sebagai tangkapan semua.  | 
|  `https://api.example.com/ordersandmore`  |  API 2  |  API Gateway memilih pemetaan yang memiliki awalan pencocokan terpanjang. Untuk nama domain khusus yang dikonfigurasi dengan pemetaan tingkat tunggal, seperti hanya `https://api.example.com/orders` dan, API `https://api.example.com/` Gateway akan memilih`API 1`, karena tidak ada jalur yang cocok dengannya. `ordersandmore`  | 

## Pembatasan
<a name="rest-api-mappings-restrictions"></a>
+ Dalam pemetaan API, nama domain khusus dan dipetakan APIs harus berada di akun yang sama AWS .
+ Pemetaan API harus hanya berisi huruf, angka, dan karakter berikut: `$-_.+!*'()/`
+ Panjang maksimum jalur dalam pemetaan API adalah 300 karakter.
+ Anda dapat memiliki 200 pemetaan API dengan beberapa level untuk setiap nama domain. Batas ini tidak termasuk pemetaan API dengan level tunggal, seperti`/prod`.
+ Anda hanya dapat memetakan HTTP APIs ke nama domain kustom regional dengan kebijakan keamanan TLS 1.2.
+ Anda tidak dapat memetakan WebSocket APIs ke nama domain kustom yang sama dengan HTTP API atau REST API.
+ Setelah membuat pemetaan API, Anda harus membuat atau memperbarui catatan sumber daya penyedia DNS untuk dipetakan ke titik akhir API Anda.
+ Jika Anda membuat pemetaan API dengan beberapa level, API Gateway mengonversi semua nama header menjadi huruf kecil.

## Buat pemetaan API
<a name="rest-api-mappings-examples"></a>

Untuk membuat pemetaan API, Anda harus terlebih dahulu membuat nama domain kustom, API, dan stage. Nama domain kustom Anda harus memiliki mode routing yang disetel ke salah satu `ROUTING_RULE_THEN_API_MAPPING` atau`API_MAPPING_ONLY`. Untuk informasi tentang cara mengatur mode perutean, lihat[Mengatur mode routing untuk nama domain kustom Anda](set-routing-mode.md).

Misalnya AWS Serverless Application Model template yang membuat semua sumber daya, lihat [Sessions With SAM](https://github.com/aws-samples/sessions-with-aws-sam/tree/master/custom-domains) on GitHub.

------
#### [ Konsol Manajemen AWS ]

1. Masuk ke konsol API Gateway di [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Pilih **Nama domain khusus** dari panel navigasi utama. 

1. Pilih nama domain khusus.

1. Pada tab **Routing details**, pilih **Configure API mappings**.

1. Masukkan **API**, **Stage**, dan **Path** untuk pemetaan.

1. Pilih **Simpan**.

------
#### [ AWS CLI ]

[create-api-mapping](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-api-mapping.html)Perintah berikut membuat pemetaan API. Dalam contoh ini, API Gateway mengirimkan permintaan `api.example.com/v1/orders` ke API dan tahap yang ditentukan.

**catatan**  
Untuk membuat pemetaan API dengan beberapa level, Anda harus menggunakan. `apigatewayv2`

```
aws apigatewayv2 create-api-mapping \
    --domain-name api.example.com \
    --api-mapping-key v1/orders \
    --api-id a1b2c3d4 \
    --stage test
```

------
#### [ CloudFormation ]

 CloudFormation Contoh berikut membuat pemetaan API.

**catatan**  
Untuk membuat pemetaan API dengan beberapa level, Anda harus menggunakan. `AWS::ApiGatewayV2`

```
MyApiMapping:
  Type: 'AWS::ApiGatewayV2::ApiMapping'
  Properties:
    DomainName: api.example.com
    ApiMappingKey: 'orders/v2/items'
    ApiId: !Ref MyApi
    Stage: !Ref MyStage
```

------

# Jenis alamat IP untuk nama domain kustom di API Gateway
<a name="rest-custom-domain-ip-address-type"></a>

Saat Anda membuat nama domain khusus, Anda menentukan jenis alamat IP yang dapat memanggil domain Anda. Anda dapat memilih IPv4 untuk menyelesaikan IPv4 alamat untuk memanggil domain Anda, atau Anda dapat memilih dualstack untuk mengizinkan keduanya IPv4 dan IPv6 alamat memanggil domain Anda. Kami menyarankan Anda mengatur jenis alamat IP ke dualstack untuk mengurangi kelelahan ruang IP atau untuk postur keamanan Anda. [Untuk informasi selengkapnya tentang manfaat dari jenis alamat IP dualstack, lihat IPv6 di. AWS](https://docs.aws.amazon.com/whitepapers/latest/ipv6-on-aws/internet-protocol-version-6.html)

Anda dapat mengubah jenis alamat IP dengan memperbarui konfigurasi titik akhir nama domain Anda.

## Pertimbangan untuk jenis alamat IP
<a name="api-gateway-ip-address-type-considerations"></a>

Pertimbangan berikut dapat memengaruhi penggunaan jenis alamat IP Anda.
+ Jenis alamat IP default untuk nama domain kustom API Gateway untuk publik APIs adalah IPv4.
+ Nama domain kustom pribadi hanya dapat memiliki tipe alamat IP dualstack.
+ Nama domain kustom Anda tidak perlu memiliki jenis alamat IP yang sama untuk semua yang APIs dipetakan ke sana. Jika Anda menonaktifkan titik akhir API default, hal ini dapat memengaruhi cara penelepon dapat memanggil domain Anda.

## Mengubah jenis alamat IP dari nama domain kustom
<a name="rest-custom-domain-ip-address-type-change"></a>

Anda dapat mengubah jenis alamat IP dengan memperbarui konfigurasi titik akhir nama domain. Anda dapat memperbarui konfigurasi titik akhir dengan menggunakan Konsol Manajemen AWS,, AWS CLI CloudFormation, atau AWS SDK.

------
#### [ Konsol Manajemen AWS ]

**Untuk mengubah jenis alamat IP dari nama domain kustom**

1. Masuk ke konsol API Gateway di [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Pilih nama domain kustom publik.

1. Pilih **konfigurasi Endpoint**.

1. Untuk jenis alamat IP, pilih salah satu **IPv4**atau **Dualstack**.

1. Pilih **Simpan**.

------
#### [ AWS CLI ]

[update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)Perintah berikut memperbarui API untuk memiliki tipe alamat IP dualstack:

```
aws apigateway update-domain-name \
    --domain-name dualstack.example.com \
    --patch-operations "op='replace',path='/endpointConfiguration/ipAddressType',value='dualstack'"
```

Outputnya akan terlihat seperti berikut:

```
{
    "domainName": "dualstack.example.com",
    "certificateUploadDate": "2025-02-04T14:46:10-08:00",
    "regionalDomainName": "d-abcd1234.execute-api.us-east-1.amazonaws.com",
    "regionalHostedZoneId": "Z3LQWSYCGH4ADY",
    "regionalCertificateArn": "arn:aws:acm:us-east-1:111122223333:certificate/a1b2c3d4-5678-90ab-cdef",
    "endpointConfiguration": {
        "types": [
            "REGIONAL"
        ],
        "ipAddressType": "dualstack"
    },
    "domainNameStatus": "AVAILABLE",
    "securityPolicy": "TLS_1_2",
    "tags": {}
}
```

------

# Pilih kebijakan keamanan untuk domain kustom Anda di API Gateway
<a name="apigateway-custom-domain-tls-version"></a>

*Kebijakan keamanan* adalah kombinasi standar dari versi TLS minimum dan cipher suite yang ditawarkan oleh API Gateway. Saat klien Anda membuat handshake TLS ke API atau nama domain kustom Anda, kebijakan keamanan memberlakukan versi TLS dan cipher suite yang diterima oleh API Gateway. Kebijakan keamanan melindungi nama domain Anda APIs dan kustom dari masalah keamanan jaringan seperti gangguan dan penyadapan antara klien dan server.

API Gateway mendukung kebijakan keamanan lama dan kebijakan keamanan yang ditingkatkan. `TLS_1_0`dan `TLS_1_2` merupakan kebijakan keamanan warisan. Gunakan kebijakan keamanan ini untuk beban kerja umum, atau untuk mulai membuat API. Kebijakan apa pun yang dimulai `SecurityPolicy_` adalah kebijakan keamanan yang ditingkatkan. Gunakan kebijakan ini untuk beban kerja yang diatur, tata kelola lanjutan, atau untuk menggunakan kriptografi pascakuantum. Jika Anda menggunakan kebijakan keamanan yang ditingkatkan, Anda juga harus menetapkan mode akses titik akhir untuk tata kelola tambahan. Untuk informasi selengkapnya, lihat [Mode akses titik akhir](apigateway-security-policies.md#apigateway-security-policies-endpoint-access-mode).

## Pertimbangan
<a name="apigateway-custom-domain-tls-version-considerations"></a>

Berikut ini adalah pertimbangan untuk kebijakan keamanan untuk nama domain kustom untuk REST APIs di API Gateway:
+ Anda tidak dapat mengaktifkan TLS timbal balik pada nama domain yang menggunakan kebijakan keamanan yang disempurnakan.
+ Anda tidak dapat memetakan API HTTP ke nama domain yang menggunakan kebijakan keamanan yang disempurnakan.
+ Jika Anda mengaktifkan pemetaan jalur dasar multi-level ke REST API yang menggunakan kebijakan keamanan yang disempurnakan, Anda tidak dapat membuat pemetaan jalur dasar ke API HTTP untuk nama domain yang sama.
+ API Anda dapat dipetakan ke nama domain khusus dengan kebijakan keamanan yang berbeda dari API Anda. Saat Anda memanggil nama domain kustom tersebut, API Gateway menggunakan kebijakan keamanan API untuk menegosiasikan jabat tangan TLS. Jika Anda menonaktifkan titik akhir API default, hal ini dapat memengaruhi cara penelepon dapat menjalankan API Anda.
+ API Gateway mendukung kebijakan keamanan pada semua APIs. Namun, Anda hanya dapat memilih kebijakan keamanan untuk REST APIs. API Gateway hanya mendukung kebijakan `TLS_1_2` keamanan untuk HTTP atau WebSocket APIs.
+ API Gateway tidak mendukung pembaruan kebijakan keamanan untuk nama domain dengan beberapa tipe titik akhir. Jika Anda memiliki beberapa jenis titik akhir untuk nama domain, hapus salah satunya untuk memperbarui kebijakan keamanan.

## Bagaimana API Gateway menerapkan kebijakan keamanan
<a name="apigateway-custom-domain-tls-version-understanding"></a>

Contoh berikut menunjukkan bagaimana API Gateway menerapkan kebijakan keamanan menggunakan kebijakan `SecurityPolicy_TLS13_1_3_2025_09` keamanan sebagai contoh.

Kebijakan `SecurityPolicy_TLS13_1_3_2025_09` keamanan menerima lalu lintas TLS 1.3 dan menolak lalu lintas TLS 1.2 dan TLS 1.0. Untuk lalu lintas TLS 1.3, kebijakan keamanan menerima rangkaian sandi berikut:
+ `TLS_AES_128_GCM_SHA256`
+ `TLS_AES_256_GCM_SHA384`
+ `TLS_CHACHA20_POLY1305_SHA256`

API Gateway tidak menerima cipher suite lainnya. Misalnya, kebijakan keamanan akan menolak lalu lintas TLS 1.3 yang menggunakan `AES128-SHA` cipher suite.

Untuk memantau protokol TLS dan cipher klien yang digunakan untuk mengakses API Gateway Anda, Anda dapat menggunakan variabel `$context.tlsVersion` dan `$context.cipherSuite` konteks dalam log akses Anda. Untuk informasi selengkapnya, lihat [Pantau REST APIs di API Gateway](rest-api-monitor.md).

Untuk melihat kebijakan keamanan default untuk semua REST APIs dan nama domain kustom, lihat[Kebijakan keamanan default](apigateway-security-policies-list.md#apigateway-security-policies-default). Untuk melihat kebijakan keamanan yang didukung untuk semua REST APIs dan nama domain kustom, lihat[Kebijakan keamanan yang didukung](apigateway-security-policies-list.md).

## Ubah kebijakan keamanan nama domain kustom Anda
<a name="apigateway-security-policies-update-custom-domain-name"></a>

Jika Anda mengubah kebijakan keamanan Anda, dibutuhkan sekitar 15 menit untuk pembaruan selesai. Anda dapat memantau `lastUpdateStatus` nama domain kustom Anda. Saat nama domain kustom Anda diperbarui, `lastUpdateStatus` adalah `PENDING` dan ketika selesai, itu akan terjadi`AVAILABLE`.

Saat Anda menggunakan kebijakan keamanan yang dimulai`SecurityPolicy_`, Anda juga harus mengaktifkan mode akses titik akhir. Untuk informasi selengkapnya, lihat [Mode akses titik akhir](apigateway-security-policies.md#apigateway-security-policies-endpoint-access-mode).

------
#### [ Konsol Manajemen AWS ]

**Untuk mengubah kebijakan keamanan nama domain kustom**

1. Masuk ke konsol API Gateway di [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Pilih nama domain khusus yang mengirimkan lalu lintas ke REST APIs.

   Pastikan hanya ada satu jenis endpoint yang terkait dengan nama domain kustom Anda.

1. Pilih **Pengaturan nama domain khusus**, lalu pilih **Edit**.

1. Untuk **kebijakan Keamanan**, pilih kebijakan baru.

1. Untuk **mode akses Endpoint**, pilih **Strict**.

1. Pilih **Simpan perubahan**.

------
#### [ AWS CLI ]

[update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)Perintah berikut memperbarui nama domain untuk menggunakan kebijakan `SecurityPolicy_TLS13_1_3_2025_09` keamanan:

```
aws apigateway update-domain-name \
    --domain-name example.com \
    --patch-operations '[
        {
            "op": "replace",
            "path": "/securityPolicy",
            "value": "SecurityPolicy_TLS13_1_3_2025_09"
        }, 
        {
            "op": "replace",
            "path": "/endpointAccessMode",
            "value": "STRICT"
        }
    ]'
```

Outputnya akan terlihat seperti berikut:

```
{
   "domainName": "example.com",
   "endpointConfiguration": { 
      "types": [ "REGIONAL" ], 
      "ipAddressType": "dualstack" 
   },
   "regionalCertificateArn": "arn:aws:acm:us-west-2:111122223333:certificate/a1b2c3d4-5678-90ab-cdef",
   "securityPolicy": "SecurityPolicy_TLS13_1_3_2025_09",
   "endpointAccessMode": "STRICT"
}
```

------

## Informasi tentang HTTP APIs dan WebSocket APIs
<a name="apigateway-rest-additional-apis"></a>

Untuk informasi lebih lanjut tentang HTTP APIs dan WebSocket APIs, lihat [Kebijakan keamanan untuk HTTP APIs di API Gateway](http-api-ciphers.md) dan[Kebijakan keamanan untuk WebSocket APIs di API Gateway](websocket-api-ciphers.md).

# Nonaktifkan titik akhir default untuk REST APIs
<a name="rest-api-disable-default-endpoint"></a>

Secara default, klien dapat memanggil API Anda dengan menggunakan `execute-api` titik akhir yang dihasilkan API Gateway untuk API Anda. Untuk memastikan bahwa klien dapat mengakses API Anda hanya dengan menggunakan nama domain khusus, nonaktifkan `execute-api` titik akhir default. Klien masih dapat terhubung ke titik akhir default Anda, tetapi mereka akan menerima kode `403 Forbidden` status. Menonaktifkan titik akhir default memengaruhi semua tahapan API. Pengaturan ini akan berpengaruh saat Anda memperbarui pengaturan apa pun pada tahap apa pun, seperti memperbarui penerapan di panggung.

Prosedur berikut menunjukkan cara menonaktifkan titik akhir default untuk REST API.

------
#### [ Konsol Manajemen AWS ]

1. Masuk ke konsol API Gateway di [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Pilih REST API.

1. Pada panel navigasi utama, pilih **pengaturan API**.

1. Pilih API.

1. Pada **detail API**, pilih **Edit**.

1. Untuk **titik akhir Default**, pilih **Tidak** Aktif.

1. Pilih **Simpan perubahan**.

1. Pada panel navigasi utama, pilih **Resources**.

1. Pilih **Deploy API**.

1. Menerapkan ulang API Anda ke panggung atau perbarui setelan apa pun di panggung agar pembaruan diterapkan.

------
#### [ AWS CLI ]

[update-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-rest-api.html)Perintah berikut menonaktifkan titik akhir default: 

```
aws apigateway update-rest-api \
    --rest-api-id abcdef123 \
    --patch-operations op=replace,path=/disableExecuteApiEndpoint,value='True'
```

Setelah menonaktifkan titik akhir default, Anda harus menerapkan API agar perubahan diterapkan.

Perintah [create-deployment berikut membuat deployment](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-deployment.html) dan mengaitkannya dengan tahapan:

```
aws apigateway create-deployment \
    --rest-api-id abcdef123 \
    --stage-name dev
```

------

# Konfigurasikan pemeriksaan kesehatan khusus untuk failover DNS untuk API Gateway API
<a name="dns-failover"></a>

Anda dapat menggunakan pemeriksaan kesehatan Amazon Route 53 untuk mengontrol failover DNS dari API Gateway API di primer Wilayah AWS ke salah satu di Wilayah sekunder. Ini dapat membantu mengurangi dampak jika terjadi masalah Regional. Jika Anda menggunakan domain kustom, Anda dapat melakukan failover tanpa mengharuskan klien untuk mengubah titik akhir API.

Bila Anda memilih [Evaluasi Kesehatan Target](https://docs.aws.amazon.com/Route53/latest/APIReference/API_AliasTarget.html#Route53-Type-AliasTarget-EvaluateTargetHealth>Evaluate Target Health) untuk catatan alias, catatan tersebut gagal hanya jika layanan API Gateway tidak tersedia di Wilayah. Dalam beberapa kasus, API Gateway Anda sendiri APIs dapat mengalami gangguan sebelum waktu itu. Untuk mengontrol failover DNS secara langsung, konfigurasikan pemeriksaan kesehatan Route 53 kustom untuk API Gateway Anda. APIs Untuk contoh ini, Anda menggunakan CloudWatch alarm yang membantu operator mengontrol failover DNS. Untuk lebih banyak contoh dan pertimbangan lain saat Anda mengonfigurasi failover, lihat [Membuat Mekanisme Pemulihan Bencana Menggunakan Rute 53](https://aws.amazon.com/blogs/networking-and-content-delivery/creating-disaster-recovery-mechanisms-using-amazon-route-53/) dan [Melakukan pemeriksaan kesehatan Route 53 pada sumber daya pribadi di VPC](https://aws.amazon.com/blogs/networking-and-content-delivery/performing-route-53-health-checks-on-private-resources-in-a-vpc-with-aws-lambda-and-amazon-cloudwatch/) dengan dan. AWS Lambda CloudWatch

**Topics**
+ [Prasyarat](#dns-failover-prereqs)
+ [Langkah 1: Siapkan sumber daya](#dns-failover-intial-setup)
+ [Langkah 2: Memulai failover ke Wilayah sekunder](#dns-failover-initiate)
+ [Langkah 3: Uji failover](#dns-failover-test)
+ [Langkah 4: Kembali ke wilayah utama](#dns-failover-return)
+ [Langkah selanjutnya: Sesuaikan dan uji secara teratur](#dns-failover-next-steps)

## Prasyarat
<a name="dns-failover-prereqs"></a>

Untuk menyelesaikan prosedur ini, Anda harus membuat dan mengonfigurasi sumber daya berikut:
+ Nama domain yang Anda miliki.
+ Sertifikat ACM untuk nama domain itu menjadi dua Wilayah AWS. Untuk info lebih lanjut, lihat[Prasyarat untuk nama domain khusus](how-to-custom-domains.md#how-to-custom-domains-prerequisites).
+ Zona yang dihosting Route 53 untuk nama domain Anda. Untuk informasi selengkapnya, lihat [Bekerja dengan zona yang dihosting](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-working-with.html) di Panduan Pengembang Amazon Route 53.

Untuk informasi selengkapnya tentang cara membuat catatan DNS failover Route 53 untuk nama domain, lihat [Memilih kebijakan perutean](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html) di Panduan Pengembang Amazon Route 53. Untuk informasi selengkapnya tentang cara memantau CloudWatch alarm, lihat [Memantau CloudWatch alarm](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/health-checks-creating-values.html#health-checks-creating-values-cloudwatch) di Panduan Pengembang Amazon Route 53.

## Langkah 1: Siapkan sumber daya
<a name="dns-failover-intial-setup"></a>

Dalam contoh ini, Anda membuat sumber daya berikut untuk mengonfigurasi failover DNS untuk nama domain Anda:
+ API Gateway APIs menjadi dua Wilayah AWS
+ API Gateway nama domain kustom dengan nama yang sama dalam dua Wilayah AWS
+ Pemetaan API Gateway API yang menghubungkan API Gateway Anda APIs ke nama domain khusus
+ Route 53 catatan DNS failover untuk nama domain
+  CloudWatch Alarm di Wilayah sekunder
+ Pemeriksaan kesehatan Rute 53 berdasarkan CloudWatch alarm di Wilayah sekunder

Pertama, pastikan Anda memiliki semua sumber daya yang diperlukan di Wilayah primer dan sekunder. Wilayah sekunder harus berisi alarm dan pemeriksaan kesehatan. Dengan cara ini, Anda tidak bergantung pada Wilayah utama untuk melakukan failover. Misalnya CloudFormation template yang membuat sumber daya ini, lihat [samples/primary.zip](samples/primary.zip)dan [samples/secondary.zip](samples/secondary.zip).

**penting**  
Sebelum failover ke Wilayah sekunder, pastikan bahwa semua sumber daya yang diperlukan tersedia. Jika tidak, API Anda tidak akan siap untuk lalu lintas di Wilayah sekunder. 

## Langkah 2: Memulai failover ke Wilayah sekunder
<a name="dns-failover-initiate"></a>

Dalam contoh berikut, Region siaga menerima CloudWatch metrik dan memulai failover. Kami menggunakan metrik khusus yang memerlukan intervensi operator untuk memulai failover.

```
aws cloudwatch put-metric-data \
    --metric-name Failover \
    --namespace HealthCheck \
    --unit Count \
    --value 1 \
    --region us-west-1
```

Ganti data metrik dengan data yang sesuai untuk CloudWatch alarm yang Anda konfigurasikan.

## Langkah 3: Uji failover
<a name="dns-failover-test"></a>

Panggil API Anda dan verifikasi bahwa Anda mendapatkan respons dari Wilayah sekunder. Jika Anda menggunakan contoh templat di langkah 1, respons berubah dari `{"message": "Hello from the primary Region!"}` ke `{"message": "Hello from the secondary Region!"}` setelah failover.

```
curl https://my-api.example.com

{"message": "Hello from the secondary Region!"}
```

## Langkah 4: Kembali ke wilayah utama
<a name="dns-failover-return"></a>

Untuk kembali ke Wilayah utama, kirim CloudWatch metrik yang menyebabkan pemeriksaan kesehatan lulus.

```
aws cloudwatch put-metric-data \
    --metric-name Failover \
    --namespace HealthCheck \
    --unit Count \
    --value 0 \
    --region us-west-1
```

Ganti data metrik dengan data yang sesuai untuk CloudWatch alarm yang Anda konfigurasikan.

Panggil API Anda dan verifikasi bahwa Anda mendapatkan respons dari Wilayah utama. Jika Anda menggunakan contoh templat di langkah 1, respons berubah dari `{"message": "Hello from the secondary Region!"}` ke`{"message": "Hello from the primary Region!"}`.

```
curl https://my-api.example.com

{"message": "Hello from the primary Region!"}
```

## Langkah selanjutnya: Sesuaikan dan uji secara teratur
<a name="dns-failover-next-steps"></a>

Contoh ini menunjukkan salah satu cara untuk mengkonfigurasi failover DNS. Anda dapat menggunakan berbagai CloudWatch metrik atau titik akhir HTTP untuk pemeriksaan kesehatan yang mengelola failover. Uji mekanisme failover Anda secara teratur untuk memastikan bahwa mereka bekerja seperti yang diharapkan, dan operator terbiasa dengan prosedur failover Anda.