Integrasikan Amazon API Gateway dengan Amazon SQS untuk menangani REST asinkron APIs - AWS Prescriptive Guidance

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

Integrasikan Amazon API Gateway dengan Amazon SQS untuk menangani REST asinkron APIs

Natalia Colantonio Favero dan Gustavo Martim, Amazon Web Services

Ringkasan

Saat Anda menerapkan REST APIs, terkadang Anda perlu mengekspos antrian pesan yang dapat dipublikasikan oleh aplikasi klien. Misalnya, Anda mungkin memiliki masalah dengan latensi pihak ketiga APIs dan penundaan respons, atau Anda mungkin ingin menghindari waktu respons kueri database atau menghindari penskalaan server ketika ada sejumlah besar konkuren. APIs Dalam skenario ini, aplikasi klien yang mempublikasikan ke antrian hanya perlu mengetahui bahwa API menerima data—bukan apa yang terjadi setelah data diterima.

Pola ini membuat endpoint REST API dengan menggunakan Amazon API Gateway untuk mengirim pesan ke Amazon Simple Queue Service (Amazon SQS). Ini menciptakan easy-to-implement integrasi antara dua layanan yang menghindari akses langsung ke antrian SQS.

Prasyarat dan batasan

Arsitektur

Arsitektur untuk mengintegrasikan API Gateway dengan Amazon SQS

Diagram menggambarkan langkah-langkah ini:

  1. Minta titik akhir POST REST API dengan menggunakan alat seperti Postman, API lain, atau teknologi lainnya.

  2. API Gateway memposting pesan, yang diterima di badan permintaan, pada antrian.

  3. Amazon SQS menerima pesan dan mengirimkan jawaban ke API Gateway dengan kode sukses atau gagal.

Alat

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Buat antrian.

Untuk membuat antrean SQS yang menerima pesan dari REST API:

  1. Masuk ke Anda Akun AWS.

  2. Buka konsol Amazon SQS di. https://console.aws.amazon.com/sqs/

  3. Pilih Buat antrean.

  4. Pada halaman Create queue, pilih yang benar Wilayah AWS dari daftar dropdown Region.

  5. Untuk Type, pertahankan pengaturan default (Standar).

  6. Masukkan Nama untuk antrian Anda.

  7. Simpan nilai default untuk semua pengaturan lainnya.

  8. Pilih Buat antrean.

Pengembang aplikasi
TugasDeskripsiKeterampilan yang dibutuhkan

Buat peran IAM.

Peran IAM ini memberikan sumber daya API Gateway akses penuh ke Amazon SQS.

  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Dalam panel navigasi, pilih Roles (Peran), lalu Create role (Buat peran).

  3. Untuk jenis entitas Tepercaya, pilih Layanan AWS.

  4. Untuk kasus Penggunaan, pilih API Gateway dari daftar tarik-turun, lalu pilih Berikutnya, Berikutnya.

  5. Untuk nama Peran, masukkan AWSGatewayRoleForSQS dan deskripsi opsional, lalu pilih Buat peran.

  6. Di panel Peran, cari AWSGatewayRoleForSQS, dan pilih kotak centang.

  7. Di bagian Kebijakan izin, pilih Tambahkan izin, Lampirkan kebijakan.

  8. Cari Amazon SQSFull Access dan pilih.

  9. Pilih Tambahkan izin.

  10. Di bagian Ringkasan AWSGateway RoleForSQS, salin Nomor Sumber Daya Amazon (ARN). Anda akan menggunakan ID ini di langkah selanjutnya.

Pengembang aplikasi, administrator AWS
TugasDeskripsiKeterampilan yang dibutuhkan

Buat REST API.

Ini adalah REST API tempat permintaan HTTP dikirim.

  1. Buka konsol API Gateway di https://console.aws.amazon.com/apigateway/.

  2. Di bagian REST API, pilih Build.

  3. Untuk nama API, masukkan nama dan deskripsi opsional untuk API Anda, simpan semua pengaturan default lainnya, lalu pilih Buat API.

Pengembang aplikasi

Hubungkan API Gateway ke Amazon SQS.

Langkah ini memungkinkan pesan mengalir dari dalam badan permintaan HTTP ke Amazon SQS.

  1. Di konsol API Gateway, pilih API yang Anda buat.

  2. Pada halaman Resources, di bagian Methods, pilih Create method.

  3. Untuk jenis Metode, pilih POST

  4. Untuk jenis Integrasi, pilih Layanan AWS.

  5. Untuk Wilayah AWS, pilih Wilayah tempat Anda membuat antrean SQS.

  6. Untuk Layanan AWS, pilih Simple Queue Service (SQS).

  7. Untuk metode HTTP, pilih POST.

  8. Untuk tipe Action, pilih Use path override.

  9. <name of SQS queue>Untuk Path override, masukkan/<AWS account ID>.

  10. Untuk peran Eksekusi, tempel ARN dari peran yang Anda buat sebelumnya.

  11. Pilih metode Buat.

Pengembang aplikasi
TugasDeskripsiKeterampilan yang dibutuhkan

Uji REST API.

Jalankan tes untuk memeriksa konfigurasi yang hilang:

  1. Di konsol API Gateway, pilih REST API yang Anda buat.

  2. Di panel Resources, pilih metode POST.

  3. Pilih tab Uji. (Gunakan panah kanan jika tab tidak ditampilkan.)

  4. Untuk badan Permintaan, tempel kode JSON berikut:

    { "message": "lorem ipsum" }
  5. Pilih Uji.

    Anda akan menerima kesalahan yang mirip dengan berikut ini:

    <UnknownOperationException/>
