

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

# Mengkonfigurasi GraphQL menjalankan kompleksitas, kedalaman kueri, dan introspeksi dengan AWS AppSync
<a name="configuration-limits"></a>

AWS AppSync memungkinkan Anda untuk mengaktifkan atau menonaktifkan fitur introspeksi dan menetapkan batas jumlah level bersarang dan resolver dalam satu kueri.

## Menggunakan fitur introspeksi
<a name="configuration-limits-introspection"></a>

**Tip**  
[Untuk informasi lebih lanjut tentang introspeksi di GraphQL, lihat artikel ini di situs web GraphQL foundation.](https://graphql.org/learn/introspection/)

Secara default, GraphQL memungkinkan Anda menggunakan introspeksi untuk menanyakan skema itu sendiri untuk menemukan jenis, bidang, kueri, mutasi, langganan, dll. Ini adalah fitur penting untuk mempelajari bagaimana data dibentuk dan diproses oleh layanan GraphQL Anda. Namun, ada beberapa hal yang perlu dipertimbangkan ketika berhadapan dengan introspeksi. Anda mungkin memiliki kasus penggunaan yang akan mendapat manfaat dari introspeksi yang dinonaktifkan, seperti kasus di mana nama bidang mungkin sensitif atau tersembunyi atau skema API lengkap dimaksudkan untuk dibiarkan tidak terdokumentasi bagi konsumen. Dalam kasus ini, penerbitan data skema melalui introspeksi dapat mengakibatkan kebocoran data pribadi yang disengaja.

Untuk mencegah hal ini terjadi, Anda dapat menonaktifkan introspeksi. Ini akan mencegah pihak yang tidak berwenang menggunakan bidang introspeksi pada skema Anda. Namun, penting untuk dicatat bahwa introspeksi berguna bagi tim pengembangan untuk mempelajari bagaimana data dalam layanan mereka diproses. Secara internal, mungkin membantu untuk tetap mengaktifkan introspeksi saat menonaktifkannya dalam kode produksi sebagai lapisan keamanan tambahan. Cara lain untuk menangani ini adalah dengan menambahkan metode otorisasi, yang AWS AppSync juga menyediakan. Untuk informasi selengkapnya, lihat [otorisasi](https://docs.aws.amazon.com/appsync/latest/devguide/security-authz.html).

AWS AppSync memungkinkan Anda untuk mengaktifkan atau menonaktifkan introspeksi di tingkat API. Untuk mengaktifkan atau menonaktifkan introspeksi, lakukan hal berikut:

1. Masuk ke Konsol Manajemen AWS dan buka [AppSynckonsol](https://console.aws.amazon.com/appsync/).

1. Pada **APIs**halaman, pilih nama GraphQL API.

1. Di beranda API Anda, di panel navigasi, pilih **Pengaturan**.

1. Dalam **konfigurasi API**, pilih **Edit**.

1. Di bawah **kueri Introspeksi**, lakukan hal berikut:

   1. Mengaktifkan atau menonaktifkan **Aktifkan kueri introspeksi**.

1. Pilih **Simpan**.

Ketika introspeksi diaktifkan (perilaku default), menggunakan sistem introspeksi akan bekerja secara normal. Misalnya, gambar di bawah ini menunjukkan `__schema` bidang yang memproses semua jenis yang tersedia dalam skema:

![Editor kueri GraphQL MyQuery ditampilkan dengan introspeksi skema yang mengembalikan Query, String, Int, Schema, Type, dan tipe. TypeKind](http://docs.aws.amazon.com/id_id/appsync/latest/devguide/images/introspection-enabled.png)


Saat menonaktifkan fitur ini, kesalahan validasi akan muncul di respons sebagai gantinya:

![Editor kueri GraphQL menunjukkan kesalahan validasi untuk bidang tipe yang tidak ditentukan dalam skema.](http://docs.aws.amazon.com/id_id/appsync/latest/devguide/images/introspection-disabled.png)


## Mengkonfigurasi batas kedalaman kueri
<a name="configuration-limits-depth"></a>

Ada kalanya Anda mungkin menginginkan kontrol yang lebih terperinci atas bagaimana API berfungsi selama operasi. Salah satu kontrol tersebut adalah menambahkan batas jumlah level bersarang yang dapat diproses oleh kueri. Secara default, kueri dapat memproses tingkat bersarang dalam jumlah tak terbatas. Membatasi kueri ke jumlah level bersarang tertentu memiliki implikasi potensial terhadap kinerja dan fleksibilitas proyek Anda. Ambil kueri berikut:

```
query MyQuery {
  L1: nextLayer {
    L2: nextLayer {
      L3: nextLayer {
        L4: value
      }
    }
  }
}
```

Proyek Anda mungkin meminta untuk membatasi kueri untuk `L1` atau `L2` untuk beberapa tujuan. Secara default, seluruh kueri dari `L1` to `L4` akan diproses tanpa cara untuk mengontrolnya. Dengan menetapkan batas, Anda dapat mencegah kueri mengakses apa pun yang melewati level yang ditentukan.

Untuk menambahkan batas kedalaman kueri, lakukan hal berikut:

1. Masuk ke Konsol Manajemen AWS dan buka [AppSynckonsol](https://console.aws.amazon.com/appsync/).

1. Pada **APIs**halaman, pilih nama GraphQL API.

1. Di beranda API Anda, di panel navigasi, pilih **Pengaturan**.

1. Dalam **konfigurasi API**, pilih **Edit**.

1. Di bawah **Query depth**, lakukan hal berikut:

   1. Nyalakan atau nonaktifkan **Aktifkan kedalaman kueri**.

   1. Dalam **kedalaman maksimum**, atur batas kedalaman. Ini bisa antara `1` dan`75`.

1. Pilih **Simpan**.

Ketika batas ditetapkan, melewati batas atasnya akan menghasilkan `QueryDepthLimitReached` kesalahan. Misalnya, gambar di bawah ini menunjukkan kueri dengan batas kedalaman `2` melewati batas ke level ketiga (`L3`) dan keempat (`L4`):

![Kesalahan batas kedalaman kueri yang menunjukkan struktur kueri bersarang melebihi batas yang dikonfigurasi 2.](http://docs.aws.amazon.com/id_id/appsync/latest/devguide/images/query-depth-limit.jpg)


Perhatikan bahwa bidang masih dapat ditandai sebagai nullable atau non-nullable dalam skema. Jika bidang yang tidak dapat dibatalkan menerima `QueryDepthLimitReached` kesalahan, kesalahan itu akan dilemparkan ke bidang induk nullable pertama. 

## Mengkonfigurasi batas jumlah resolver
<a name="configuration-limits-resolver-count"></a>

Anda juga dapat mengontrol berapa banyak resolver yang dapat diproses setiap kueri. Seperti kedalaman kueri, Anda dapat menetapkan batas untuk jumlah ini. Ambil kueri berikut yang berisi tiga resolver:

```
query MyQuery {
  resolver1: resolver
  resolver2: resolver
  resolver3: resolver
}
```

Secara default, setiap kueri dapat memproses hingga 10000 resolver. Pada contoh di atas, `resolver1``resolver2`,, dan `resolver3` akan diproses. Namun, proyek Anda mungkin meminta untuk membatasi setiap kueri untuk menangani satu atau dua resolver secara total. Dengan menetapkan batas, Anda dapat memberi tahu kueri untuk tidak menangani resolver apa pun melewati nomor tertentu seperti resolver first (`resolver1`) atau second (`resolver2`).

Untuk menambahkan batas hitungan resolver, lakukan hal berikut:

1. Masuk ke Konsol Manajemen AWS dan buka [AppSynckonsol](https://console.aws.amazon.com/appsync/).

1. Pada **APIs**halaman, pilih nama GraphQL API.

1. Di beranda API Anda, di panel navigasi, pilih **Pengaturan**.

1. Dalam **konfigurasi API**, pilih **Edit**.

1. Di bawah **batas jumlah Resolver**, lakukan hal berikut:

   1. Aktifkan **Aktifkan jumlah resolver**.

   1. Dalam **Hitungan resolver maksimum**, atur batas hitungan. Ini bisa antara `1` dan`10000`.

1. Pilih **Simpan**.

Seperti batas kedalaman kueri, melebihi batas resolver yang dikonfigurasi menyebabkan kueri diakhiri dengan `ResolverExecutionLimitReached` kesalahan pada resolver tambahan. Pada gambar di bawah ini, kueri dengan batas jumlah resolver *2* mencoba memproses tiga resolver. Karena batasnya, resolver ketiga melempar kesalahan dan tidak berjalan.

![Query GraphQL dengan tiga resolver yang menunjukkan kesalahan saat batas hitungan resolver dua terlampaui.](http://docs.aws.amazon.com/id_id/appsync/latest/devguide/images/resolver-count-limit.jpg)
