Membuat proxy API sederhana

Halaman ini berlaku untuk Apigee dan Apigee hybrid.

Baca dokumentasi Apigee Edge.

Apigee memungkinkan Anda mengekspos layanan backend sebagai API dengan cepat. Anda melakukannya dengan membuat proxy API yang menyediakan fasad untuk layanan backend yang ingin Anda ekspos. Anda hanya perlu memberikan alamat jaringan untuk layanan backend, beserta beberapa informasi yang digunakan Apigee untuk membuat proxy API yang diekspos kepada developer.

Proxy API memisahkan implementasi layanan backend Anda dari API yang digunakan developer. Hal ini melindungi developer dari perubahan mendatang pada layanan backend Anda. Saat Anda mengupdate layanan backend, developer, yang terisolasi dari perubahan tersebut, dapat terus memanggil API tanpa gangguan.

Topik ini memberikan informasi tentang berbagai jenis proxy dan setelannya. Untuk petunjuk langkah demi langkah tentang cara membuat proxy, lihat topik berikut:

Membuat proxy API menggunakan UI

Cara termudah untuk membuat proxy API adalah menggunakan wizard Create Proxy.

Untuk mengakses wizard Create Proxy menggunakan UI Apigee, lakukan langkah-langkah berikut:

  1. Login ke UI Apigee.
  2. Di menu navigasi, pilih Develop > API Proxies.
  3. Klik Buat Baru.
    Tombol Buat proxy

Wizard Create Proxy menampilkan dan memandu Anda melalui langkah-langkah untuk membuat dan menambahkan fitur minimal ke proxy API.

Halaman pertama wizard Buat Proxy
    yang meminta Anda memilih reverse proxy, Tidak ada Target, atau Proxy bundle untuk menyesuaikan alur wizard.

Halaman pertama wizard memungkinkan Anda membuat proxy API dari sumber berikut:

Jenis Deskripsi
Proxy terbalik (paling umum)

Proxy API yang merutekan permintaan masuk ke layanan backend HTTP yang ada. Dapat berupa JSON atau XML API. Lihat Membuat proxy terbalik untuk layanan HTTP nanti di bagian ini.

Klik Gunakan Spesifikasi OpenAPI untuk membuat proxy dari Spesifikasi OpenAPI yang valid. Untuk informasi selengkapnya tentang opsi ini, lihat Menggunakan Spesifikasi OpenAPI untuk membuat proxy nanti di bagian ini.

Tidak ada target

Proxy API tanpa backend API ("tanpa target"). Mirip dengan Membuat reverse proxy untuk layanan HTTP yang dijelaskan sebelumnya, kecuali Anda tidak akan menentukan API yang ada saat menentukan detail proxy API.

Klik Gunakan Spesifikasi OpenAPI untuk membuat proxy dari spesifikasi OpenAPI yang valid. Untuk informasi selengkapnya tentang opsi ini, lihat Menggunakan Spesifikasi OpenAPI untuk membuat proxy nanti di bagian ini.

Mengupload paket proxy Paket proxy API yang ada (misalnya salah satu contoh proxy API yang tersedia di GitHub). Lihat Mengimpor proxy API dari paket proxy API.

Bagian berikut membahas detail setiap jenis proxy.

Membuat reverse proxy untuk layanan HTTP

Apigee membuat reverse proxy berdasarkan informasi berikut:

  • URL layanan backend.
  • Jalur URI yang secara unik mengidentifikasi API yang akan diekspos oleh proxy API ke aplikasi konsumen.

URL layanan backend biasanya mewakili aplikasi yang mengaktifkan layanan dan dimiliki oleh organisasi Anda. URL ini juga dapat mengarah ke API yang tersedia untuk publik. API atau layanan dapat berada di bawah kontrol Anda (misalnya, aplikasi HR internal atau aplikasi Rails di Cloud) atau dapat berupa API atau layanan pihak ketiga (misalnya, Twitter atau Instagram).

Detail proxy berikut tersedia setelah mengakses wizard Buat Proxy dan memilih jenis proxy:

