Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
APITemplate pemetaan gateway dan referensi variabel pencatatan akses
Bagian ini menyediakan informasi referensi untuk variabel dan fungsi yang didefinisikan Amazon API Gateway untuk digunakan dengan model data, otorisasi, templat pemetaan, dan CloudWatch pencatatan akses. Untuk informasi rinci tentang cara menggunakan variabel dan fungsi ini, lihatTemplate pemetaan untuk REST APIs. Untuk informasi lebih lanjut tentang Velocity Template Language (VTL), lihat VTLReferensi
Topik
catatan
Untuk $method
dan $integration
variabel, lihatReferensi pemetaan data API permintaan dan respons Amazon API Gateway.
$context
Variabel untuk model data, otorisasi, templat pemetaan, dan CloudWatch pencatatan akses
$context
Variabel berikut dapat digunakan dalam model data, otorisasi, templat pemetaan, dan logging CloudWatch akses. APIGateway mungkin menambahkan variabel konteks tambahan.
Untuk $context
variabel yang hanya dapat digunakan dalam pencatatan CloudWatch akses, lihat$contextVariabel hanya untuk pencatatan akses.
Parameter | Deskripsi |
---|---|
$context.accountId |
ID AWS akun API pemilik. |
$context.apiId |
APIGateway pengenal menetapkan ke Anda. API |
$context.authorizer.claims. |
Properti klaim yang dikembalikan dari kumpulan pengguna Amazon Cognito setelah pemanggil metode berhasil diautentikasi. Untuk informasi selengkapnya, lihat Kontrol akses ke REST API menggunakan kumpulan pengguna Amazon Cognito sebagai otorisasi. catatanMemanggil |
$context.authorizer.principalId |
Identifikasi pengguna utama yang terkait dengan token yang dikirim oleh klien dan dikembalikan dari otorisasi API Gateway Lambda (sebelumnya dikenal sebagai otorisasi khusus). Untuk informasi selengkapnya, lihat Gunakan otorisasi API Gateway Lambda. |
$context.authorizer. |
Nilai stringifikasi dari pasangan nilai kunci yang ditentukan dari
Memanggil Untuk Untuk informasi selengkapnya, lihat Gunakan otorisasi API Gateway Lambda. |
$context.awsEndpointRequestId |
ID permintaan AWS titik akhir. |
$context.deploymentId |
ID API penyebaran. |
$context.domainName |
Nama domain lengkap yang digunakan untuk memanggil. API Ini harus sama dengan |
$context.domainPrefix |
Label pertama dari |
$context.error.message |
String yang berisi pesan kesalahan API Gateway. Variabel ini hanya dapat digunakan untuk substitusi variabel sederhana dalam template GatewayResponsepemetaan tubuh, yang tidak diproses oleh mesin Velocity Template Language, dan dalam logging akses. Untuk informasi selengkapnya, silakan lihat Pantau WebSocket API eksekusi dengan CloudWatch metrik dan Menyiapkan respons gateway untuk menyesuaikan respons kesalahan. |
$context.error.messageString |
Nilai yang dikutip dari$context.error.message , yaitu"$context.error.message" . |
$context.error.responseType |
Sebuah jenis GatewayResponse. Variabel ini hanya dapat digunakan untuk substitusi variabel sederhana dalam template GatewayResponsepemetaan tubuh, yang tidak diproses oleh mesin Velocity Template Language, dan dalam logging akses. Untuk informasi selengkapnya, silakan lihat Pantau WebSocket API eksekusi dengan CloudWatch metrik dan Menyiapkan respons gateway untuk menyesuaikan respons kesalahan. |
$context.error.validationErrorString |
Sebuah string yang berisi pesan kesalahan validasi rinci. |
$context.extendedRequestId |
ID diperpanjang yang dihasilkan dan ditetapkan API Gateway ke API permintaan. ID permintaan yang diperluas berisi informasi yang berguna untuk debugging dan pemecahan masalah. |
$context.httpMethod |
HTTPMetode yang digunakan. Nilai yang valid meliputi: |
$context.identity.accountId |
ID AWS akun yang terkait dengan permintaan. |
$context.identity.apiKey |
Untuk API metode yang memerlukan API kunci, variabel ini adalah API kunci yang terkait dengan permintaan metode. Untuk metode yang tidak memerlukan API kunci, variabel ini adalah null. Untuk informasi selengkapnya, lihat Paket penggunaan dan API kunci untuk REST APIs di API Gateway . |
$context.identity.apiKeyId |
ID API kunci yang terkait dengan API permintaan yang memerlukan API kunci. |
$context.identity.caller |
Pengidentifikasi utama penelepon yang menandatangani permintaan. Didukung untuk sumber daya yang menggunakan IAM otorisasi. |
$context.identity.cognitoAuthenticationProvider |
Daftar dipisahkan koma dari semua penyedia otentikasi Amazon Cognito yang digunakan oleh penelepon yang membuat permintaan. Hanya tersedia jika permintaan ditandatangani dengan kredenal Amazon Cognito. Misalnya, untuk identitas dari kumpulan pengguna Amazon Cognito, Untuk informasi tentang penyedia autentikasi Amazon Cognito yang tersedia, lihat Menggunakan Identitas Federasi di Panduan Pengembang Amazon Cognito. |
$context.identity.cognitoAuthenticationType |
Jenis otentikasi Amazon Cognito dari penelepon yang membuat permintaan. Hanya tersedia jika permintaan ditandatangani dengan kredenal Amazon Cognito. Nilai yang mungkin termasuk |
$context.identity.cognitoIdentityId |
ID identitas Amazon Cognito dari penelepon yang membuat permintaan. Hanya tersedia jika permintaan ditandatangani dengan kredenal Amazon Cognito. |
$context.identity.cognitoIdentityPoolId |
ID kumpulan identitas Amazon Cognito dari penelepon yang membuat permintaan. Hanya tersedia jika permintaan ditandatangani dengan kredenal Amazon Cognito. |
$context.identity.principalOrgId |
|
$context.identity.sourceIp |
Alamat IP sumber dari TCP koneksi langsung membuat permintaan ke titik akhir API Gateway. |
$context.identity.clientCert.clientCertPem |
Sertifikat klien PEM -encoded yang disajikan klien selama otentikasi timbal balik. TLS Hadir saat klien mengakses API dengan menggunakan nama domain kustom yang saling TLS diaktifkan. Hadir hanya di log akses jika TLS otentikasi timbal balik gagal. |
$context.identity.clientCert.subjectDN |
Nama yang dibedakan dari subjek sertifikat yang disajikan klien. Hadir saat klien mengakses API dengan menggunakan nama domain kustom yang saling TLS diaktifkan. Hadir hanya di log akses jika TLS otentikasi timbal balik gagal. |
$context.identity.clientCert.issuerDN |
Nama terhormat dari penerbit sertifikat yang disajikan klien. Hadir saat klien mengakses API dengan menggunakan nama domain kustom yang saling TLS diaktifkan. Hadir hanya di log akses jika TLS otentikasi timbal balik gagal. |
$context.identity.clientCert.serialNumber |
Nomor seri sertifikat. Hadir saat klien mengakses API dengan menggunakan nama domain kustom yang saling TLS diaktifkan. Hadir hanya di log akses jika TLS otentikasi timbal balik gagal. |
$context.identity.clientCert.validity.notBefore |
Tanggal sebelum sertifikat tidak valid. Hadir saat klien mengakses API dengan menggunakan nama domain kustom yang saling TLS diaktifkan. Hadir hanya di log akses jika TLS otentikasi timbal balik gagal. |
$context.identity.clientCert.validity.notAfter |
Tanggal setelah sertifikat tidak valid. Hadir saat klien mengakses API dengan menggunakan nama domain kustom yang saling TLS diaktifkan. Hadir hanya di log akses jika TLS otentikasi timbal balik gagal. |
$context.identity.vpcId |
VPCID dari VPC membuat permintaan ke titik akhir API Gateway. |
$context.identity.vpceId |
ID VPC titik akhir dari titik VPC akhir membuat permintaan ke titik akhir API Gateway. Hadir hanya ketika Anda memiliki pribadiAPI. |
$context.identity.user |
Pengidentifikasi utama pengguna yang akan diotorisasi terhadap akses sumber daya. Didukung untuk sumber daya yang menggunakan IAM otorisasi. |
$context.identity.userAgent |
|
$context.identity.userArn |
Nama Sumber Daya Amazon (ARN) dari pengguna efektif yang diidentifikasi setelah otentikasi. Untuk informasi selengkapnya, lihat https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html. |
$context.isCanaryRequest |
Mengembalikan |
$context.path |
Jalur permintaan. Misalnya, untuk permintaan non-proxy URL darihttps://{rest-api-id}.execute-api.{region}.amazonaws.com/{stage}/root/child , $context.path nilainya adalah/{stage}/root/child . |
$context.protocol |
Protokol permintaan, misalnya,HTTP/1.1 . catatanAPIGateway APIs dapat menerima permintaan HTTP /2, tetapi API Gateway mengirim permintaan ke integrasi backend menggunakan /1.1. HTTP Akibatnya, protokol permintaan dicatat sebagai HTTP /1.1 bahkan jika klien mengirim permintaan yang menggunakan HTTP /2. |
$context.requestId |
ID untuk permintaan. Klien dapat mengganti ID permintaan ini. Gunakan |
$context.requestOverride.header. |
Header permintaan menimpa. Jika parameter ini didefinisikan, ini berisi header yang akan digunakan, bukan HTTPHeader yang didefinisikan di panel Permintaan Integrasi. Untuk informasi selengkapnya, lihat Gunakan templat pemetaan untuk mengganti parameter API permintaan dan respons serta kode status. |
$context.requestOverride.path. |
Jalur permintaan menimpa. Jika parameter ini didefinisikan, ini berisi jalur permintaan yang akan digunakan, bukan Parameter URL Jalur yang didefinisikan di panel Permintaan Integrasi. Untuk informasi selengkapnya, lihat Gunakan templat pemetaan untuk mengganti parameter API permintaan dan respons serta kode status. |
$context.requestOverride.querystring. |
Permintaan query string override. Jika parameter ini didefinisikan, ini berisi string permintaan permintaan yang akan digunakan alih-alih Parameter String URL Kueri yang didefinisikan di panel Permintaan Integrasi. Untuk informasi selengkapnya, lihat Gunakan templat pemetaan untuk mengganti parameter API permintaan dan respons serta kode status. |
$context.responseOverride.header. |
Header respon menimpa. Jika parameter ini didefinisikan, ini berisi header yang akan dikembalikan, bukan header Response yang didefinisikan sebagai pemetaan Default di panel Integration Response. Untuk informasi selengkapnya, lihat Gunakan templat pemetaan untuk mengganti parameter API permintaan dan respons serta kode status. |
$context.responseOverride.status |
Kode status respons menimpa. Jika parameter ini didefinisikan, ini berisi kode status yang akan dikembalikan, bukan status respons Metode yang didefinisikan sebagai pemetaan Default di panel Respons Integrasi. Untuk informasi selengkapnya, lihat Gunakan templat pemetaan untuk mengganti parameter API permintaan dan respons serta kode status. |
$context.requestTime |
Waktu permintaan CLFdd/MMM/yyyy:HH:mm:ss
+-hhmm . |
$context.requestTimeEpoch |
Waktu permintaan yang diformat Epoch |
$context.resourceId |
Pengidentifikasi yang diberikan API Gateway ke sumber daya Anda. |
$context.resourcePath |
Jalan menuju sumber daya Anda. Misalnya, untuk permintaan non-proxy URI dari |
$context.stage |
Tahap penyebaran API permintaan (misalnya, |
$context.wafResponseCode |
Tanggapan yang diterima dari AWS WAF: |
$context.webaclArn |
Lengkap ARN web ACL yang digunakan untuk memutuskan apakah akan mengizinkan atau memblokir permintaan. Tidak akan diatur jika panggung tidak terkait dengan webACL. Untuk informasi selengkapnya, lihat Gunakan AWS WAF untuk melindungi REST API Anda di API Gateway. |
$context
Contoh template variabel
Anda mungkin ingin menggunakan $context
variabel dalam template pemetaan jika API metode Anda meneruskan data terstruktur ke backend yang mengharuskan data berada dalam format tertentu.
Contoh berikut menunjukkan template pemetaan yang memetakan $context
variabel masuk ke variabel backend dengan nama yang sedikit berbeda dalam payload permintaan integrasi:
catatan
Salah satu variabel adalah API kuncinya. Contoh ini mengasumsikan bahwa metode membutuhkan API kunci.
{ "stage" : "$context.stage", "request_id" : "$context.requestId", "api_id" : "$context.apiId", "resource_path" : "$context.resourcePath", "resource_id" : "$context.resourceId", "http_method" : "$context.httpMethod", "source_ip" : "$context.identity.sourceIp", "user-agent" : "$context.identity.userAgent", "account_id" : "$context.identity.accountId", "api_key" : "$context.identity.apiKey", "caller" : "$context.identity.caller", "user" : "$context.identity.user", "user_arn" : "$context.identity.userArn" }
Output dari template pemetaan ini akan terlihat seperti berikut:
{ stage: 'prod', request_id: 'abcdefg-000-000-0000-abcdefg', api_id: 'abcd1234', resource_path: '/', resource_id: 'efg567', http_method: 'GET', source_ip: '192.0.2.1', user-agent: 'curl/7.84.0', account_id: '111122223333', api_key: 'MyTestKey', caller: 'ABCD-0000-12345', user: 'ABCD-0000-12345', user_arn: 'arn:aws:sts::111122223333:assumed-role/Admin/carlos-salazar' }
$context
Variabel hanya untuk pencatatan akses
$context
Variabel berikut hanya tersedia untuk logging akses. Untuk informasi selengkapnya, lihat Siapkan CloudWatch logging untuk REST APIs di API Gateway. (Untuk WebSocket APIs, lihatPantau WebSocket API eksekusi dengan CloudWatch metrik.)
Parameter | Deskripsi |
---|---|
$context.authorize.error |
Pesan kesalahan otorisasi. |
$context.authorize.latency |
Latensi otorisasi di ms. |
$context.authorize.status |
Kode status dikembalikan dari upaya otorisasi. |
$context.authorizer.error |
Pesan kesalahan dikembalikan dari otorisasi. |
$context.authorizer.integrationLatency |
Latensi integrasi otorisasi di ms. |
$context.authorizer.integrationStatus |
Kode status dikembalikan dari otorisasi Lambda. |
$context.authorizer.latency |
Latensi otorisasi di ms. |
$context.authorizer.requestId |
ID permintaan AWS titik akhir. |
$context.authorizer.status |
Kode status dikembalikan dari otorisasi. |
$context.authenticate.error |
Pesan kesalahan dikembalikan dari upaya otentikasi. |
$context.authenticate.latency |
Latensi otentikasi di ms. |
$context.authenticate.status |
Kode status dikembalikan dari upaya otentikasi. |
$context.customDomain.basePathMatched |
Jalur untuk API pemetaan yang cocok dengan permintaan masuk. Berlaku ketika klien menggunakan nama domain khusus untuk mengakses fileAPI. Misalnya jika klien mengirim permintaan ke |
$context.endpointType |
Jenis titik akhir dari. API |
$context.integration.error |
Pesan kesalahan dikembalikan dari integrasi. |
$context.integration.integrationStatus |
Untuk integrasi proxy Lambda, kode status dikembalikan dari AWS Lambda, bukan dari kode fungsi Lambda backend. |
$context.integration.latency |
Latensi integrasi dalam ms. Setara dengan$context.integrationLatency . |
$context.integration.requestId |
ID permintaan AWS titik akhir. Setara dengan$context.awsEndpointRequestId . |
$context.integration.status |
Kode status dikembalikan dari integrasi. Untuk integrasi proxy Lambda, ini adalah kode status yang dikembalikan oleh kode fungsi Lambda Anda. |
$context.integrationLatency |
Latensi integrasi dalam ms. |
$context.integrationStatus |
Untuk integrasi proxy Lambda, parameter ini mewakili kode status yang dikembalikan dari AWS Lambda, bukan dari kode fungsi Lambda backend. |
$context.responseLatency |
Latensi respons dalam ms. |
$context.responseLength |
Panjang payload respon dalam byte. |
$context.status |
Status respons metode. |
$context.waf.error |
Pesan kesalahan dikembalikan dari AWS WAF. |
$context.waf.latency |
AWS WAF Latensi dalam ms. |
$context.waf.status |
Kode status dikembalikan dari AWS WAF. |
$context.xrayTraceId |
ID jejak untuk jejak X-Ray. Untuk informasi selengkapnya, lihat Siapkan AWS X-Ray dengan API API Gateway REST API. |
$input
Variabel
$input
Variabel mewakili payload permintaan metode dan parameter yang akan diproses oleh template pemetaan. Ini menyediakan fungsi-fungsi berikut:
Variabel dan fungsi | Deskripsi |
---|---|
$input.body |
Mengembalikan payload permintaan mentah sebagai string. Anda dapat menggunakan |
$input.json(x) |
Fungsi ini mengevaluasi JSONPath ekspresi dan mengembalikan hasil sebagai JSON string. Misalnya, Untuk informasi selengkapnya tentangJSONPath, lihat JSONPath |
$input.params() |
Mengembalikan peta dari semua parameter permintaan. Kami menyarankan Anda menggunakan |
$input.params(x) |
Mengembalikan nilai parameter permintaan metode dari path, query string, atau nilai header (dicari dalam urutan itu), diberikan string |
$input.path(x) |
Mengambil JSONPath ekspresi string ( Misalnya, jika ekspresi
Untuk informasi selengkapnya tentangJSONPath, lihat JSONPath |
$input
Contoh template variabel
Contoh berikut menunjukkan cara menggunakan $input
variabel dalam template pemetaan. Anda dapat menggunakan integrasi tiruan atau integrasi non-proxy Lambda yang mengembalikan peristiwa input kembali ke Gateway API untuk mencoba contoh ini.
Contoh template pemetaan parameter
Contoh berikut meneruskan semua parameter permintaan, termasukpath
,querystring
, danheader
, ke titik akhir integrasi melalui JSON payload:
#set($allParams = $input.params()) { "params" : { #foreach($type in $allParams.keySet()) #set($params = $allParams.get($type)) "$type" : { #foreach($paramName in $params.keySet()) "$paramName" : "$util.escapeJavaScript($params.get($paramName))" #if($foreach.hasNext),#end #end } #if($foreach.hasNext),#end #end } }
Untuk permintaan yang mencakup parameter input berikut:
Parameter jalur bernama
myparam
Parameter string kueri
querystring1=value1,value2&querystring2=value3
Header
"header1" : "value1"
,"header2" : "value2"
,"header3" : "value3"
.
Output dari template pemetaan ini akan terlihat seperti berikut:
{ "params" : { "path" : { "path" : "myparam" } , "querystring" : { "querystring1" : "value1,value2" , "querystring2" : "value3" } , "header" : { "header3" : "value3" , "header2" : "value2" , "header1" : "value1" } } }
JSONcontoh template pemetaan
Anda mungkin ingin menggunakan $input
variabel untuk mendapatkan string kueri dan badan permintaan dengan atau tanpa menggunakan model. Anda mungkin juga ingin mendapatkan parameter dan payload, atau subbagian dari payload. Tiga contoh berikut menunjukkan bagaimana melakukan ini.
Contoh berikut menggunakan template pemetaan untuk mendapatkan subbagian dari payload. Contoh ini mendapatkan parameter input name
dan kemudian seluruh POST tubuh:
{ "name" : "$input.params('name')", "body" : $input.json('$') }
Untuk permintaan yang menyertakan parameter string kueri name=Bella&type=dog
dan isi berikut:
{ "Price" : "249.99", "Age": "6" }
Output dari template pemetaan ini akan terlihat seperti berikut:
{ "name" : "Bella", "body" : {"Price":"249.99","Age":"6"} }
Jika JSON input berisi karakter unescaped yang tidak dapat diuraikan oleh JavaScript, API Gateway mungkin mengembalikan respons 400. Terapkan $util.escapeJavaScript($input.json('$'))
untuk memastikan JSON input dapat diurai dengan benar.
Contoh sebelumnya dengan $util.escapeJavaScript($input.json('$'))
diterapkan adalah sebagai berikut:
{ "name" : "$input.params('name')", "body" : $util.escapeJavaScript($input.json('$')) }
Dalam hal ini, output dari template pemetaan ini akan terlihat seperti berikut:
{ "name" : "Bella", "body": {\"Price\":\"249.99\",\"Age\":\"6\"} }
JSONPathcontoh ekspresi
Contoh berikut menunjukkan bagaimana untuk meneruskan JSONPath ekspresi ke json()
metode. Anda juga dapat membaca subbagian dari objek badan permintaan Anda dengan menggunakan titik,.
, untuk menentukan properti:
{ "name" : "$input.params('name')", "body" : $input.json('$.Age') }
Untuk permintaan yang menyertakan parameter string kueri name=Bella&type=dog
dan isi berikut:
{ "Price" : "249.99", "Age": "6" }
Output dari template pemetaan ini akan terlihat seperti berikut:
{ "name" : "Bella", "body" : "6" }
Jika payload permintaan metode berisi karakter unescaped yang tidak dapat diuraikan JavaScript, API Gateway mungkin mengembalikan respons. 400
Terapkan $util.escapeJavaScript()
untuk memastikan JSON input dapat diurai dengan benar.
Contoh sebelumnya dengan $util.escapeJavaScript($input.json('$.Age'))
diterapkan adalah sebagai berikut:
{ "name" : "$input.params('name')", "body" : "$util.escapeJavaScript($input.json('$.Age'))" }
Dalam hal ini, output dari template pemetaan ini akan terlihat seperti berikut:
{ "name" : "Bella", "body": "\"6\"" }
Contoh permintaan dan respons
Contoh berikut menggunakan$input.params()
,$input.path()
, dan $input.json()
untuk sumber daya dengan jalur/things/{id}
:
{ "id" : "$input.params('id')", "count" : "$input.path('$.things').size()", "things" : $input.json('$.things')" }
Untuk permintaan yang menyertakan parameter jalur 123
dan isi berikut:
{ "things": { "1": {}, "2": {}, "3": {} } }
Output dari template pemetaan ini akan terlihat seperti berikut:
{"id":"123","count":"3","things":{"1":{},"2":{},"3":{}}}
Jika payload permintaan metode berisi karakter unescaped yang tidak dapat diuraikan JavaScript, API Gateway mungkin mengembalikan respons. 400
Terapkan $util.escapeJavaScript()
untuk memastikan JSON input dapat diurai dengan benar.
Contoh sebelumnya dengan $util.escapeJavaScript($input.json('$.things'))
diterapkan adalah sebagai berikut:
{ "id" : "$input.params('id')", "count" : "$input.path('$.things').size()", "things" : "$util.escapeJavaScript($input.json('$.things'))" }
Output dari template pemetaan ini akan terlihat seperti berikut:
{"id":"123","count":"3","things":"{\"1\":{},\"2\":{},\"3\":{}}"}
Untuk contoh pemetaan lainnya, lihatTemplate pemetaan untuk REST APIs.
$stageVariables
Variabel tahap dapat digunakan dalam pemetaan parameter dan pemetaan template dan sebagai placeholder dalam ARNs dan URLs digunakan dalam integrasi metode. Untuk informasi selengkapnya, lihat Gunakan variabel panggung untuk REST API di API Gateway.
Sintaks | Deskripsi |
---|---|
$stageVariables. ,$stageVariables[' , atau ${stageVariables[' |
|
$util
Variabel
$util
Variabel berisi fungsi utilitas untuk digunakan dalam template pemetaan.
catatan
Kecuali ditentukan lain, set karakter default adalah UTF -8.
Fungsi | Deskripsi |
---|---|
$util.escapeJavaScript() |
Melarikan diri dari karakter dalam string menggunakan aturan JavaScript string. catatanFungsi ini akan mengubah tanda kutip tunggal biasa (
|
$util.parseJson() |
Mengambil “stringified” JSON dan mengembalikan representasi objek dari hasilnya. Anda dapat menggunakan hasil dari fungsi ini untuk mengakses dan memanipulasi elemen payload secara native di Apache Velocity Template Language (). VTL Misalnya, jika Anda memiliki muatan berikut:
dan gunakan template pemetaan berikut
Anda akan mendapatkan output sebagai berikut:
|
$util.urlEncode() |
Mengkonversi string ke dalam format “aplikasi/x-www-form-urlencoded”. |
$util.urlDecode() |
Mendekode string “aplikasi/x-www-form-urlencoded”. |
$util.base64Encode() |
Mengkodekan data ke dalam string yang dikodekan base64. |
$util.base64Decode() |
Mendekode data dari string yang dikodekan base64. |