Panduan memulai API Gateway dan App Engine

Halaman ini menunjukkan cara menyiapkan API Gateway untuk mengelola dan mengamankan layanan backend App Engine.

Daftar Tugas

Gunakan daftar tugas berikut saat Anda mengerjakan tutorial ini. Semua tugas diperlukan untuk men-deploy API gateway untuk layanan backend App Engine Anda.

  1. Membuat atau memilih project Google Cloud.
  2. Jika Anda belum men-deploy App Engine sendiri, deploy aplikasi contoh. Lihat Sebelum memulai.
  3. Aktifkan layanan API Gateway yang diperlukan.
  4. Konfigurasikan IAP untuk mengamankan aplikasi Anda. Lihat Mengonfigurasi IAP.
  5. Buat spesifikasi OpenAPI yang mendeskripsikan API Anda, dan konfigurasikan rute ke App Engine Anda. Lihat Membuat konfigurasi API.
  6. Deploy API gateway menggunakan konfigurasi API Anda. Lihat Men-deploy API Gateway.
  7. Melacak aktivitas ke aplikasi Anda. Lihat Melacak aktivitas API.
  8. Hindari tagihan pada akun Google Cloud Anda. Lihat Pembersihan.

Sebelum memulai

  1. Di konsol Google Cloud, buka halaman Dasbor, lalu pilih atau buat project Google Cloud.

    Buka halaman Dasbor

  2. Pastikan penagihan diaktifkan untuk project Anda.

    Mengaktifkan penagihan

  3. Catat project ID yang ingin Anda gunakan untuk tutorial ini. Di bagian lain halaman ini, project ID ini disebut sebagai PROJECT_ID.

  4. Download dan instal Google Cloud CLI.

    Mendownload gcloud CLI

  5. Perbarui komponen gcloud:

    gcloud components update
  6. Tetapkan project default. Ganti PROJECT_ID dengan project ID Google Cloud Anda:

    gcloud config set project PROJECT_ID

  7. Jika Anda belum men-deploy aplikasi App Engine sendiri, ikuti langkah-langkah dalam Panduan Cepat App Engine untuk bahasa Anda guna menggunakan Google Cloud CLI untuk memilih atau membuat project Google Cloud dan men-deploy aplikasi contoh. Catat URL aplikasi, serta region dan project ID tempat aplikasi Anda di-deploy.

Mengaktifkan layanan yang diperlukan

API Gateway mengharuskan Anda mengaktifkan layanan Google berikut:

Nama Judul
apigateway.googleapis.com API Gateway API
servicemanagement.googleapis.com Service Management API
servicecontrol.googleapis.com Service Control API

Untuk mengonfirmasi bahwa layanan yang diperlukan telah diaktifkan:

gcloud services list

Jika Anda tidak melihat layanan yang diperlukan tercantum, aktifkan layanan tersebut:

gcloud services enable apigateway.googleapis.com
gcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com

Untuk mengetahui informasi selengkapnya tentang layanan gcloud, lihat layanan gcloud.

Mengonfigurasi IAP untuk mengamankan aplikasi

Untuk mengamankan aplikasi App Engine, Anda harus menggunakan Identity Aware Proxy (IAP) untuk memastikan permintaan diautentikasi. Proses ini mencakup menentukan anggota yang harus diberi peran IAP-secured Web App User yang diperlukan untuk project.

Ikuti langkah-langkah untuk Mengaktifkan IAP, dan pastikan Anda dapat login ke aplikasi.

Membuat konfigurasi API

Sebelum dapat digunakan untuk mengelola traffic ke backend App Engine yang di-deploy, API Gateway memerlukan konfigurasi API.

