Siapkan integrasi proxy Lambda untuk API Gateway menggunakan AWS CLI - Amazon API Gateway

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 = function(event, context, callback) { 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 + "!"; callback(null, 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
  1. 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) 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 {proxy+}

    Outputnya akan terlihat seperti berikut:

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

    Anda menggunakan id nilai {proxy+} sumber daya (2jf6xt) untuk membuat metode pada /{proxy+} sumber daya di langkah berikutnya.

  3. Gunakan put-metode berikut untuk membuat permintaan ANY metode: 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.

  4. Gunakan perintah put-integration berikut untuk mengatur integrasi ANY /{proxy+} metode dengan fungsi Lambda, bernama. HelloWorld Fungsi ini 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 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/apigAwsProxyRole
    penting

    Untuk integrasi Lambda, Anda harus menggunakan metode HTTP POST untuk permintaan integrasi, sesuai dengan spesifikasi tindakan layanan Lambda untuk pemanggilan fungsi. Peran IAM apigAwsProxyRole harus memiliki kebijakan yang memungkinkan apigateway layanan untuk menjalankan fungsi Lambda. Untuk informasi selengkapnya tentang izin IAM, lihat. Model izin API Gateway untuk menjalankan 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 IAMcredentials, Anda dapat menggunakan perintah add-permission untuk menambahkan izin berbasis sumber daya. Inilah yang dilakukan konsol API Gateway.

  5. Gunakan perintah create-deployment berikut untuk men-deploy API ke tahap: test

    aws apigateway create-deployment \ --rest-api-id te6si5ach7 \ --stage-name test
  6. 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 headergreeter: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!