API yang dibuat di API Gateway dapat dipanggil oleh klien atau oleh API Gateway itu sendiri. API Gateway dapat memanggil API dalam wilayah yang sama melalui jaringan internal atau lintas wilayah melalui Internet. API Gateway juga mendukung pemanggilan API lintas akun dengan menggunakan pasangan AccessKey dari aplikasi berwenang, serta mengikat plug-in tanda tangan backend jenis APIGW_FRONTEND. Sebelum melakukan pemanggilan API, API Gateway menghasilkan tanda tangan menggunakan pasangan AccessKey dan mengirimkannya ke API untuk otentikasi. Fitur Call by API Gateway dapat digunakan dalam skenario seperti pembuatan API untuk merutekan permintaan. Plug-in rute backend dan plug-in tanda tangan backend diikat ke API, di mana plug-in rute backend merutekan permintaan ke API lain berdasarkan parameter permintaan.
Contoh konfigurasi
1. Konfigurasikan API bisnis
Jika Anda ingin API Gateway memanggil API Anda melalui virtual private cloud (VPC), lakukan langkah-langkah berikut di konsol API Gateway: beli instance dedicated, pindahkan grup API tempat API berada ke instance dedicated, dan hasilkan nama domain internal secara manual untuk pemanggilan API berbasis VPC.
Aktifkan Fitur Call by API Gateway
a. Masuk ke konsol API Gateway.
b. Di panel navigasi sebelah kiri, pilih Instances and Clusters > Dedicated Instances. Temukan instance dedicated yang diinginkan pada tab Instances dan klik Enable di samping Calls from API Gateway.
Hasilkan Nama Domain Internal untuk Pemanggilan API
Buat dua grup API pada instance tersebut. Kemudian, klik masing-masing grup dan hasilkan nama domain internal.
Sebagai contoh, dua nama domain internal berikut dihasilkan:
17ff4c9189004a1d87b557606b767334-cn-huhehaote-intranet.alicloudapi.com
c6e984b2dd784c0fb843f7c2a8878b15-cn-huhehaote-intranet.alicloudapi.comBuat API di Setiap Grup
Buat API di setiap grup API. Atur parameter Security Authentication ke Alibaba Cloud App untuk kedua API. Contoh berikut menunjukkan atribut asumsi dari dua API:
API1: Method: GET Path: /business1 URL layanan backend:
http://backend1.alicloudapi.com:8080/business1API2 Method: GET Path: /business2 URL layanan backend:
http://backend2.alicloudapi.com:8080/business2
Otorisasi Aplikasi untuk Memanggil API
Otorisasi aplikasi yang sama untuk memanggil kedua API. Dalam contoh ini, aplikasi memiliki pasangan AccessKey berikut: KEY:TESTKEY SECRET:TESTSECRET
2. Konfigurasikan API distribusi
Buat API Distribusi
Buat API distribusi yang dapat diakses secara anonim. Konfigurasikan GET sebagai metode HTTP-nya, /distributeAPI sebagai jalurnya, dan
17ff4c9189004a1d87b557606b767334-cn-huhehaote.alicloudapi.comsebagai nama domain grup API tempat ia berada.
Buat dan Ikat Plug-in Rute Backend
Buat plug-in rute backend dan ikat plug-in tersebut ke API.
---
parameters:
target: "Query:target"
routes:
- name: backend1
condition: "$target = 'resource1'"
backend:
type: "HTTP"
address: "17ff4c9189004a1d87b557606b767334-cn-huhehaote-intranet.alicloudapi.com"
path: "/business1"
- name: backend2
condition: "$target = 'resource2'"
backend:
type: "HTTP"
address: "c6e984b2dd784c0fb843f7c2a8878b15-cn-huhehaote-intranet.alicloudapi.com"
path: "/business2"Kode plug-in di atas menentukan bahwa plug-in merutekan permintaan yang diterima berdasarkan nilai parameter target di bagian query permintaan. Jika nilainya adalah resource1, plug-in meneruskan permintaan ke 17ff4c9189004a1d87b557606b767334-cn-huhehaote-intranet.alicloudapi.com, dan jalur permintaan diubah menjadi /business1. Jika nilainya adalah resource2, plug-in meneruskan permintaan dengan cara yang sama.
Buat dan Ikat Plug-in Tanda Tangan Backend
Buat plug-in tanda tangan backend dan ikat plug-in tersebut ke API.
---
type: APIGW_FRONTEND
key: TESTKEY
secret: TESTSECRET
signatureMethod: HmacSHA256Kode plug-in di atas menentukan bahwa plug-in menghitung tanda tangan berdasarkan konten permintaan yang diterima dan algoritma tanda tangan yang digunakan oleh frontend. Lalu, plug-in menambahkan tanda tangan yang dihitung ke permintaan dan mengirimkan permintaan ke layanan backend.
3. Panggil API distribusi
Sebelum memanggil API, pastikan semua API yang terlibat telah diterbitkan dan diuji dengan benar.
curl 'http://17ff4c9189004a1d87b557606b767334-cn-huhehaote.alicloudapi.com/distributeAPI?target=resource1' -iPotongan kode berikut menunjukkan contoh permintaan yang dikirim ke layanan backend:
GET /business1 HTTP/1.1
User-Agent: curl/7.64.1
Via: 0045e52ee3a8400b8501b4c449b28779
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Forwarded-Proto: http
X-Forwarded-For: 192.168.XX.XX, 127.0.0.1
Host: backend1.alicloudapi.com:8080
X-Ca-Request-Id: 23853B41-C54D-45E9-8C43-EE4C1E8A7889
Via: bc48a42a3d17408b991b0bb4d18c23c0curl 'http://17ff4c9189004a1d87b557606b767334-cn-huhehaote.alicloudapi.com/distributeAPI?target=resource2' -iPotongan kode berikut menunjukkan contoh permintaan lain yang dikirim ke layanan backend:
GET /business2 HTTP/1.1
User-Agent: curl/7.64.1
Via: 0045e52ee3a8400b8501b4c449b28779
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Forwarded-Proto: http
X-Forwarded-For: 192.168.XX.XX, 127.0.0.1
Host: backend2.alicloudapi.com:8080
X-Ca-Request-Id: AFD529D2-9B24-437E-8CEC-897E0BCD8B2F
Via: bc48a42a3d17408b991b0bb4d18c23c0