Pilih preferensi cookie Anda

Kami menggunakan cookie penting serta alat serupa yang diperlukan untuk menyediakan situs dan layanan. Kami menggunakan cookie performa untuk mengumpulkan statistik anonim sehingga kami dapat memahami cara pelanggan menggunakan situs dan melakukan perbaikan. Cookie penting tidak dapat dinonaktifkan, tetapi Anda dapat mengklik “Kustom” atau “Tolak” untuk menolak cookie performa.

Jika Anda setuju, AWS dan pihak ketiga yang disetujui juga akan menggunakan cookie untuk menyediakan fitur situs yang berguna, mengingat preferensi Anda, dan menampilkan konten yang relevan, termasuk iklan yang relevan. Untuk menerima atau menolak semua cookie yang tidak penting, klik “Terima” atau “Tolak”. Untuk membuat pilihan yang lebih detail, klik “Kustomisasi”.

Siapkan integrasi kustom Lambda di API Gateway

Mode fokus
Siapkan integrasi kustom Lambda di API Gateway - Amazon API Gateway

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

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

Untuk menunjukkan cara mengatur integrasi kustom Lambda, kami membuat API Gateway API untuk mengekspos GET /greeting?greeter={name} metode untuk menjalankan fungsi Lambda. Gunakan salah satu contoh fungsi Lambda berikut untuk API Anda.

Gunakan salah satu contoh fungsi Lambda berikut:

Node.js
export const handler = function(event, context, callback) { var res ={ "statusCode": 200, "headers": { "Content-Type": "*/*" } }; if (event.greeter==null) { callback(new Error('Missing the required greeter parameter.')); } else if (event.greeter === "") { res.body = "Hello, World"; callback(null, res); } else { res.body = "Hello, " + event.greeter +"!"; callback(null, res); } };
Python
import json def lambda_handler(event, context): print(event) res = { "statusCode": 200, "headers": { "Content-Type": "*/*" } } if event['greeter'] == "": res['body'] = "Hello, World" elif (event['greeter']): res['body'] = "Hello, " + event['greeter'] + "!" else: raise Exception('Missing the required greeter parameter.') return res
export const handler = function(event, context, callback) { var res ={ "statusCode": 200, "headers": { "Content-Type": "*/*" } }; if (event.greeter==null) { callback(new Error('Missing the required greeter parameter.')); } else if (event.greeter === "") { res.body = "Hello, World"; callback(null, res); } else { res.body = "Hello, " + event.greeter +"!"; callback(null, res); } };

Fungsi merespons dengan pesan "Hello, {name}!" jika nilai greeter parameter adalah string yang tidak kosong. Ia mengembalikan pesan "Hello, World!" jika greeter nilai adalah string kosong. Fungsi mengembalikan pesan kesalahan "Missing the required greeter parameter." jika parameter penyambut tidak diatur dalam permintaan masuk. Kami menamai fungsinyaHelloWorld.

Anda dapat membuatnya di konsol Lambda atau dengan menggunakan. AWS CLI Pada bagian ini, kami mereferensikan fungsi ini menggunakan ARN berikut:

arn:aws:lambda:us-east-1:123456789012:function:HelloWorld

Dengan fungsi Lambda diatur di backend, lanjutkan untuk mengatur API.