Kolom Deskripsi
Nama Nama yang ditampilkan untuk API Anda. Tentukan karakter alfanumerik, tanda hubung (-), atau garis bawah (_).
Jalur dasar

Fragmen URI yang muncul setelah alamat http://[host] atau https://[host] proxy API Anda. Apigee menggunakan URI jalur dasar untuk mencocokkan dan merutekan pesan permintaan masuk ke proxy API yang sesuai.

Setelah jalur dasar, ada URL resource tambahan. Struktur URL lengkap yang digunakan klien untuk memanggil proxy API Anda adalah sebagai berikut:

https://[host]/BASE_PATH/CONDITIONAL_FLOW_PATH

Menggunakan karakter pengganti di jalur dasar

Gunakan satu atau beberapa karakter pengganti /*/ di jalur dasar proxy API untuk mempersiapkan proxy API Anda di masa mendatang. Misalnya, jalur dasar /team/*/members memungkinkan klien memanggil https://[host]/team/blue/members dan https://[host]/team/green/members tanpa Anda perlu membuat proxy API baru untuk mendukung tim baru. Perhatikan bahwa /**/ tidak didukung.

Deskripsi (Opsional) Deskripsi API.
Target (API yang Ada) URL layanan backend yang dipanggil oleh proxy API ini.

Mengimpor proxy API dari paket proxy API

Sering kali Anda menentukan proxy API sebagai kumpulan file XML, beserta file pendukung lainnya. Dengan menentukan proxy API sebagai kumpulan file eksternal ke Apigee, Anda dapat mengelolanya dalam sistem kontrol sumber, lalu mengimpornya ke Apigee untuk pengujian dan deployment.

Untuk mengimpor proxy API dari paket proxy API, lakukan langkah-langkah berikut:

  1. Akses wizard Create Proxy seperti yang dijelaskan dalam Membuat proxy API menggunakan UI sebelumnya di bagian ini.
  2. Klik Upload paket proxy.
  3. Di halaman Upload proxy bundle di wizard proxy, masukkan informasi berikut:

    Kolom Deskripsi
    Paket ZIP File ZIP yang berisi konfigurasi proxy API. Tarik lalu lepas atau klik untuk membuka file.
    Nama Nama yang ditampilkan untuk API Anda. Secara default, nama file ZIP tanpa ekstensi.
  4. Klik Berikutnya.
  5. Di halaman Summary, pilih lingkungan deployment, jika diinginkan, lalu klik Create and deploy

    Konfirmasi akan ditampilkan untuk mengonfirmasi bahwa proxy API baru Anda berhasil dibuat.

  6. Klik Edit proxy untuk menampilkan halaman detail untuk proxy API.

Membuat proxy gRPC API

Selain proxy REST API, Apigee saat ini mendukung proxy gRPC API hanya dengan dukungan passthrough. Dengan dukungan passthrough, payload gRPC itu sendiri tidak transparan untuk Apigee dan traffic dirutekan dari klien gRPC ke server target gRPC yang telah dikonfigurasi sebelumnya dalam konfigurasi target.

Saat ini, proxy API gRPC Apigee:

  • Mendukung permintaan gRPC unary.
  • Tidak dapat menggunakan kebijakan yang memengaruhi payload.
  • Dapat digunakan dalam produk API yang tidak terkait dengan proxy GraphQL atau REST. Kuota khusus produk API dan setelan operasi lainnya berlaku di semua proxy dalam produk.
  • Tidak didukung di Apigee Hybrid.
  • Gunakan dua variabel alur khusus gRPC: request.grpc.rpc.name dan request.grpc.service.name.
  • Dapat dipantau dengan variabel Apigee Analytics khusus gRPC ini: x_apigee_grpc_rpc_name, x_apigee_grpc_service_name, dan x_apigee_grpc_status.
  • Menampilkan kode status gRPC.

