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
Pada bagian ini, kami menunjukkan cara mengatur API dengan integrasi proxy Lambda menggunakan. AWS CLI Untuk petunjuk terperinci untuk menggunakan konsol API Gateway untuk mengonfigurasi sumber daya proxy dengan integrasi proxy Lambda, lihatTutorial: Buat REST API dengan integrasi proxy Lambda.
Sebagai contoh, kita 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 khusus Lambda diSiapkan integrasi kustom Lambda di API Gateway, input ke fungsi Lambda ini dapat dinyatakan dalam parameter permintaan dan badan. Anda memiliki lebih banyak kebebasan 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. Pengaturan API lebih sederhana. Anda tidak mengonfigurasi respons metode atau respons integrasi sama sekali.
Untuk mengatur integrasi proxy Lambda menggunakan AWS CLI
-
Gunakan perintah create-rest-api 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 Sumber Daya Gateway API 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 pada langkah berikutnya. -
Gunakan put-method 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 disetel.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 memanggil fungsi Lambda. Untuk informasi selengkapnya tentang izin IAM, lihatModel izin API Gateway untuk memanggil API.Outputnya 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 untuk
credentials, Anda dapat menggunakan perintah add-permissions untuk menambahkan izin berbasis sumber daya. Inilah yang dilakukan konsol API Gateway. -
Gunakan perintah create-deployment berikut untuk menyebarkan 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, output adalah respons 200 dengan badan respons berikut:
Hello, jane!