

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

# Publikasikan WebSocket APIs untuk pelanggan untuk dipanggil
<a name="websocket-api-publish"></a>

Cukup membuat dan mengembangkan API Gateway API tidak secara otomatis membuatnya dapat dipanggil oleh pengguna Anda. Untuk membuatnya dapat dipanggil, Anda harus menerapkan API Anda ke sebuah panggung. Selain itu, Anda mungkin ingin menyesuaikan URL yang akan digunakan pengguna Anda untuk mengakses API Anda. Anda dapat memberikan domain yang konsisten dengan merek Anda atau lebih mudah diingat daripada URL default untuk API Anda.

Di bagian ini, Anda dapat mempelajari cara menerapkan API dan menyesuaikan URL yang Anda berikan kepada pengguna untuk mengaksesnya. 

**catatan**  
Untuk meningkatkan keamanan API Gateway Anda APIs, `execute-api.{region}.amazonaws.com` domain terdaftar di [Daftar Akhiran Publik (PSL](https://publicsuffix.org/)). Untuk keamanan lebih lanjut, kami menyarankan Anda menggunakan cookie dengan `__Host-` awalan jika Anda perlu mengatur cookie sensitif di nama domain default untuk API Gateway APIs Anda. Praktik ini akan membantu mempertahankan domain Anda dari upaya pemalsuan permintaan lintas situs (CSRF). Untuk informasi selengkapnya, lihat halaman [Set-Cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#cookie_prefixes) di Jaringan Pengembang Mozilla.

**Topics**
+ [Buat tahapan untuk WebSocket APIs di API Gateway](websocket-api-stages.md)
+ [Terapkan WebSocket APIs di API Gateway](apigateway-set-up-websocket-deployment.md)
+ [Kebijakan keamanan untuk WebSocket APIs di API Gateway](websocket-api-ciphers.md)
+ [Nama domain khusus untuk WebSocket APIs di API Gateway](websocket-api-custom-domain-names.md)

# Buat tahapan untuk WebSocket APIs di API Gateway
<a name="websocket-api-stages"></a>

Tahap API adalah referensi logis ke status siklus hidup API Anda (misalnya,,, `dev` `prod``beta`, atau`v2`). Tahapan API diidentifikasi oleh ID API dan nama stage mereka, dan mereka disertakan dalam URL yang Anda gunakan untuk memanggil API. Setiap tahap adalah referensi bernama untuk deployment API dan dibuat tersedia bagi aplikasi klien untuk dipanggil.

Deployment adalah snapshot dari konfigurasi API Anda. Setelah Anda menerapkan API ke tahap, itu tersedia bagi klien untuk dipanggil. Anda harus menerapkan API agar perubahan diterapkan.

## Variabel tahap
<a name="websocket-api-stages.stage-variables"></a>

Variabel tahap adalah pasangan nilai kunci yang dapat Anda tentukan untuk tahap API. WebSocket Mereka bertindak seperti variabel lingkungan dan dapat digunakan dalam pengaturan API Anda.

Misalnya, Anda dapat menentukan variabel tahap, dan kemudian menetapkan nilainya sebagai titik akhir HTTP untuk integrasi proxy HTTP. Kemudian, Anda dapat mereferensikan titik akhir dengan menggunakan nama variabel tahap terkait. Dengan melakukan ini, Anda dapat menggunakan penyiapan API yang sama dengan titik akhir yang berbeda di setiap tahap. Demikian pula, Anda dapat menggunakan variabel tahap untuk menentukan integrasi AWS Lambda fungsi yang berbeda untuk setiap tahap API Anda.

**catatan**  
Variabel tahap tidak dimaksudkan untuk digunakan untuk data sensitif, seperti kredensional. Untuk meneruskan data sensitif ke integrasi, gunakan AWS Lambda otorisasi. Anda dapat meneruskan data sensitif ke integrasi dalam output otorisasi Lambda. Untuk mempelajari selengkapnya, lihat [Format respons otorisasi Lambda](http-api-lambda-authorizer.md#http-api-lambda-authorizer.payload-format-response).

### Contoh
<a name="websocket-api-stages.stage-variables-examples"></a>

Untuk menggunakan variabel tahap untuk menyesuaikan titik akhir integrasi HTTP, Anda harus terlebih dahulu mengatur nama dan nilai variabel tahap (misalnya,`url`) dengan nilai`example.com`. Selanjutnya, siapkan integrasi proxy HTTP. Alih-alih memasukkan URL titik akhir, Anda dapat memberi tahu API Gateway untuk menggunakan nilai variabel stage,**http://\$1\$1stageVariables.url\$1**. Nilai ini memberi tahu API Gateway untuk mengganti variabel stage Anda `${}` saat runtime, tergantung pada tahap API Anda. 

Anda dapat mereferensikan variabel tahap dengan cara yang sama untuk menentukan nama fungsi Lambda atau peran AWS ARN.

Saat menentukan nama fungsi Lambda sebagai nilai variabel tahap, Anda harus mengonfigurasi izin pada fungsi Lambda secara manual. Perintah [add-permission](https://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html) berikut menambahkan izin yang diperlukan:

```
aws lambda add-permission --function-name arn:aws:lambda:XXXXXX:your-lambda-function-name --source-arn arn:aws:execute-api:us-east-1:YOUR_ACCOUNT_ID:api_id/*/HTTP_METHOD/resource --principal apigateway.amazonaws.com --statement-id apigateway-access --action lambda:InvokeFunction
```

## Referensi variabel tahap API Gateway
<a name="websocket-api-stages.stage-variables-reference"></a>

### Integrasi HTTP URIs
<a name="websocket-api-stages.stage-variables-in-integration-HTTP-uris"></a>

Anda dapat menggunakan variabel tahap sebagai bagian dari URI integrasi HTTP, seperti yang ditunjukkan pada contoh berikut.
+ URI lengkap tanpa protokol — `http://${stageVariables.<variable_name>}`
+ Domain lengkap — `http://${stageVariables.<variable_name>}/resource/operation`
+ Sebuah subdomain — `http://${stageVariables.<variable_name>}.example.com/resource/operation`
+ Sebuah jalan — `http://example.com/${stageVariables.<variable_name>}/bar`
+ Sebuah string kueri - `http://example.com/foo?q=${stageVariables.<variable_name>}` 

### Fungsi Lambda
<a name="websocket-api-stages.stage-variables-in-integration-lambda-functions"></a>

 Anda dapat menggunakan variabel tahap di tempat nama fungsi Lambda atau alias, seperti yang ditunjukkan dalam contoh berikut. 
+ `arn:aws:apigateway:<region>:lambda:path/2015-03-31/functions/arn:aws:lambda:<region>:<account_id>:function:${stageVariables.<function_variable_name>}/invocations`
+ `arn:aws:apigateway:<region>:lambda:path/2015-03-31/functions/arn:aws:lambda:<region>:<account_id>:function:<function_name>:${stageVariables.<version_variable_name>}/invocations`

**catatan**  
Untuk menggunakan variabel stage untuk fungsi Lambda, fungsi tersebut harus berada di akun yang sama dengan API. Variabel tahap tidak mendukung fungsi Lambda lintas akun.

### AWS kredensi integrasi
<a name="websocket-api-stages.stage-variables-in-integration-aws-credentials"></a>

 Anda dapat menggunakan variabel tahap sebagai bagian dari ARN kredensi AWS pengguna atau peran, seperti yang ditunjukkan pada contoh berikut. 
+  `arn:aws:iam::<account_id>:${stageVariables.<variable_name>}` 

# Terapkan WebSocket APIs di API Gateway
<a name="apigateway-set-up-websocket-deployment"></a>

 Setelah membuat WebSocket API Anda, Anda harus menerapkannya agar tersedia bagi pengguna Anda untuk dipanggil. 

[Untuk menerapkan API, Anda membuat [penerapan API](api-gateway-basic-concept.md#apigateway-definition-api-deployment) dan mengaitkannya dengan sebuah panggung.](api-gateway-basic-concept.md#apigateway-definition-api-stage) Setiap tahap adalah snapshot dari API dan tersedia untuk aplikasi klien untuk dipanggil. 

**penting**  
Setiap kali Anda memperbarui API, Anda harus menerapkannya kembali. Perubahan pada apa pun selain pengaturan tahap memerlukan pemindahan, termasuk modifikasi pada sumber daya berikut:  
Rute
Integrasi
Pengotorisasi
Secara default, Anda dibatasi hingga 10 tahap untuk setiap API. Kami menyarankan Anda menggunakan kembali tahapan untuk penerapan Anda. 

Untuk memanggil WebSocket API yang diterapkan, klien mengirim pesan ke URL API. URL ditentukan oleh nama host dan nama panggung API.

**catatan**  
API Gateway akan mendukung payload hingga 128 KB dengan ukuran frame maksimal 32 KB. Jika pesan melebihi 32 KB, itu harus dibagi menjadi beberapa frame, masing-masing 32 KB atau lebih kecil.

Menggunakan nama domain default API, URL (misalnya) WebSocket API dalam tahap tertentu (`{stageName}`) adalah dalam format berikut:

```
wss://{api-id}.execute-api.{region}.amazonaws.com/{stageName}
```

Untuk membuat URL WebSocket API lebih user-friendly, Anda dapat membuat nama domain kustom (misalnya,`api.example.com`) untuk mengganti nama host default API. Proses konfigurasi sama dengan REST APIs. Untuk informasi selengkapnya, lihat [Nama domain khusus untuk REST publik APIs di API Gateway](how-to-custom-domains.md).

Tahapan memungkinkan kontrol versi yang kuat dari API Anda. Misalnya, Anda dapat menerapkan API ke `test` stage dan `prod` stage, dan menggunakan `test` stage sebagai test build dan menggunakan `prod` stage sebagai build stabil. Setelah pembaruan lulus tes, Anda dapat mempromosikan `test` panggung ke `prod` panggung. Promosi dapat dilakukan dengan memindahkan API ke panggung. `prod` Untuk detail lebih lanjut tentang tahapan, lihat[Siapkan panggung untuk REST API di API Gateway](set-up-stages.md).

**Topics**
+ [Membuat penerapan WebSocket API menggunakan AWS CLI](#apigateway-create-websocket-deployment-using-awscli)
+ [Membuat penerapan WebSocket API menggunakan konsol API Gateway](#apigateway-create-websocket-deployment-using-console)

## Membuat penerapan WebSocket API menggunakan AWS CLI
<a name="apigateway-create-websocket-deployment-using-awscli"></a>

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

```
aws apigatewayv2 --region us-east-1 create-deployment --api-id aabbccddee
```

Outputnya akan terlihat seperti berikut:

```
{
    "DeploymentId": "fedcba",
    "DeploymentStatus": "DEPLOYED",
    "CreatedDate": "2018-11-15T06:49:09Z"
}
```

API yang diterapkan tidak dapat dipanggil sampai Anda mengaitkan penerapan dengan tahapan. Anda dapat membuat tahap baru atau menggunakan kembali tahap yang telah Anda buat sebelumnya.

Perintah [create-stage](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-stage.html) berikut membuat tahap baru dan mengaitkannya dengan penerapan:

```
aws apigatewayv2 --region us-east-1 create-stage --api-id aabbccddee --deployment-id fedcba --stage-name test
```

Outputnya terlihat seperti berikut:

```
{
    "StageName": "test",
    "CreatedDate": "2018-11-15T06:50:28Z",
    "DeploymentId": "fedcba",
    "DefaultRouteSettings": {
        "MetricsEnabled": false,
        "ThrottlingBurstLimit": 5000,
        "DataTraceEnabled": false,
        "ThrottlingRateLimit": 10000.0
    },
    "LastUpdatedDate": "2018-11-15T06:50:28Z",
    "StageVariables": {},
    "RouteSettings": {}
}
```

Anda juga dapat menggunakan kembali tahap yang ada dengan memperbarui `deploymentId` properti stage dengan ID penerapan () *deployment-id* yang baru dibuat. Perintah [update-stage](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/update-stage.html) berikut memperbarui ID penyebaran tahap:

```
aws apigatewayv2 update-stage --region region \
    --api-id api-id \ 
    --stage-name stage-name \ 
    --deployment-id deployment-id
```

## Membuat penerapan WebSocket API menggunakan konsol API Gateway
<a name="apigateway-create-websocket-deployment-using-console"></a>

Untuk menggunakan konsol API Gateway untuk membuat penerapan WebSocket API:

1. Masuk ke konsol API Gateway dan pilih API.

1. Pilih **Deploy API**.

1. Pilih tahap yang diinginkan dari daftar dropdown atau masukkan nama tahap baru.

# Kebijakan keamanan untuk WebSocket APIs di API Gateway
<a name="websocket-api-ciphers"></a>

API Gateway memberlakukan kebijakan keamanan `TLS_1_2` untuk semua titik akhir WebSocket API.

*Kebijakan keamanan* adalah kombinasi standar dari versi TLS minimum dan cipher suite yang ditawarkan oleh Amazon API Gateway. Protokol TLS mengatasi masalah keamanan jaringan seperti gangguan dan penyadapan antara klien dan server. Ketika klien Anda membuat jabat tangan TLS ke API Anda melalui domain kustom, kebijakan keamanan memberlakukan versi TLS dan pilihan cipher suite yang dapat dipilih klien Anda untuk digunakan. Kebijakan keamanan ini menerima lalu lintas TLS 1.2 dan TLS 1.3 dan menolak lalu lintas TLS 1.0.

## Protokol dan cipher TLS yang didukung untuk WebSocket APIs
<a name="websocket-api-custom-domain-ciphers-list"></a>

Tabel berikut menjelaskan protokol TLS yang didukung untuk. WebSocket APIs


| **Protokol TLS** | **Kebijakan keamanan TLS\$11\$12** | 
| --- | --- | 
| TLSv1.3 | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/success_icon.svg) Ya | 
| TLSv1.2 | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/success_icon.svg) Ya | 

Tabel berikut menjelaskan cipher TLS yang tersedia untuk kebijakan keamanan TLS 1\$12 untuk. WebSocket APIs


| **Cipher TLS** | **Kebijakan keamanan TLS\$11\$12** | 
| --- | --- | 
| TLS\$1AES\$1128\$1GCM\$1 SHA256 | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/success_icon.svg) Ya | 
| TLS\$1AES\$1256\$1GCM\$1 SHA384 | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/success_icon.svg) Ya | 
| TLS\$1 \$1 \$1 CHACHA20 POLY1305 SHA256 | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/success_icon.svg) Ya | 
| ECDHE-ECDSA- -GCM- AES128 SHA256 | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/success_icon.svg) Ya | 
| ECDHE-RSA- -GCM- AES128 SHA256 | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/success_icon.svg) Ya | 
| ECDHE-ECDSA- - AES128 SHA256 | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/success_icon.svg) Ya | 
| ECDHE-RSA- - AES128 SHA256 | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/success_icon.svg) Ya | 
| ECDHE-ECDSA- -GCM- AES256 SHA384 | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/success_icon.svg) Ya | 
| ECDHE-RSA- -GCM- AES256 SHA384 | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/success_icon.svg) Ya | 
| ECDHE-ECDSA- - AES256 SHA384 | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/success_icon.svg) Ya | 
| ECDHE-RSA- - AES256 SHA384 | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/success_icon.svg) Ya | 
| AES128-GCM- SHA256 | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/success_icon.svg) Ya | 
| AES128-SHA256 | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/success_icon.svg) Ya | 
| AES256-GCM- SHA384 | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/success_icon.svg) Ya | 
| AES256-SHA256 | ![\[alt text not found\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/success_icon.svg) Ya | 

## Nama sandi OpenSSL dan RFC
<a name="apigateway-secure-connections-openssl-rfc-cipher-names-websocket"></a>

OpenSSL dan IETF RFC 5246, menggunakan nama yang berbeda untuk cipher yang sama. Untuk daftar nama sandi, lihat. [Nama sandi OpenSSL dan RFC](apigateway-security-policies-list.md#apigateway-secure-connections-openssl-rfc-cipher-names)

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

Untuk informasi lebih lanjut tentang REST APIs dan HTTP APIs, lihat [Pilih kebijakan keamanan untuk domain kustom Anda di API Gateway](apigateway-custom-domain-tls-version.md) dan[Kebijakan keamanan untuk HTTP APIs di API Gateway](http-api-ciphers.md).

# Nama domain khusus untuk WebSocket APIs di API Gateway
<a name="websocket-api-custom-domain-names"></a>

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

Setelah menerapkan API Anda, Anda (dan pelanggan Anda) dapat memanggil 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 Region, 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
```

## Pertimbangan
<a name="websocket-api-custom-domain-names-considerations"></a>

Pertimbangan berikut dapat memengaruhi penggunaan nama domain kustom Anda.
+ Jika Anda memetakan nama domain kustom ke WebSocket API, Anda tidak dapat memetakannya ke REST API atau HTTP API.
+ Hanya nama domain kustom Regional yang didukung.
+ Untuk versi TLS minimum, hanya TLS 1.2 yang didukung.
+ Anda harus membuat atau memperbarui catatan sumber daya penyedia DNS Anda untuk dipetakan 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](http-api-custom-domain-names.md#http-wildcard-custom-domain-names).

## Prasyarat
<a name="websocket-api-custom-domain-names-prerequisites"></a>

Berikut ini adalah prasyarat untuk nama domain kustom.

### Daftarkan nama domain
<a name="websocket-api-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.

### Sertifikat untuk nama domain kustom
<a name="websocket-api-custom-domain-names-certificates"></a>

Sebelum menyiapkan nama domain khusus untuk API, Anda harus memiliki sertifikat SSL/TLS 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 badan SSL/TLS certificate, you must provide the PEM-formatted SSL/TLS sertifikat, 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 apa pun, 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="websocket-api-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.api.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`,, dan `b.example.com``c.example.com`, yang semuanya merutekan ke domain yang sama.

Nama domain kustom wildcard mendukung konfigurasi yang berbeda dari nama domain kustom standar API Gateway. Misalnya, dalam satu AWS akun, Anda dapat mengkonfigurasi `*.example.com` dan `a.example.com` berperilaku berbeda.

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="websocket-api-custom-domain-names-next-steps"></a>

Untuk menyiapkan nama domain kustom untuk API HTTP, Anda menggunakan dokumentasi dari bagian REST API dari Panduan Pengembang API Gateway. 

Pertama, tentukan sertifikat untuk nama domain kustom Anda. Untuk informasi selengkapnya, lihat [Siapkan sertifikat AWS Certificate Manager](how-to-specify-certificate-for-custom-domain-name.md). Selanjutnya, Anda membuat nama domain kustom Regional. Lihat informasi yang lebih lengkap di [Siapkan nama domain kustom Regional di API Gateway](apigateway-regional-api-custom-domain-create.md).

# Memetakan tahapan API ke nama domain khusus untuk WebSocket APIs
<a name="websocket-api-mappings"></a>

Anda menggunakan pemetaan API untuk menghubungkan tahapan API ke nama domain kustom. Setelah Anda membuat nama domain dan mengonfigurasi catatan DNS, Anda menggunakan pemetaan API untuk mengirim 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 memetakan `production` tahap API ke`wss://api.example.com/orders`.

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).

## Pembatasan
<a name="websocket-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 tidak dapat memetakan WebSocket APIs ke nama domain kustom yang sama dengan HTTP API atau REST API.
+ Jika Anda membuat pemetaan API dengan beberapa level, API Gateway mengonversi semua nama header menjadi huruf kecil.

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

Untuk membuat pemetaan API, Anda harus terlebih dahulu membuat nama domain kustom, API, dan stage. Untuk informasi tentang membuat nama domain kustom, lihat[Siapkan nama domain kustom Regional di API Gateway](apigateway-regional-api-custom-domain-create.md).

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

**Untuk membuat pemetaan API**

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. Pilih nama domain khusus yang telah Anda buat.

1. Pilih **pemetaan API**.

1. Pilih **Konfigurasi pemetaan API**.

1. Pilih **Tambahkan pemetaan baru**.

1. Masukkan **API**, **Stage**, dan secara opsional **Path**.

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` ke API dan tahap yang ditentukan.

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

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

 CloudFormation Contoh berikut membuat pemetaan API.

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

------

# Jenis alamat IP untuk nama domain khusus untuk WebSocket APIs
<a name="websocket-api-custom-domain-names-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)

## Pertimbangan untuk jenis alamat IP
<a name="websocket-api-custom-domain-names-ip-address-type-considerations"></a>

Pertimbangan berikut dapat memengaruhi penggunaan jenis alamat IP Anda.
+ Jenis alamat IP default untuk nama domain kustom API Gateway adalah IPv4.
+ 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 menjalankan API Anda.

## Mengubah jenis alamat IP dari nama domain kustom
<a name="websocket-api-custom-domain-names-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/apigatewayv2/update-domain-name.html)Perintah berikut memperbarui API untuk memiliki tipe alamat IP dualstack:

```
aws apigatewayv2 update-domain-name \
   --domain-name dualstack.example.com \
   --domain-name-configurations CertificateArn=arn:aws:acm:us-east-1:111122223333:certificate/abcd1234-5678-abc,IpAddressType=dualstack
```

Outputnya akan terlihat seperti berikut:

```
{
    "ApiMappingSelectionExpression": "$request.basepath",
    "DomainName": "dualstack.example.com",
    "DomainNameConfigurations": [
        {
            "ApiGatewayDomainName": "d-abcd1234.execute-api.us-east-1.amazonaws.com",
            "CertificateArn": "arn:aws:acm:us-east-1:111122223333:certificate/abcd1234-5678-abc",
            "DomainNameStatus": "AVAILABLE",
            "EndpointType": "REGIONAL",
            "HostedZoneId": "Z3LQWSYCGH4ADY",
            "SecurityPolicy": "TLS_1_2",
            "IpAddressType": "dualstack"
        }
    ],
    "Tags": {}
}
```

------

# Nonaktifkan titik akhir default untuk WebSocket APIs
<a name="websocket-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. Saat Anda menonaktifkan titik akhir default, itu memengaruhi semua tahapan API.

Prosedur berikut menunjukkan cara menonaktifkan titik akhir default untuk WebSocket 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 WebSocket API.

1. Pilih **setelan 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 **Rute**.

1. Pilih **Deploy**, lalu terapkan ulang API Anda atau buat tahap baru agar perubahan diterapkan.

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

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

```
aws apigatewayv2 update-api \
    --api-id abcdef123 \
    --disable-execute-api-endpoint
```

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

 AWS CLI Perintah berikut membuat penyebaran.

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

------