Anda juga harus mengonfigurasi load balancer untuk mendukung gRPC. Lihat Menggunakan gRPC dengan aplikasi Anda dan Menggunakan perintah gcloud CLI untuk membuat pemilihan rute untuk gRPC.

Untuk membuat proxy gRPC API, tentukan server target gRPC terlebih dahulu (lihat Membuat TargetServer), lalu tentukan server target tersebut saat membuat proxy baru.

Menggunakan perintah gcloud CLI untuk membuat pemilihan rute untuk gRPC

Bagian ini menunjukkan contoh perintah untuk membuat pemilihan rute bagi proxy gRPC, menggunakan gcloud CLI. Petunjuknya mencakup penyiapan load balancer, server target, dan MIG.

Bagian ini bukan sebagai panduan komprehensif untuk membuat perutean. Contoh ini mungkin tidak sesuai untuk semua kasus penggunaan. Selain itu, petunjuk ini mengasumsikan bahwa Anda sudah memahami Pemilihan rute eksternal (MIG) dan Konfigurasi gRPC load balancer Cloud.

Menetapkan variabel lingkungan

Variabel lingkungan ini digunakan dalam perintah di subbagian.

PROJECT_ID=YOUR_PROJECT_ID
MIG_NAME=YOUR_MIG_NAME
VPC_NAME=default
VPC_SUBNET=default
REGION=REGION_NAME
APIGEE_ENDPOINT=ENDPOINT
CERTIFICATE_NAME=CERTIFICATE_NAME
DOMAIN_HOSTNAME=DOMAIN_HOSTNAME

Bagian ini menunjukkan contoh perintah untuk membuat proxy gRPC menggunakan gcloud CLI dan load balancer baru. Petunjuk ini mencakup penyiapan load balancer, server target, dan MIG.

Membuat template instance

gcloud compute instance-templates create $MIG_NAME \
--project $PROJECT_ID \
--region $REGION \
--network $VPC_NAME \
--subnet $VPC_SUBNET \
--tags=https-server,apigee-mig-proxy,gke-apigee-proxy \
--machine-type e2-medium --image-family debian-12 \
--image-project debian-cloud --boot-disk-size 20GB \
--no-address \
--metadata ENDPOINT=$APIGEE_ENDPOINT,startup-script-url=gs://apigee-5g-saas/apigee-envoy-proxy-release/latest/conf/startup-script.sh

Membuat grup instance terkelola

gcloud compute instance-groups managed create $MIG_NAME \
--project $PROJECT_ID --base-instance-name apigee-mig \
--size 2 --template $MIG_NAME --region $REGION

Mengonfigurasi penskalaan otomatis

gcloud compute instance-groups managed set-autoscaling $MIG_NAME \
--project $PROJECT_ID --region $REGION --max-num-replicas 50 \
--target-cpu-utilization 0.75 --cool-down-period 90

Menentukan port bernama

gcloud compute instance-groups managed set-named-ports $MIG_NAME \
--project $PROJECT_ID --region $REGION --named-ports https:443

Membuat sertifikat dan kunci SSL yang dikelola Google untuk load balancer

gcloud compute ssl-certificates create $CERTIFICATE_NAME \
--domains=$DOMAIN_HOSTNAME \
--project $PROJECT_ID \
--global

Memvalidasi bahwa sertifikat telah disediakan

gcloud compute ssl-certificates describe $CERTIFICATE_NAME \
--global \
--format="get(name,managed.status, managed.Status)"

