Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Keluaran dari otorisasi API Gateway Lambda
Output fungsi otorisasi Lambda adalah objek mirip kamus, yang harus menyertakan pengidentifikasi utama (principalId
) dan dokumen kebijakan () yang berisi daftar pernyataan kebijakan. policyDocument
Outputnya juga dapat menyertakan context
peta yang berisi pasangan kunci-nilai. Jika API menggunakan paket penggunaan (apiKeySource
disetel keAUTHORIZER
), fungsi otorisasi Lambda harus mengembalikan salah satu kunci API paket penggunaan sebagai nilai properti. usageIdentifierKey
Berikut ini menunjukkan contoh output ini.
{ "principalId": "
yyyyyyyy
", // The principal user identification associated with the token sent by the client. "policyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": "execute-api:Invoke", "Effect": "Allow|Deny", "Resource": "arn:aws:execute-api:{regionId}
:{accountId}
:{apiId}
/{stage}
/{httpVerb}
/[{resource}
/[{child-resources}
]]" } ] }, "context": { "stringKey": "value", "numberKey": "1", "booleanKey": "true" }, "usageIdentifierKey": "{api-key}
" }
Di sini, pernyataan kebijakan menentukan apakah akan mengizinkan atau menolak (Effect
) layanan eksekusi API Gateway untuk memanggil (Action
) metode API yang ditentukan (Resource
). Anda dapat menggunakan wild card (*
) untuk menentukan jenis sumber daya (metode). Untuk informasi tentang menyetel kebijakan yang valid untuk memanggil API, lihatReferensi pernyataan kebijakan IAM untuk menjalankan API di API Gateway.
Untuk metode ARN yang diaktifkan otorisasi, misalnyaarn:aws:execute-api:
, panjang maksimum adalah 1600 byte. Nilai parameter jalur, ukuran yang ditentukan pada waktu berjalan, dapat menyebabkan panjang ARN melebihi batas. Ketika ini terjadi, klien API akan menerima {regionId}
:{accountId}
:{apiId}
/{stage}
/{httpVerb}
/[{resource}
/[{child-resources}
]]414 Request URI
too long
respons.
Selain itu, ARN Sumber Daya, seperti yang ditunjukkan dalam keluaran pernyataan kebijakan oleh otorisasi, saat ini dibatasi hingga 512 karakter. Untuk alasan ini, Anda tidak boleh menggunakan URI dengan token JWT dengan panjang yang signifikan dalam URI permintaan. Anda dapat dengan aman meneruskan token JWT di header permintaan, sebagai gantinya.
Anda dapat mengakses principalId
nilai dalam template pemetaan menggunakan $context.authorizer.principalId
variabel. Ini berguna jika Anda ingin meneruskan nilai ke backend. Untuk informasi selengkapnya, lihat $contextVariabel untuk model data, otorisasi, templat pemetaan, dan CloudWatch pencatatan akses.
Anda dapat mengaksesstringKey
,numberKey
, atau booleanKey
nilai (misalnya,, "value"
"1"
, atau"true"
) context
peta dalam templat pemetaan dengan memanggil$context.authorizer.stringKey
,, atau $context.authorizer.numberKey
$context.authorizer.booleanKey
, masing-masing. Nilai yang dikembalikan semuanya dirangkai. Perhatikan bahwa Anda tidak dapat mengatur objek atau array JSON sebagai nilai yang valid dari kunci apa pun di context
peta.
Anda dapat menggunakan context
peta untuk mengembalikan kredensi cache dari otorisasi ke backend, menggunakan templat pemetaan permintaan integrasi. Hal ini memungkinkan backend untuk memberikan pengalaman pengguna yang lebih baik dengan menggunakan kredensi cache untuk mengurangi kebutuhan untuk mengakses kunci rahasia dan membuka token otorisasi untuk setiap permintaan.
Untuk integrasi proxy Lambda, API Gateway meneruskan context
objek dari otorisasi Lambda langsung ke fungsi Lambda backend sebagai bagian dari input. event
Anda dapat mengambil pasangan context
kunci-nilai dalam fungsi Lambda dengan memanggil. $event.requestContext.authorizer.
key
{api-key}
singkatan dari kunci API dalam rencana penggunaan tahap API. Untuk informasi selengkapnya, lihat Paket penggunaan dan kunci API untuk REST APIs di API Gateway.
Berikut ini menunjukkan contoh output dari contoh Lambda authorizer. Output contoh berisi pernyataan kebijakan untuk memblokir (Deny
) panggilan ke GET
metode untuk dev
tahap API (ymy8tbxw7b
) dari AWS account (123456789012
).
{ "principalId": "user", "policyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": "execute-api:Invoke", "Effect": "Deny", "Resource": "arn:aws:execute-api:us-west-2:123456789012:ymy8tbxw7b/dev/GET/" } ] } }