Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Integrasi proxy Lambda memungkinkan Anda mengintegrasikan API rute dengan fungsi Lambda. Saat klien memanggil AndaAPI, API Gateway mengirimkan permintaan ke fungsi Lambda dan mengembalikan respons fungsi ke klien. Untuk contoh membuat HTTPAPI, lihatBuat API HTTP.
Versi format muatan
Versi format payload menentukan format peristiwa yang dikirim API Gateway ke integrasi Lambda, dan bagaimana API Gateway menafsirkan respons dari Lambda. Jika Anda tidak menentukan versi format payload, akan AWS Management Console menggunakan versi terbaru secara default. Jika Anda membuat integrasi Lambda dengan menggunakan AWS CLI, AWS CloudFormation, atauSDK, Anda harus menentukan. payloadFormatVersion
Nilai yang di-support adalah 1.0
dan 2.0
.
Untuk informasi selengkapnya tentang cara menyetelpayloadFormatVersion
, lihat create-integration. Untuk informasi selengkapnya tentang cara menentukan integrasi payloadFormatVersion
yang ada, lihat get-integration
Perbedaan format payload
Daftar berikut menunjukkan perbedaan antara versi format payload 1.0
dan 2.0
payload:
Format
2.0
tidak memilikimultiValueHeaders
ataumultiValueQueryStringParameters
bidang. Header duplikat dikombinasikan dengan koma dan termasuk dalam bidang.headers
String kueri duplikat digabungkan dengan koma dan disertakan dalam bidang.queryStringParameters
-
Format
2.0
memilikirawPath
. Jika Anda menggunakan API pemetaan untuk menghubungkan tahap Anda ke nama domain kustom, tidakrawPath
akan memberikan nilai API pemetaan. Gunakan format1.0
danpath
untuk mengakses API pemetaan untuk nama domain kustom Anda. Format
2.0
termasukcookies
bidang baru. Semua header cookie dalam permintaan digabungkan dengan koma dan ditambahkan ke bidang.cookies
Dalam menanggapi klien, setiap cookie menjadiset-cookie
header.
Struktur format muatan
Contoh berikut menunjukkan struktur setiap versi format payload. Semua headername diberi huruf kecil.
{
"version": "2.0",
"routeKey": "$default",
"rawPath": "/my/path",
"rawQueryString": "parameter1=value1¶meter1=value2¶meter2=value",
"cookies": [
"cookie1",
"cookie2"
],
"headers": {
"header1": "value1",
"header2": "value1,value2"
},
"queryStringParameters": {
"parameter1": "value1,value2",
"parameter2": "value"
},
"requestContext": {
"accountId": "123456789012",
"apiId": "api-id",
"authentication": {
"clientCert": {
"clientCertPem": "CERT_CONTENT",
"subjectDN": "www.example.com",
"issuerDN": "Example issuer",
"serialNumber": "a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1",
"validity": {
"notBefore": "May 28 12:30:02 2019 GMT",
"notAfter": "Aug 5 09:36:04 2021 GMT"
}
}
},
"authorizer": {
"jwt": {
"claims": {
"claim1": "value1",
"claim2": "value2"
},
"scopes": [
"scope1",
"scope2"
]
}
},
"domainName": "id.execute-api.us-east-1.amazonaws.com",
"domainPrefix": "id",
"http": {
"method": "POST",
"path": "/my/path",
"protocol": "HTTP/1.1",
"sourceIp": "192.0.2.1",
"userAgent": "agent"
},
"requestId": "id",
"routeKey": "$default",
"stage": "$default",
"time": "12/Mar/2020:19:03:58 +0000",
"timeEpoch": 1583348638390
},
"body": "Hello from Lambda",
"pathParameters": {
"parameter1": "value1"
},
"isBase64Encoded": false,
"stageVariables": {
"stageVariable1": "value1",
"stageVariable2": "value2"
}
}
Format respons fungsi Lambda
Versi format payload menentukan struktur respons yang harus dikembalikan oleh fungsi Lambda Anda.
Respons fungsi Lambda untuk format 1.0
Dengan versi 1.0
format, integrasi Lambda harus mengembalikan respons dalam format berikut: JSON
{
"isBase64Encoded": true|false,
"statusCode": httpStatusCode,
"headers": { "headername": "headervalue", ... },
"multiValueHeaders": { "headername": ["headervalue", "headervalue2", ...], ... },
"body": "..."
}
Respons fungsi Lambda untuk format 2.0
Dengan versi 2.0
format, API Gateway dapat menyimpulkan format respons untuk Anda. APIGateway membuat asumsi berikut jika fungsi Lambda Anda kembali JSON valid dan tidak mengembalikan: statusCode
-
isBase64Encoded
adalahfalse
. -
statusCode
adalah200
. -
content-type
adalahapplication/json
. -
body
adalah respon dari fungsi tersebut.
Contoh berikut menunjukkan output dari fungsi Lambda dan interpretasi API Gateway.
Keluaran fungsi Lambda | APIInterpretasi gateway |
---|---|
|
|
|
|
Untuk menyesuaikan respons, fungsi Lambda Anda harus mengembalikan respons dengan format berikut.
{ "cookies" : ["
cookie1
", "cookie2
"], "isBase64Encoded": true|false, "statusCode":httpStatusCode
, "headers": { "headername
": "headervalue
", ... }, "body": "Hello from Lambda!
" }