Membuat Global Cloud Load Balancer (GCLB)

  1. Membuat health check
    gcloud compute health-checks create https hc-apigee-envoy-443 \
    --project $PROJECT_ID --port 443 --global \
    --request-path /healthz/ingress
  2. Buat layanan backend untuk http1
    gcloud compute backend-services create YOUR_BACKEND_1 \
    --project $PROJECT_ID \
    --protocol HTTPS \
    --health-checks hc-apigee-envoy-443 \
    --port-name https \
    --timeout 302s \
    --connection-draining-timeout 300s \
    --global
  3. Membuat layanan backend untuk http2
    gcloud compute backend-services create YOUR_BACKEND_2 \
    --project $PROJECT_ID \
    --protocol HTTP2 \
    --health-checks hc-apigee-envoy-443 \
    --port-name https \
    --timeout 302s \
    --connection-draining-timeout 300s \
    --global
  4. Tambahkan MIG ke layanan backend. Dalam contoh ini, kita menggunakan kembali MIG, tetapi Anda juga dapat membuat pasangan MIG baru.
    gcloud compute backend-services add-backend YOUR_BACKEND_1 \
    --project $PROJECT_ID --instance-group $MIG_NAME \
    --instance-group-region $REGION \
    --balancing-mode UTILIZATION --max-utilization 0.8 --global
    gcloud compute backend-services add-backend YOUR_BACKEND_2 \
    --project $PROJECT_ID --instance-group $MIG_NAME \
    --instance-group-region $REGION \
    --balancing-mode UTILIZATION --max-utilization 0.8 --global
  5. Buat peta URL load balancing. Periksa terlebih dahulu apakah Anda sudah memiliki peta URL. Jika Anda melakukannya, pastikan untuk mengubah peta tersebut sesuai dengan persyaratan di bawah, bukan menimpanya.

    Buat file YAML atau gunakan file yang ada, di /tmp/apigee-map.yaml, dengan konfigurasi ini. Perhatikan bahwa backend http1 peta URL adalah default.

    defaultService: projects/$PROJECT_ID/global/backendServices/YOUR_BACKEND_1
    name: matcher1
    routeRules:
    - matchRules:
    - headerMatches:
    - headerName: Content-Type
    prefixMatch: application/grpc
    prefixMatch: /
    priority: 100
    routeAction:
    weightedBackendServices:
    - backendService: projects/$PROJECT_ID/global/backendServices/YOUR_BACKEND_2
    weight: 100

    Validasi peta URL:

    gcloud compute url-maps validate --source /tmp/apigee-map.yaml --project $PROJECT_ID

    Buat peta URL dengan perutean berbasis header:

    gcloud compute url-maps import apigee-http1-http2 \
    --source /tmp/apigee-map.yaml  \
    --global --project $PROJECT_ID

Membuat proxy HTTPS target load balancing

gcloud compute target-https-proxies create apigee-envoy-https-proxy \
--project $PROJECT_ID --url-map apigee-envoy-proxy-map \
--ssl-certificates $CERTIFICATE_NAME

Mencadangkan IP Eksternal IPV4 dan membuat aturan firewall untuk load balancer

gcloud compute addresses create lb-ipv4-vip-1 \
--project $PROJECT_ID \
--network-tier=PREMIUM \
--ip-version=IPV4 \
--global

  gcloud compute addresses describe lb-ipv4-vip-1 \
--project $PROJECT_ID --format="get(address)" --global

  gcloud compute forwarding-rules create apigee-envoy-https-lb-rule \
--project $PROJECT_ID --address lb-ipv4-vip-1 --global \
--target-https-proxy apigee-envoy-https-proxy --ports 443

Membuat aturan firewall

gcloud compute firewall-rules create k8s-allow-lb-to-apigee-envoy \
--description "Allow incoming from GLB on TCP port 443 to Apigee Proxy" \
--project $PROJECT_ID --network $VPC_NAME --allow=tcp:443 \
--source-ranges=130.211.0.0/22,35.191.0.0/16 --target-tags=gke-apigee-proxy

Bagian ini menunjukkan contoh perintah untuk membuat proxy gRPC menggunakan gcloud CLI dan load balancer yang ada. Petunjuk ini mencakup penyiapan load balancer, server target, dan MIG.

Membuat layanan backend lain untuk http2

# Create backend service for http2
    gcloud compute backend-services create YOUR_BACKEND_2 \
--project $PROJECT_ID \
--protocol HTTP2 \
--health-checks hc-apigee-envoy-443 \
--port-name https \
--timeout 302s \
--connection-draining-timeout 300s \
--global

Melampirkan layanan backend kedua ke MIG

