Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tutorial: Menggunakan Lambda dengan API Gateway
Dalam tutorial ini, Anda membuat REST API di mana Anda menjalankan fungsi Lambda menggunakan permintaan HTTP. Fungsi Lambda Anda akan melakukan operasi membuat, membaca, memperbarui, dan menghapus (CRUD) pada tabel DynamoDB. Fungsi ini disediakan di sini untuk demonstrasi, tetapi Anda akan belajar mengkonfigurasi API Gateway REST API yang dapat menjalankan fungsi Lambda apa pun.
![Layanan dan sumber daya yang digunakan dalam tutorial ini](images/APIG_tut_resources.png)
Menggunakan API Gateway memberi pengguna titik akhir HTTP yang aman untuk menjalankan fungsi Lambda Anda dan dapat membantu mengelola panggilan dalam jumlah besar ke fungsi Anda dengan membatasi lalu lintas dan secara otomatis memvalidasi dan mengotorisasi panggilan API. API Gateway juga menyediakan kontrol keamanan fleksibel menggunakan AWS Identity and Access Management (IAM) dan Amazon Cognito. Ini berguna untuk kasus penggunaan di mana otorisasi terlebih dahulu diperlukan untuk panggilan ke aplikasi Anda.
Tip
Lambda menawarkan dua cara untuk menjalankan fungsi Anda melalui titik akhir HTTP: API Gateway dan fungsi Lambda. URLs Jika Anda tidak yakin metode mana yang terbaik untuk kasus penggunaan Anda, lihatPilih metode untuk menjalankan fungsi Lambda Anda menggunakan permintaan HTTP.
Untuk menyelesaikan tutorial ini, Anda akan melalui tahapan berikut:
-
Membuat dan mengkonfigurasi fungsi Lambda di Python atau Node.js untuk melakukan operasi pada tabel DynamoDB.
-
Buat REST API di API Gateway untuk terhubung ke fungsi Lambda Anda.
-
Buat tabel DynamoDB dan mengujinya dengan fungsi Lambda Anda di konsol.
-
Terapkan API Anda dan uji penyiapan lengkap menggunakan curl di terminal.
Dengan menyelesaikan tahapan ini, Anda akan mempelajari cara menggunakan API Gateway untuk membuat titik akhir HTTP yang dapat menjalankan fungsi Lambda dengan aman pada skala apa pun. Anda juga akan mempelajari cara menerapkan API Anda, dan cara mengujinya di konsol dan dengan mengirim permintaan HTTP menggunakan terminal.
Bagian-bagian
- Prasyarat
- Membuat kebijakan izin
- Membuat peran eksekusi
- Buat fungsi
- Memanggil fungsi menggunakan AWS CLI
- Membuat REST API menggunakan API Gateway
- Buat sumber daya di REST API
- Buat metode HTTP POST
- Membuat tabel DynamoDB
- Uji integrasi API Gateway, Lambda, dan DynamoDB
- Terapkan API
- Gunakan curl untuk menjalankan fungsi Anda menggunakan permintaan HTTP
- Bersihkan sumber daya Anda (opsional)
Prasyarat
Jika Anda tidak memiliki Akun AWS, selesaikan langkah-langkah berikut untuk membuatnya.
Untuk mendaftar untuk Akun AWS
Buka https://portal.aws.amazon.com/billing/pendaftaran.
Ikuti petunjuk online.
Bagian dari prosedur pendaftaran melibatkan tindakan menerima panggilan telepon dan memasukkan kode verifikasi di keypad telepon.
Saat Anda mendaftar untuk sebuah Akun AWS, sebuah Pengguna root akun AWSdibuat. Pengguna root memiliki akses ke semua Layanan AWS dan sumber daya di akun. Sebagai praktik keamanan terbaik, tetapkan akses administratif ke pengguna, dan gunakan hanya pengguna root untuk melakukan tugas yang memerlukan akses pengguna root.
AWS mengirimi Anda email konfirmasi setelah proses pendaftaran selesai. Kapan saja, Anda dapat melihat aktivitas akun Anda saat ini dan mengelola akun Anda dengan masuk https://aws.amazon.com.rproxy.goskope.comke/
Setelah Anda mendaftar Akun AWS, amankan Pengguna root akun AWS, aktifkan AWS IAM Identity Center, dan buat pengguna administratif sehingga Anda tidak menggunakan pengguna root untuk tugas sehari-hari.
Amankan Anda Pengguna root akun AWS
-
Masuk ke AWS Management Console
sebagai pemilik akun dengan memilih pengguna Root dan memasukkan alamat Akun AWS email Anda. Di laman berikutnya, masukkan kata sandi. Untuk bantuan masuk dengan menggunakan pengguna root, lihat Masuk sebagai pengguna root di AWS Sign-In Panduan Pengguna.
-
Mengaktifkan autentikasi multi-faktor (MFA) untuk pengguna root Anda.
Untuk petunjuk, lihat Mengaktifkan perangkat MFA virtual untuk pengguna Akun AWS root (konsol) Anda di Panduan Pengguna IAM.
Buat pengguna dengan akses administratif
-
Aktifkan Pusat Identitas IAM.
Untuk mendapatkan petunjuk, silakan lihat Mengaktifkan AWS IAM Identity Center di Panduan Pengguna AWS IAM Identity Center .
-
Di Pusat Identitas IAM, berikan akses administratif ke pengguna.
Untuk tutorial tentang menggunakan Direktori Pusat Identitas IAM sebagai sumber identitas Anda, lihat Mengkonfigurasi akses pengguna dengan default Direktori Pusat Identitas IAM di Panduan AWS IAM Identity Center Pengguna.
Masuk sebagai pengguna dengan akses administratif
-
Untuk masuk dengan pengguna Pusat Identitas IAM, gunakan URL masuk yang dikirim ke alamat email saat Anda membuat pengguna Pusat Identitas IAM.
Untuk bantuan masuk menggunakan pengguna Pusat Identitas IAM, lihat Masuk ke portal AWS akses di Panduan AWS Sign-In Pengguna.
Tetapkan akses ke pengguna tambahan
-
Di Pusat Identitas IAM, buat set izin yang mengikuti praktik terbaik menerapkan izin hak istimewa paling sedikit.
Untuk petunjuknya, lihat Membuat set izin di Panduan AWS IAM Identity Center Pengguna.
-
Tetapkan pengguna ke grup, lalu tetapkan akses masuk tunggal ke grup.
Untuk petunjuk, lihat Menambahkan grup di Panduan AWS IAM Identity Center Pengguna.
Jika Anda belum menginstal AWS Command Line Interface, ikuti langkah-langkah di Menginstal atau memperbarui versi terbaru AWS CLI untuk menginstalnya.
Tutorial ini membutuhkan terminal baris perintah atau shell untuk menjalankan perintah. Di Linux dan macOS, gunakan shell dan manajer paket pilihan Anda.
catatan
Di Windows, beberapa perintah Bash CLI yang biasa Anda gunakan dengan Lambda (zip
seperti) tidak didukung oleh terminal bawaan sistem operasi. Untuk mendapatkan versi terintegrasi Windows dari Ubuntu dan Bash, instal Windows Subsystem untuk
Membuat kebijakan izin
![Langkah 1 membuat kebijakan izin](images/APIG_tut_steps_1.png)
Sebelum Anda dapat membuat peran eksekusi untuk fungsi Lambda Anda, Anda harus terlebih dahulu membuat kebijakan izin untuk memberikan izin fungsi Anda untuk mengakses sumber daya yang diperlukan. AWS Untuk tutorial ini, kebijakan memungkinkan Lambda untuk melakukan operasi CRUD pada tabel DynamoDB dan menulis ke Amazon Logs. CloudWatch
Untuk membuat kebijakan
-
Buka halaman Kebijakan
konsol IAM. -
Pilih Buat Kebijakan.
-
Pilih tab JSON, lalu tempelkan kebijakan khusus berikut ke editor JSON.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1428341300017", "Action": [ "dynamodb:DeleteItem", "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:UpdateItem" ], "Effect": "Allow", "Resource": "*" }, { "Sid": "", "Resource": "*", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Effect": "Allow" } ] }
-
Pilih Selanjutnya: Tag.
-
Pilih Berikutnya: Tinjau.
-
Di bawah Kebijakan peninjauan, untuk Nama kebijakan, masukkan
lambda-apigateway-policy
. -
Pilih Buat kebijakan.
Membuat peran eksekusi
![Langkah 2 buat peran eksekusi](images/APIG_tut_steps_2.png)
Peran eksekusi adalah peran AWS Identity and Access Management (IAM) yang memberikan izin fungsi Lambda untuk mengakses dan sumber daya. Layanan AWS Untuk mengaktifkan fungsi Anda menjalankan operasi pada tabel DynamoDB, Anda melampirkan kebijakan izin yang Anda buat di langkah sebelumnya.
Untuk membuat peran eksekusi dan melampirkan kebijakan izin kustom
-
Buka halaman Peran
dari konsol IAM. -
Pilih Buat peran.
-
Untuk jenis entitas tepercaya, pilih AWS layanan, lalu untuk kasus penggunaan, pilih Lambda.
-
Pilih Berikutnya.
-
Dalam kotak pencarian kebijakan, masukkan
lambda-apigateway-policy
. -
Di hasil penelusuran, pilih kebijakan yang Anda buat (
lambda-apigateway-policy
), lalu pilih Berikutnya. -
Di bawah Rincian peran, untuk nama Peran, masukkan
lambda-apigateway-role
, lalu pilih Buat peran.
Kemudian dalam tutorial, Anda memerlukan Nama Sumber Daya Amazon (ARN) dari peran yang baru saja Anda buat. Pada halaman Peran konsol IAM, pilih nama role Anda (lambda-apigateway-role
) dan salin ARN Peran yang ditampilkan di halaman Ringkasan.
Buat fungsi
![Langkah 3 buat fungsi](images/APIG_tut_steps_3.png)
Contoh kode berikut menerima input peristiwa dari API Gateway yang menentukan operasi yang akan dilakukan pada tabel DynamoDB yang akan Anda buat dan beberapa data payload. Jika parameter yang diterima fungsi valid, ia melakukan operasi yang diminta di atas meja.
Memanggil fungsi menggunakan AWS CLI
![Langkah 4 memanggil fungsi menggunakan AWS CLI](images/APIG_tut_steps_4.png)
Sebelum mengintegrasikan fungsi Anda dengan API Gateway, konfirmasikan bahwa Anda telah berhasil menerapkan fungsi tersebut. Buat acara pengujian yang berisi parameter API Gateway API yang akan dikirim ke Lambda dan gunakan AWS CLI invoke
perintah untuk menjalankan fungsi Anda.
Untuk menjalankan fungsi Lambda dengan AWS CLI
-
Simpan JSON berikut sebagai file bernama
input.txt
.{ "operation": "echo", "payload": { "somekey1": "somevalue1", "somekey2": "somevalue2" } }
-
Jalankan perintah
invoke
AWS CLI berikut.aws lambda invoke \ --function-name LambdaFunctionOverHttps \ --payload file://input.txt outputfile.txt \ --cli-binary-format raw-in-base64-out
cli-binary-formatOpsi ini diperlukan jika Anda menggunakan AWS CLI versi 2. Untuk menjadikan ini pengaturan default, jalankan
aws configure set cli-binary-format raw-in-base64-out
. Untuk informasi selengkapnya, lihat opsi baris perintah global yang AWS CLI didukung di Panduan AWS Command Line Interface Pengguna untuk Versi 2.Anda akan melihat tanggapan berikut:
{ "StatusCode": 200, "ExecutedVersion": "LATEST" }
-
Konfirmasikan bahwa fungsi Anda melakukan
echo
operasi yang Anda tentukan dalam acara pengujian JSON. Periksaoutputfile.txt
file dan verifikasi berisi yang berikut:{"somekey1": "somevalue1", "somekey2": "somevalue2"}
Membuat REST API menggunakan API Gateway
![Langkah 5 buat API](images/APIG_tut_steps_5.png)
Pada langkah ini, Anda membuat API Gateway REST API yang akan Anda gunakan untuk menjalankan fungsi Lambda Anda.
Untuk membuat API
-
Buka konsol API Gateway
. -
Pilih Buat API.
-
Di kotak REST API, pilih Build.
-
Di bawah detail API, biarkan API Baru dipilih, dan untuk Nama API, masukkan
DynamoDBOperations
. -
Pilih Buat API.
Buat sumber daya di REST API
![Langkah 6 membuat sumber daya API](images/APIG_tut_steps_6.png)
Untuk menambahkan metode HTTP ke API Anda, Anda harus terlebih dahulu membuat sumber daya agar metode tersebut dapat dioperasikan. Di sini Anda membuat sumber daya untuk mengelola tabel DynamoDB Anda.
Untuk membuat sumber daya
-
Di konsol API Gateway
, pada halaman Resources untuk API Anda, pilih Create Resource. -
Dalam Rincian sumber daya, untuk nama Sumber daya masukkan
DynamoDBManager
. -
Pilih Buat Sumber Daya.
Buat metode HTTP POST
![Langkah 7 membuat metode HTTP POST](images/APIG_tut_steps_7.png)
Pada langkah ini, Anda membuat metode (POST
) untuk DynamoDBManager
sumber daya Anda. Anda menautkan POST
metode ini ke fungsi Lambda Anda sehingga ketika metode menerima permintaan HTTP, API Gateway memanggil fungsi Lambda Anda.
catatan
Untuk tujuan tutorial ini, satu metode HTTP (POST
) digunakan untuk memanggil fungsi Lambda tunggal yang melakukan semua operasi pada tabel DynamoDB Anda. Dalam aplikasi nyata, praktik terbaik adalah menggunakan fungsi Lambda dan metode HTTP yang berbeda untuk setiap operasi. Untuk informasi lebih lanjut, lihat Monolit Lambda
Untuk membuat metode POST
-
Pada halaman Resources untuk API Anda, pastikan
/DynamoDBManager
sumber daya disorot. Kemudian, di panel Methods, pilih Create method. -
Untuk jenis Metode, pilih POST.
-
Untuk jenis Integrasi, biarkan fungsi Lambda dipilih.
-
Untuk fungsi Lambda, pilih Amazon Resource Name (ARN) untuk function ().
LambdaFunctionOverHttps
-
Pilih metode Buat.
Membuat tabel DynamoDB
![Langkah 8 membuat tabel DynamoDB](images/APIG_tut_steps_8.png)
Buat tabel DynamoDB kosong tempat fungsi Lambda Anda akan melakukan operasi CRUD.
Untuk membuat tabel DynamoDB
-
Buka halaman Tabel
di konsol DynamoDB. -
Pilih Buat tabel.
-
Di bawah Rincian tabel, lakukan hal berikut:
-
Untuk Nama tabel, masukkan
lambda-apigateway
. -
Untuk kunci Partition, masukkan
id
, dan simpan tipe data yang ditetapkan sebagai String.
-
-
Di bawah Pengaturan tabel, pertahankan pengaturan Default.
-
Pilih Buat tabel.
Uji integrasi API Gateway, Lambda, dan DynamoDB
![Langkah 9 menguji integrasi API Gateway, Lambda, dan DynamoDB](images/APIG_tut_steps_9.png)
Anda sekarang siap untuk menguji integrasi metode API Gateway API Anda dengan fungsi Lambda dan tabel DynamoDB Anda. Menggunakan konsol API Gateway, Anda mengirim permintaan langsung ke POST
metode menggunakan fungsi pengujian konsol. Pada langkah ini, pertama-tama Anda menggunakan create
operasi untuk menambahkan item baru ke tabel DynamoDB Anda, lalu Anda menggunakan operasi untuk update
memodifikasi item.
Tes 1: Untuk membuat item baru di tabel DynamoDB Anda
-
Di konsol API Gateway
, pilih API ( DynamoDBOperations
) Anda. -
Pilih metode POST di bawah
DynamoDBManager
sumber daya. -
Pilih tab Uji. Anda mungkin perlu memilih tombol panah kanan untuk menampilkan tab.
-
Di bawah metode Test, biarkan string Query dan Header kosong. Untuk badan Permintaan, tempel JSON berikut:
{ "operation": "create", "payload": { "Item": { "id": "1234ABCD", "number": 5 } } }
-
Pilih Uji.
Hasil yang ditampilkan saat tes selesai harus menunjukkan status
200
. Kode status ini menunjukkan bahwacreate
operasi berhasil.Untuk mengonfirmasi, periksa apakah tabel DynamoDB Anda sekarang berisi item baru.
-
Buka halaman Tabel
konsol DynamoDB dan pilih tabel. lambda-apigateway
-
Pilih Jelajahi item tabel. Di panel Item yang dikembalikan, Anda akan melihat satu item dengan id
1234ABCD
dan nomornya5
. Contoh:
Tes 2: Untuk memperbarui item di tabel DynamoDB Anda
-
Di konsol API Gateway
, kembali ke tab Test metode POST Anda. -
Di bawah metode Test, biarkan string Query dan Header kosong. Untuk badan Permintaan, tempel JSON berikut:
{ "operation": "update", "payload": { "Key": { "id": "1234ABCD" }, "UpdateExpression": "SET #num = :newNum", "ExpressionAttributeNames": { "#num": "number" }, "ExpressionAttributeValues": { ":newNum": 10 } } }
-
Pilih Uji.
Hasil yang ditampilkan saat tes selesai harus menunjukkan status
200
. Kode status ini menunjukkan bahwaupdate
operasi berhasil.Untuk mengonfirmasi, periksa apakah item di tabel DynamoDB Anda telah dimodifikasi.
-
Buka halaman Tabel
konsol DynamoDB dan pilih tabel. lambda-apigateway
-
Pilih Jelajahi item tabel. Di panel Item yang dikembalikan, Anda akan melihat satu item dengan id
1234ABCD
dan nomornya10
.
Terapkan API
![Langkah 10 menyebarkan API](images/APIG_tut_steps_10.png)
Agar klien dapat memanggil API, Anda harus membuat penerapan dan tahap terkait. Tahap mewakili snapshot API Anda termasuk metode dan integrasinya.
Untuk menerapkan API
-
Buka APIshalaman konsol API Gateway
dan pilih DynamoDBOperations
API. -
Pada halaman Sumber Daya untuk API Anda, pilih Deploy API.
-
Untuk Stage, pilih *Tahap baru*, lalu untuk nama Stage, masukkan.
test
-
Pilih Deploy.
-
Di panel Detail tahap, salin URL Panggilan. Anda akan menggunakan ini di langkah berikutnya untuk memanggil fungsi Anda menggunakan permintaan HTTP.
Gunakan curl untuk menjalankan fungsi Anda menggunakan permintaan HTTP
![Langkah 11 memanggil fungsi dengan permintaan HTTP](images/APIG_tut_steps_11.png)
Anda sekarang dapat menjalankan fungsi Lambda Anda dengan mengeluarkan permintaan HTTP ke API Anda. Pada langkah ini, Anda akan membuat item baru di tabel DynamoDB Anda dan kemudian melakukan operasi baca, perbarui, dan hapus pada item tersebut.
Untuk membuat item di tabel DynamoDB Anda menggunakan curl
-
Jalankan
curl
perintah berikut menggunakan URL pemanggilan yang Anda salin pada langkah sebelumnya. Saat Anda menggunakan curl dengan opsi-d
(data), secara otomatis menggunakan metode HTTP POST.curl https://
l8togsqxd8.execute-api.us-east-2.amazonaws.com/test
/DynamoDBManager \ -d '{"operation": "create", "payload": {"Item": {"id": "5678EFGH", "number": 15}}}'Jika operasi berhasil, Anda akan melihat respons yang dikembalikan dengan kode status HTTP 200.
-
Anda juga dapat menggunakan konsol DynamoDB untuk memverifikasi bahwa item baru ada di tabel Anda dengan melakukan hal berikut:
-
Buka halaman Tabel
konsol DynamoDB dan pilih tabel. lambda-apigateway
-
Pilih Jelajahi item tabel. Di panel Item yang dikembalikan, Anda akan melihat item dengan id
5678EFGH
dan nomornya15
.
-
Untuk membaca item di tabel DynamoDB Anda menggunakan curl
-
Jalankan
curl
perintah berikut untuk membaca nilai item yang baru saja Anda buat. Gunakan URL pemanggilan Anda sendiri.curl https://
avos4dr2rk.execute-api.us-east-2.amazonaws.com/test
/DynamoDBManager -d \ '{"operation": "read", "payload": {"Key": {"id": "5678EFGH"}}}'Anda akan melihat output seperti salah satu dari berikut ini tergantung pada apakah Anda memilih kode fungsi Node.js atau Python:
Untuk memperbarui item dalam tabel DynamoDB Anda menggunakan curl
-
Jalankan
curl
perintah berikut untuk memperbarui item yang baru saja Anda buat dengan mengubahnumber
nilainya. Gunakan URL pemanggilan Anda sendiri.curl https://
avos4dr2rk.execute-api.us-east-2.amazonaws.com/test
/DynamoDBManager \ -d '{"operation": "update", "payload": {"Key": {"id": "5678EFGH"}, "UpdateExpression": "SET #num = :new_value", "ExpressionAttributeNames": {"#num": "number"}, "ExpressionAttributeValues": {":new_value": 42}}}' -
Untuk mengonfirmasi bahwa nilai
number
item telah diperbarui, jalankan perintah baca lainnya:curl https://
avos4dr2rk.execute-api.us-east-2.amazonaws.com/test
/DynamoDBManager \ -d '{"operation": "read", "payload": {"Key": {"id": "5678EFGH"}}}'
Untuk menghapus item dalam tabel DynamoDB Anda menggunakan curl
-
Jalankan
curl
perintah berikut untuk menghapus item yang baru saja Anda buat. Gunakan URL pemanggilan Anda sendiri.curl https://
l8togsqxd8.execute-api.us-east-2.amazonaws.com/test
/DynamoDBManager \ -d '{"operation": "delete", "payload": {"Key": {"id": "5678EFGH"}}}' Konfirmasikan bahwa operasi penghapusan berhasil. Di panel Item yang dikembalikan dari halaman item Jelajahi konsol DynamoDB, verifikasi bahwa item dengan
5678EFGH
id tidak lagi ada di tabel.
Bersihkan sumber daya Anda (opsional)
Sekarang Anda dapat menghapus sumber daya yang Anda buat untuk tutorial ini, kecuali Anda ingin mempertahankannya. Dengan menghapus AWS sumber daya yang tidak lagi Anda gunakan, Anda mencegah tagihan yang tidak perlu ke Anda Akun AWS.
Untuk menghapus fungsi Lambda
-
Buka halaman Fungsi
di konsol Lambda. -
Pilih fungsi yang Anda buat.
-
Pilih Tindakan, Hapus.
-
Ketik
confirm
kolom input teks dan pilih Hapus.
Untuk menghapus peran eksekusi
-
Buka halaman Peran
dari konsol IAM. -
Pilih peran eksekusi yang Anda buat.
-
Pilih Hapus.
-
Masukkan nama peran di bidang input teks dan pilih Hapus.
Untuk menghapus API
-
Buka halaman APIs
di konsol API Gateway. -
Pilih API yang Anda buat.
-
Pilih Tindakan, Hapus.
-
Pilih Hapus.
Untuk menghapus tabel DynamoDB
-
Buka halaman Tabel
di konsol DynamoDB. -
Pilih tabel yang Anda buat.
-
Pilih Hapus.
-
Masukkan
delete
di kotak teks. -
Pilih Hapus tabel.