Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Siapkan integrasi proxy Lambda untuk API Gateway menggunakan AWS CLI
Di bagian ini, kami menunjukkan cara menyiapkan API dengan integrasi proxy Lambda menggunakan. AWS CLI Untuk petunjuk mendetail tentang penggunaan konsol API Gateway guna mengonfigurasi sumber daya proxy dengan integrasi proxy Lambda, lihat. Tutorial: Buat REST API dengan integrasi proxy Lambda
Sebagai contoh, kami menggunakan contoh fungsi Lambda berikut sebagai backend API:
export const handler = async(event, context) => { console.log('Received event:', JSON.stringify(event, null, 2)); var res ={ "statusCode": 200, "headers": { "Content-Type": "*/*" } }; var greeter = 'World'; if (event.greeter && event.greeter!=="") { greeter = event.greeter; } else if (event.body && event.body !== "") { var body = JSON.parse(event.body); if (body.greeter && body.greeter !== "") { greeter = body.greeter; } } else if (event.queryStringParameters && event.queryStringParameters.greeter && event.queryStringParameters.greeter !== "") { greeter = event.queryStringParameters.greeter; } else if (event.multiValueHeaders && event.multiValueHeaders.greeter && event.multiValueHeaders.greeter != "") { greeter = event.multiValueHeaders.greeter.join(" and "); } else if (event.headers && event.headers.greeter && event.headers.greeter != "") { greeter = event.headers.greeter; } res.body = "Hello, " + greeter + "!"; return res };
Membandingkan ini dengan pengaturan integrasi kustom Lambda diSiapkan integrasi kustom Lambda di API Gateway, input ke fungsi Lambda ini dapat dinyatakan dalam parameter permintaan dan isi. Anda memiliki lebih banyak garis lintang untuk memungkinkan klien meneruskan data input yang sama. Di sini, klien dapat meneruskan nama penyambut sebagai parameter string kueri, header, atau properti tubuh. Fungsi ini juga dapat mendukung integrasi kustom Lambda. Penyiapan API lebih sederhana. Anda tidak mengonfigurasi respons metode atau respons integrasi sama sekali.
Untuk mengatur integrasi proxy Lambda menggunakan AWS CLI
-
Gunakan create-rest-apiperintah berikut untuk membuat API:
aws apigateway create-rest-api --name 'HelloWorld (AWS CLI)'Outputnya akan terlihat seperti berikut:
{ "name": "HelloWorldProxy (AWS CLI)", "id": "te6si5ach7", "rootResourceId" : "krznpq9xpg", "createdDate": 1508461860 }Anda menggunakan API
id(te6si5ach7) danrootResourceId(krznpq9xpg) di seluruh contoh ini. -
Gunakan perintah create-resource berikut untuk membuat API Gateway Resource dari:
/greetingaws apigateway create-resource \ --rest-api-id te6si5ach7 \ --parent-id krznpq9xpg \ --path-part {proxy+}Outputnya akan terlihat seperti berikut:
{ "path": "/{proxy+}", "pathPart": "{proxy+}", "id": "2jf6xt", "parentId": "krznpq9xpg" }Anda menggunakan
idnilai{proxy+}sumber daya (2jf6xt) untuk membuat metode pada/{proxy+}sumber daya di langkah berikutnya. -
Gunakan put-metode berikut untuk membuat permintaan
ANYmetode:ANY /{proxy+}aws apigateway put-method --rest-api-id te6si5ach7 \ --resource-id 2jf6xt \ --http-method ANY \ --authorization-type "NONE"Outputnya akan terlihat seperti berikut:
{ "apiKeyRequired": false, "httpMethod": "ANY", "authorizationType": "NONE" }Metode API ini memungkinkan klien untuk menerima atau mengirim salam dari fungsi Lambda di backend.
-
Gunakan perintah put-integration berikut untuk mengatur integrasi
ANY /{proxy+}metode dengan fungsi Lambda, bernama.HelloWorldFungsi ini menanggapi permintaan dengan pesan"Hello, {name}!", jikagreeterparameter disediakan, atau"Hello, World!", jika parameter string kueri tidak diatur.aws apigateway put-integration \ --rest-api-id te6si5ach7 \ --resource-id 2jf6xt \ --http-method ANY \ --type AWS_PROXY \ --integration-http-method POST \ --uri arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:123456789012:function:HelloWorld/invocations \ --credentials arn:aws:iam::123456789012:role/apigAwsProxyRolepenting
Untuk integrasi Lambda, Anda harus menggunakan metode HTTP
POSTuntuk permintaan integrasi, sesuai dengan spesifikasi tindakan layanan Lambda untuk pemanggilan fungsi. Peran IAMapigAwsProxyRoleharus memiliki kebijakan yang memungkinkanapigatewaylayanan untuk menjalankan fungsi Lambda. Untuk informasi selengkapnya tentang izin IAM, lihat. Model izin API Gateway untuk menjalankan APIOutputnya akan terlihat seperti berikut:
{ "passthroughBehavior": "WHEN_NO_MATCH", "cacheKeyParameters": [], "uri": "arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:1234567890:function:HelloWorld/invocations", "httpMethod": "POST", "cacheNamespace": "vvom7n", "credentials": "arn:aws:iam::1234567890:role/apigAwsProxyRole", "type": "AWS_PROXY" }Alih-alih menyediakan peran IAM
credentials, Anda dapat menggunakan perintah add-permission untuk menambahkan izin berbasis sumber daya. Inilah yang dilakukan konsol API Gateway. -
Gunakan perintah create-deployment berikut untuk men-deploy API ke tahap:
testaws apigateway create-deployment \ --rest-api-id te6si5ach7 \ --stage-name test -
Uji API menggunakan perintah cURL berikut di terminal.
Memanggil API dengan parameter string kueri
?greeter=jane:curl -X GET 'https://te6si5ach7.execute-api.us-west-2.amazonaws.com/test/greeting?greeter=jane'Memanggil API dengan parameter header
greeter:jane:curl -X GET https://te6si5ach7.execute-api.us-west-2.amazonaws.com/test/hi \ -H 'content-type: application/json' \ -H 'greeter: jane'Memanggil API dengan badan
{"greeter":"jane"}:curl -X POST https://te6si5ach7.execute-api.us-west-2.amazonaws.com/test/hi \ -H 'content-type: application/json' \ -d '{ "greeter": "jane" }'Dalam semua kasus, outputnya adalah respons 200 dengan badan respons berikut:
Hello, jane!