Anda dapat membuat konfigurasi API menggunakan spesifikasi OpenAPI yang berisi anotasi khusus untuk menentukan perilaku API Gateway yang dipilih. Anda harus menambahkan kolom khusus Google yang berisi URL untuk setiap aplikasi App Engine sehingga API Gateway memiliki informasi yang diperlukan untuk memanggil aplikasi.

  1. Buat file teks bernama openapi2-appengine.yaml. (Untuk memudahkan, halaman ini merujuk ke spesifikasi OpenAPI berdasarkan nama file tersebut, tetapi Anda dapat memberinya nama lain jika mau.)
  2. Cantumkan setiap aplikasi Anda di bagian paths file openapi2-appengine.yaml, seperti yang ditunjukkan:
    # openapi2-appengine.yaml
    swagger: '2.0'
    info:
      title: API_ID optional-string
      description: Sample API on API Gateway with an App Engine backend
      version: 1.0.0
    schemes:
      - https
    produces:
      - application/json
    paths:
      /hello:
        get:
          summary: Greet a user
          operationId: hello
          x-google-backend:
            address: APP_URL
            jwt_audience: IAP_CLIENT_ID
          responses:
            '200':
              description: A successful response
              schema:
                type: string
  3. Di kolom title, ganti API_ID dengan nama API Anda dan ganti optional-string dengan deskripsi singkat pilihan Anda. Jika API Anda belum ada, perintah untuk membuat Konfigurasi API juga akan membuat API dengan nama yang Anda tentukan. Nilai kolom title digunakan saat membuat kunci API yang memberikan akses ke API ini. Lihat Persyaratan ID API untuk mengetahui pedoman penamaan API.
  4. Di kolom address di bagian x-google-backend, ganti APP_URL dengan URL sebenarnya dari layanan App Engine Anda (jalur lengkap API yang dipanggil). Contohnya, https://myapp.an.r.appspot.com/hello

    Ganti IAP_CLIENT_ID dengan Client ID OAuth yang Anda buat saat menyiapkan IAP.

  5. Masukkan perintah berikut, dengan:
    • CONFIG_ID menentukan nama konfigurasi API Anda.
    • API_ID menentukan nama API Anda. Jika API belum ada, perintah ini akan membuatnya.
    • PROJECT_ID menentukan nama project Google Cloud Anda.
    • SERVICE_ACCOUNT_EMAIL menentukan akun layanan yang digunakan untuk menandatangani token untuk backend dengan autentikasi yang dikonfigurasi.
    gcloud api-gateway api-configs create CONFIG_ID \
      --api=API_ID --openapi-spec=openapi2-appengine.yaml \
      --project=PROJECT_ID --backend-auth-service-account=SERVICE_ACCOUNT_EMAIL

    Operasi ini mungkin memerlukan waktu beberapa menit hingga selesai karena konfigurasi API disebarkan ke sistem downstream. Pembuatan konfigurasi API yang kompleks dapat memerlukan waktu hingga sepuluh menit untuk selesai.

  6. Setelah konfigurasi API dibuat, Anda dapat melihat detailnya dengan menjalankan perintah ini:
    gcloud api-gateway api-configs describe CONFIG_ID \
      --api=API_ID --project=PROJECT_ID

Men-deploy gateway API

Sekarang Anda dapat men-deploy API di API Gateway. Men-deploy API di API Gateway juga menentukan URL eksternal yang dapat digunakan klien API untuk mengakses API Anda.

Jalankan perintah berikut untuk men-deploy konfigurasi API yang baru saja Anda buat ke API Gateway:

gcloud api-gateway gateways create GATEWAY_ID \
  --api=API_ID --api-config=CONFIG_ID \
  --location=GCP_REGION --project=PROJECT_ID

dengan:

  • GATEWAY_ID menentukan nama gateway.
  • API_ID menentukan nama API Gateway API yang terkait dengan gateway ini.
  • CONFIG_ID menentukan nama konfigurasi API yang di-deploy ke gateway.
  • GCP_REGION adalah region Google Cloud untuk gateway yang di-deploy.

  • PROJECT_ID menentukan nama project Google Cloud Anda.

Setelah berhasil diselesaikan, Anda dapat menggunakan perintah berikut untuk melihat detail tentang gateway:

gcloud api-gateway gateways describe GATEWAY_ID \
  --location=GCP_REGION --project=PROJECT_ID

Perhatikan nilai properti defaultHostname dalam output perintah ini. Ini adalah bagian nama host dari URL gateway yang Anda gunakan untuk menguji deployment di langkah berikutnya.

Menguji deployment API

Sekarang Anda dapat mengirim permintaan ke API menggunakan URL yang dibuat saat gateway di-deploy.

Masukkan perintah curl berikut, dengan:

  • DEFAULT_HOSTNAME menentukan bagian nama host dari URL gateway yang di-deploy. Nilai defaultHostname dapat ditemukan dalam output perintah gateways describe yang ditampilkan di atas.
  • hello adalah jalur yang ditentukan dalam konfigurasi API Anda.
curl https://DEFAULT_HOSTNAME/hello

Contoh:

curl https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello

Anda akan melihat output berikut:

My-AppEngineApp: Access denied for user gateway-1a2b3c@04d5e6f35FgdsT73dFrty-tp.iam.gserviceaccount.com requesting https://my-project.appspot.com/helloGET. If you should have access, contact myldap@google.com and include the full text of this message.

Berhasil! Gateway Anda mengelola akses ke layanan backend App Engine. Untuk memberikan akses ke aplikasi App Engine, Anda harus mengonfigurasi akun layanan dengan izin yang benar untuk gateway.

Melacak aktivitas API

  1. Lihat grafik aktivitas untuk API Anda di halaman API Gateway di konsol Google Cloud. Klik API Anda untuk melihat grafik aktivitasnya di halaman Ringkasan. Mungkin perlu waktu beberapa saat hingga permintaan ditampilkan dalam grafik.

  2. Lihat log permintaan untuk API Anda di halaman Logs Explorer. Link ke halaman Logs Explorer dapat ditemukan di halaman API Gateway di konsol Google Cloud.

    Buka halaman API Gateway

    Setelah berada di halaman API Gateway:

    1. Pilih API yang akan dilihat.
    2. Klik tab Detail.
    3. Klik link di bagian Logs.

Pembersihan

Agar tidak menimbulkan tagihan pada akun Google Cloud Anda untuk resource yang digunakan dalam panduan memulai ini, Anda dapat:

Atau, Anda juga dapat menghapus project Google Cloud yang digunakan untuk tutorial ini.