Pengembang aplikasi

Ubah integrasi API untuk meneruskan permintaan dengan benar ke Amazon SQS.

Selesaikan konfigurasi untuk memperbaiki kesalahan integrasi:

  1. Di konsol API Gateway, pilih API yang Anda buat, lalu pilih POST.

  2. Bagian Eksekusi Metode menunjukkan pemetaan visual antara API Gateway dan Amazon SQS. Dari bagian ini, pilih Permintaan integrasi, lalu pilih Edit.

  3. Perluas bagian header HTTP, lalu pilih parameter Add request header.

    • Untuk Nama, tentukan Content-Type.

    • Untuk Dipetakan dari, masukkan x-www-form-urlencoded'aplikasi/ '. Pastikan untuk menyertakan tanda kutip tunggal.

    • Pilih kotak centang Caching.

  4. Perluas bagian Templat pemetaan.

    • Pilih Tambahkan templat pemetaan.

    • Untuk jenis Konten, masukkan aplikasi/json.

    • Untuk badan Template, tempel kode ini:

      Action=SendMessage&MessageBody=$input.body
    • Pilih Simpan.

Pengembang aplikasi

Uji dan validasi pesan di Amazon SQS.

Jalankan tes untuk mengonfirmasi bahwa tes berhasil diselesaikan:

  1. Di konsol API Gateway, pilih REST API yang Anda buat.

  2. Di panel Resources, pilih metode POST.

  3. Pilih tab Uji. (Gunakan panah kanan jika tab tidak ditampilkan.)

  4. Untuk badan Permintaan, tempel kode JSON berikut:

    { "message": "lorem ipsum" }
  5. Pilih Uji.

  6. Buka konsol Amazon SQS.

  7. Di panel navigasi, pilih Antrian, lalu pilih antrian Anda.

  8. Pilih Kirim dan terima pesan.

  9. Pilih Poll untuk pesan.

  10. Pilih Pesan. Ini harus menampilkan yang berikut:

    Body { "message": "lorem ipsum" }
Pengembang aplikasi

Uji API Gateway dengan karakter khusus.

Jalankan pengujian yang menyertakan karakter khusus (seperti &) yang tidak dapat diterima dalam pesan:

  1. Di konsol API Gateway, pilih API Anda.

  2. Ulangi tes dari langkah sebelumnya dengan menggunakan kode JSON berikut:

    { "message": "lorem ipsum &" }
  3. Pilih Uji.

    Anda akan menerima kesalahan seperti berikut:

    { "Error": { "Code": "AccessDenied", "Message": "Access to the resource https://sqs.us-east-2.amazonaws.com/976166761794/Apg2 is denied.", "Type": "Sender" }, "RequestId": "e83c9c67-bcf6-5e9a-91e9-c737094b17ab" }

Ini karena karakter khusus tidak didukung secara default di badan pesan. Pada langkah berikutnya, Anda akan mengonfigurasi API Gateway untuk mendukung karakter khusus. Untuk informasi selengkapnya tentang konversi jenis konten, lihat dokumentasi API Gateway.

Pengembang aplikasi

Ubah konfigurasi API untuk mendukung karakter khusus.

Sesuaikan konfigurasi untuk menerima karakter khusus dalam pesan:

  1. Di konsol API Gateway, pilih API yang Anda buat, lalu pilih POST.

  2. Pilih Permintaan integrasi, lalu pilih Edit.

  3. Ubah Penanganan Konten untuk Mengonversi ke teks.

  4. Di bagian Templat pemetaan:

    • Untuk jenis Konten, masukkan aplikasi/json.

    • Untuk badan Template, tentukan:

      Action=SendMessage&MessageBody=$util.urlEncode($input.body)
    • Pilih Simpan.

  5. Pilih tab Uji.

  6. Untuk badan Permintaan, masukkan kode JSON dari sebelumnya:

    { " message": "lorem ipsum &" }
  7. Pilih Uji.

  8. Buka konsol Amazon SQS.

  9. Pilih antrian Anda, lalu pilih Kirim dan terima pesan, Poll untuk pesan, Pesan seperti sebelumnya.

Pesan baru harus menyertakan karakter khusus.

Pengembang aplikasi
TugasDeskripsiKeterampilan yang dibutuhkan

Menerapkan API.

Untuk menerapkan REST API:

  1. Buka konsol API Gateway.

  2. Pilih API Anda.

  3. Pilih Deploy API. Untuk informasi selengkapnya tentang langkah ini, lihat dokumentasi API Gateway.

Pengembang aplikasi

Uji dengan alat eksternal.

Jalankan pengujian dengan alat eksternal untuk mengonfirmasi bahwa pesan berhasil diterima:

  1. Buka alat seperti Tukang Pos, Insomnia, atau cURL.

  2. Jalankan API Anda.

  3. Buka konsol Amazon SQS.

  4. Pilih antrian Anda.

  5. Muat pesan untuk melihat pesan baru.

Pengembang aplikasi
TugasDeskripsiKeterampilan yang dibutuhkan

Hapus API.

Di konsol API Gateway, pilih API yang Anda buat, lalu pilih Hapus.

Pengembang aplikasi

Hapus peran IAM.

Di konsol IAM, di panel Peran, pilih AWSGatewayRoleForSQS, lalu pilih Hapus.

Pengembang aplikasi

Hapus antrian SQS.

Di konsol Amazon SQS, di panel Antrian, pilih antrian SQS yang Anda buat, lalu pilih Hapus.

Pengembang aplikasi

Sumber daya terkait