Jalankan API Gateway secara lokal dengan AWS SAM - AWS Serverless Application Model

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

Jalankan API Gateway secara lokal dengan AWS SAM

Menjalankan Amazon API Gateway secara lokal dapat memiliki berbagai manfaat. Misalnya, menjalankan API Gateway secara lokal memungkinkan Anda menguji titik akhir API secara lokal sebelum penerapan ke cloud. AWS Jika Anda menguji secara lokal terlebih dahulu, Anda sering dapat mengurangi pengujian dan pengembangan di cloud, yang dapat membantu mengurangi biaya. Selain itu, menjalankan secara lokal membuat debugging lebih mudah.

Untuk memulai instance lokal API Gateway yang dapat Anda gunakan untuk menguji fungsionalitas permintaan/respons HTTP, gunakan perintah tersebut. sam local start-api AWS SAMCLI Fungsionalitas ini memiliki fitur hot reload sehingga Anda dapat dengan cepat mengembangkan dan mengulangi fungsi Anda.

catatan

Hot reload adalah ketika hanya file yang diubah yang di-refresh, dan status aplikasi tetap sama. Sebaliknya, live reload adalah ketika seluruh aplikasi di-refresh, dan status aplikasi hilang.

Untuk petunjuk tentang penggunaan sam local start-api perintah, lihatPengantar pengujian dengan sam local start-api.

Secara default, AWS SAM menggunakan integrasi AWS Lambda proxy dan mendukung keduanya HttpApi dan jenis Api sumber daya. Untuk informasi selengkapnya tentang integrasi proxy untuk jenis HttpApi sumber daya, lihat Bekerja dengan integrasi AWS Lambda proxy untuk API HTTP di Panduan Pengembang API Gateway. Untuk informasi selengkapnya tentang integrasi proxy dengan tipe Api sumber daya, lihat Memahami integrasi proxy API Gateway Lambda di Panduan Pengembang API Gateway.

Contoh:

$ sam local start-api

AWS SAM secara otomatis menemukan fungsi apa pun dalam AWS SAM template Anda yang memiliki HttpApi atau sumber Api peristiwa yang ditentukan. Kemudian, ia memasang fungsi pada jalur HTTP yang ditentukan.

Pada contoh Api berikut, fungsi Ratings memasang ratings.py:handler() di /ratings untuk permintaan GET:

Ratings: Type: AWS::Serverless::Function Properties: Handler: ratings.handler Runtime: python3.9 Events: Api: Type: Api Properties: Path: /ratings Method: get

Berikut adalah contoh respons Api:

// Example of a Proxy Integration response exports.handler = (event, context, callback) => { callback(null, { statusCode: 200, headers: { "x-custom-header" : "my custom header value" }, body: "hello world" }); }

Jika Anda memodifikasi kode fungsi Anda, jalankan sam build perintah sam local start-api untuk mendeteksi perubahan Anda.

File variabel lingkungan

Untuk mendeklarasikan variabel lingkungan secara lokal yang mengesampingkan nilai yang ditentukan dalam template Anda, lakukan hal berikut:

  1. Buat file JSON yang berisi variabel lingkungan untuk diganti.

  2. Gunakan --env-vars argumen untuk mengganti nilai yang ditentukan dalam template Anda.

Mendeklarasikan variabel lingkungan

Untuk mendeklarasikan variabel lingkungan yang berlaku secara global ke semua sumber daya, tentukan Parameters objek seperti berikut:

{ "Parameters": { "TABLE_NAME": "localtable", "BUCKET_NAME": "testBucket", "STAGE": "dev" } }

Untuk mendeklarasikan variabel lingkungan yang berbeda untuk setiap sumber daya, tentukan objek untuk setiap sumber daya seperti berikut:

{ "MyFunction1": { "TABLE_NAME": "localtable", "BUCKET_NAME": "testBucket", }, "MyFunction2": { "TABLE_NAME": "localtable", "STAGE": "dev" } }

Saat menentukan objek untuk setiap sumber daya, Anda dapat menggunakan pengidentifikasi berikut, yang terdaftar dalam urutan prioritas tertinggi hingga terendah:

  1. logical_id

  2. function_id

  3. function_name

  4. Pengidentifikasi jalur lengkap

Anda dapat menggunakan kedua metode sebelumnya untuk mendeklarasikan variabel lingkungan bersama-sama dalam satu file. Saat melakukannya, variabel lingkungan yang Anda sediakan untuk sumber daya tertentu lebih diutamakan daripada variabel lingkungan global.

Simpan variabel lingkungan Anda dalam file JSON, sepertienv.json.

Mengesampingkan nilai variabel lingkungan

Untuk mengganti variabel lingkungan dengan yang ditentukan dalam file JSON Anda, gunakan --env-vars argumen dengan perintah invoke orstart-api. Sebagai contoh:

$ sam local start-api --env-vars env.json

Lapisan

Jika aplikasi Anda menyertakan lapisan, untuk informasi tentang cara men-debug masalah dengan lapisan pada host lokal Anda, lihatTingkatkan efisiensi menggunakan lapisan Lambda dengan AWS SAM.