gcloud compute backend-services add-backend YOUR_BACKEND_2 \
--project $PROJECT_ID --instance-group $MIG_NAME \
--instance-group-region $REGION \
--balancing-mode UTILIZATION --max-utilization 0.8 --global

Mencantumkan peta URL untuk GCLB Apigee yang ada

gcloud compute url-maps list -project $PROJECT_ID

Memilih nama peta URL yang benar yang digunakan untuk load balancing Apigee

gcloud compute url-maps export APIGEE_URL_MAP_NAME -project $PROJECT_ID

Membuat file YAML peta URL load balancing

Jika Anda sudah memiliki peta URL, gabungkan konfigurasi ini ke dalamnya. Jika tidak, buat file YAML di /tmp/apigee-map.yaml dengan konfigurasi ini.

defaultService: projects/dg-runtime-test1/global/backendServices/YOUR_BACKEND_1
name: matcher1
routeRules:
- matchRules:
- headerMatches:
- headerName: Content-Type
prefixMatch: application/grpc
prefixMatch: /
priority: 100
routeAction:
weightedBackendServices:
- backendService: projects/dg-runtime-test1/global/backendServices/YOUR_BACKEND_2
weight: 100

Menerapkan YAML baru untuk pemilihan rute gRPC

gcloud compute url-maps import APIGEE_URL_MAP_NAME\
--source /tmp/apigee-map.yaml  \
--global -project $PROJECT_ID

Menambahkan keamanan

Di halaman Kebijakan umum pada wizard Buat Proxy, pilih jenis otorisasi keamanan yang ingin Anda tambahkan. Tabel berikut merangkum opsi yang tersedia:

Otorisasi keamanan Deskripsi
Kunci API Menambahkan verifikasi kunci API sederhana ke proxy API yang Anda tentukan. Sebagai respons, API Platform akan menambahkan kebijakan VerifyAPIKey dan kebijakan AssignMessage ke proxy API Anda. Kebijakan VerifyAPIKey memvalidasi kunci API yang ditampilkan oleh aplikasi yang meminta. Kebijakan AssignMessage menghapus kunci API, yang disediakan dalam panggilan API sebagai parameter kueri, dari permintaan yang diteruskan ke server backend.
OAuth 2.0 Menambahkan autentikasi berbasis OAuth 2.0 ke proxy API Anda. Apigee secara otomatis menambahkan kebijakan berikut ke proxy API Anda: satu kebijakan untuk memverifikasi token akses dan kebijakan lain untuk menghapus token akses dari pesan sebelum meneruskannya ke layanan backend Anda. Untuk mempelajari cara mendapatkan token akses, lihat OAuth.
Teruskan (tanpa otorisasi) Tidak diperlukan otorisasi. Permintaan diteruskan ke backend tanpa pemeriksaan keamanan apa pun di Apigee.

Menambahkan dukungan untuk CORS

Cross-origin resource sharing (CORS) adalah mekanisme standar yang memungkinkan browser web membuat permintaan langsung ke domain lain. Standar CORS menentukan serangkaian header HTTP yang digunakan browser dan server web untuk menerapkan komunikasi lintas-domain.

Anda dapat menambahkan dukungan untuk CORS dengan melakukan salah satu tindakan berikut:

  • Menambahkan kebijakan CORS ke PreFlow permintaan ProxyEndpoint
  • Memilih Tambahkan header CORS di halaman Kebijakan umum pada wizard Buat Proxy

Untuk informasi yang lebih mendetail tentang dukungan CORS, termasuk menambahkan dukungan pra-penerbangan CORS ke proxy, lihat Menambahkan dukungan CORS ke proxy API.

Menambahkan Kuota

Kuota melindungi layanan backend Anda dari traffic yang tinggi di bagian Kuota. Lihat Kuota. (Tidak tersedia jika Otorisasi pass-through dipilih.)

Menggunakan Spesifikasi OpenAPI untuk membuat proxy