Untuk mengatur integrasi kustom Lambda menggunakan AWS CLI
  1. Gunakan create-rest-apiperintah berikut untuk membuat API:

    aws apigateway create-rest-api --name 'HelloWorld (AWS CLI)'

    Outputnya akan terlihat seperti berikut:

    { "name": "HelloWorld (AWS CLI)", "id": "te6si5ach7", "rootResourceId" : "krznpq9xpg", "createdDate": 1508461860 }

    Anda menggunakan API id (te6si5ach7) dan rootResourceId (krznpq9xpg) di seluruh contoh ini.

  2. Gunakan perintah create-resource berikut untuk membuat API Gateway Resource dari: /greeting

    aws apigateway create-resource \ --rest-api-id te6si5ach7 \ --parent-id krznpq9xpg \ --path-part greeting

    Outputnya akan terlihat seperti berikut:

    { "path": "/greeting", "pathPart": "greeting", "id": "2jf6xt", "parentId": "krznpq9xpg" }

    Anda menggunakan id nilai greeting sumber daya (2jf6xt) untuk membuat metode pada /greeting sumber daya di langkah berikutnya.

  3. Gunakan perintah put-method berikut untuk membuat permintaan metode API dari: GET /greeting?greeter={name}

    aws apigateway put-method --rest-api-id te6si5ach7 \ --resource-id 2jf6xt \ --http-method GET \ --authorization-type "NONE" \ --request-parameters method.request.querystring.greeter=false

    Outputnya akan terlihat seperti berikut:

    { "apiKeyRequired": false, "httpMethod": "GET", "authorizationType": "NONE", "requestParameters": { "method.request.querystring.greeter": false } }

    Metode API ini memungkinkan klien untuk menerima salam dari fungsi Lambda di backend. greeterParameternya opsional karena backend harus menangani penelepon anonim atau penelepon yang diidentifikasi sendiri.

  4. Gunakan put-method-responseperintah berikut untuk mengatur 200 OK respon terhadap permintaan metodeGET /greeting?greeter={name}:

    aws apigateway put-method-response \ --rest-api-id te6si5ach7 \ --resource-id 2jf6xt \ --http-method GET \ --status-code 200

  5. Gunakan perintah put-integration berikut untuk mengatur integrasi GET /greeting?greeter={name} metode dengan fungsi Lambda, bernama. HelloWorld Fungsi menanggapi permintaan dengan pesan"Hello, {name}!", jika greeter parameter disediakan, atau"Hello, World!", jika parameter string query tidak diatur.

    aws apigateway put-integration \ --rest-api-id te6si5ach7 \ --resource-id 2jf6xt \ --http-method GET \ --type AWS \ --integration-http-method POST \ --uri arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:123456789012:function:HelloWorld/invocations \ --request-templates '{"application/json":"{\"greeter\":\"$input.params('greeter')\"}"}' \ --credentials arn:aws:iam::123456789012:role/apigAwsProxyRole

    Template pemetaan yang disediakan di sini menerjemahkan parameter string greeter kueri ke greeter properti payload JSON. Ini diperlukan karena input ke fungsi Lambda harus diekspresikan dalam tubuh.

    penting

    Untuk integrasi Lambda, Anda harus menggunakan metode HTTP POST untuk permintaan integrasi, sesuai dengan spesifikasi tindakan layanan Lambda untuk pemanggilan fungsi. uriParameternya adalah ARN dari tindakan pemanggilan fungsi.

    Outputnya akan terlihat seperti berikut:

    { "passthroughBehavior": "WHEN_NO_MATCH", "cacheKeyParameters": [], "uri": "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:123456789012:function:HelloWorld/invocations", "httpMethod": "POST", "requestTemplates": { "application/json": "{\"greeter\":\"$input.params('greeter')\"}" }, "cacheNamespace": "krznpq9xpg", "credentials": "arn:aws:iam::123456789012:role/apigAwsProxyRole", "type": "AWS" }

    Peran IAM apigAwsProxyRole harus memiliki kebijakan yang memungkinkan apigateway layanan untuk menjalankan fungsi Lambda. Alih-alih menyediakan peran IAMcredentials, Anda dapat memanggil perintah add-permission untuk menambahkan izin berbasis sumber daya. Beginilah cara konsol API Gateway menambahkan izin ini.

  6. Gunakan put-integration-responseperintah berikut untuk mengatur respons integrasi untuk meneruskan output fungsi Lambda ke klien sebagai respons 200 OK metode:

    aws apigateway put-integration-response \ --rest-api-id te6si5ach7 \ --resource-id 2jf6xt \ --http-method GET \ --status-code 200 \ --selection-pattern ""

    Dengan mengatur pola pilihan ke string kosong, 200 OK responsnya adalah default.

    Outputnya akan terlihat seperti berikut:

    { "selectionPattern": "", "statusCode": "200" }
  7. Gunakan perintah create-deployment berikut untuk men-deploy API ke tahap: test

    aws apigateway create-deployment \ --rest-api-id te6si5ach7 \ --stage-name test
  8. Uji API menggunakan perintah cURL berikut di terminal:

    curl -X GET 'https://te6si5ach7.execute-api.us-west-2.amazonaws.com/test/greeting?greeter=me' \ -H 'authorization: AWS4-HMAC-SHA256 Credential={access_key}/20171020/us-west-2/execute-api/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=f327...5751'
PrivasiSyarat situsPreferensi cookie
© 2025, Amazon Web Services, Inc. atau afiliasinya. Semua hak dilindungi undang-undang.