Bagian ini membahas opsi Gunakan OpenAPI yang tersedia untuk membuat jenis proxy API berikut dari Spesifikasi OpenAPI: terbalik atau tanpa target.

Apa itu Spesifikasi OpenAPI?

Logo Open API Initiative   "Open API Initiative (OAI) berfokus pada pembuatan, pengembangan, dan promosi format deskripsi API yang netral vendor berdasarkan Spesifikasi Swagger." Untuk mengetahui informasi selengkapnya, lihat OpenAPI Initiative.

Spesifikasi OpenAPI menggunakan format standar untuk mendeskripsikan RESTful API. Ditulis dalam format JSON atau YAML, Spesifikasi OpenAPI dapat dibaca mesin, tetapi juga mudah dibaca dan dipahami oleh manusia. Spesifikasi ini menjelaskan elemen API seperti jalur dasar, jalur dan kata kerja, header, parameter kueri, operasi, jenis konten, deskripsi respons, dan lainnya. Selain itu, Spesifikasi OpenAPI biasanya digunakan untuk membuat dokumentasi API.

Fragmen berikut dari Spesifikasi OpenAPI menjelaskan layanan target tiruan Apigee, http://mocktarget.apigee.net. Untuk informasi selengkapnya, lihat spesifikasi OpenAPI untuk contoh helloworld.

openapi: 3.0.0
info:
  description: OpenAPI Specification for the Apigee mock target service endpoint.
  version: 1.0.0
  title: Mock Target API
paths:
  /:
    get:
      summary: View personalized greeting
      operationId: View a personalized greeting
      description: View a personalized greeting for the specified or guest user.
      parameters:
        - name: user
          in: query
          description: Your user name.
          required: false
          schema:
            type: string
      responses:
        "200":
          description: Success
  /help:
    get:
      summary: Get help
      operationId: Get help
      description: View help information about available resources in HTML format.
      responses:
        "200":
          description: Success
...

Melalui wizard Create Proxy, Anda dapat mengimpor Spesifikasi OpenAPI dan menggunakannya untuk membuat proxy API. Setelah proxy dibuat, Anda dapat menggunakan UI Apigee untuk mengembangkannya lebih lanjut dengan menambahkan kebijakan, menerapkan kode kustom, dan sebagainya&emdash;sama seperti proxy Apigee lainnya.

Membuat proxy API dari Spesifikasi OpenAPI

Buat proxy API dari Spesifikasi OpenAPI. Hanya dengan beberapa klik, Anda akan memiliki proxy API dengan jalur, parameter, alur kondisional, dan endpoint target yang dibuat secara otomatis. Kemudian, Anda dapat menambahkan fitur seperti keamanan OAuth, pembatasan kapasitas, dan penyimpanan dalam cache.

Di wizard Create Proxy, klik Use OpenAPI Spec dan ikuti wizard untuk membuat proxy terbalik atau tanpa target dari Spesifikasi OpenAPI. Untuk mengetahui detailnya, lihat Membuat proxy API dari Spesifikasi OpenAPI.

Membuat revisi baru proxy API

Buat revisi baru proxy API, seperti yang dijelaskan di bawah.

Untuk membuat revisi baru proxy API, lakukan langkah-langkah berikut:

  1. Login ke UI Apigee.
  2. Di menu navigasi, pilih Develop > API Proxies.
  3. Klik proxy API dalam daftar yang ingin Anda salin.
  4. Klik tab Mengembangkan.

  5. Pilih tombol Simpan, lalu pilih Simpan sebagai Revisi Baru.

Mencadangkan proxy API

Anda dapat mencadangkan proxy API yang ada sebagai kumpulan file XML dalam paket proxy API. Setelah diekspor ke paket, Anda dapat mengimpor proxy API ke proxy baru, seperti yang dijelaskan dalam Mengimpor proxy API dari paket proxy API sebelumnya di bagian ini. Untuk mengetahui informasi selengkapnya, lihat Mendownload proxy API.

Membuat proxy API menggunakan API

Untuk membuat proxy API menggunakan API, lihat Membuat proxy API.