Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Beispiele für die Verwendung von Variablen bei Zuweisungsvorlagen-Transformationen in API Gateway
Die folgenden Beispiele zeigen, wie Sie $context-, input- und util-Variablen in Zuweisungsvorlagen verwenden. Sie können eine Scheinintegration oder eine Lambda-Nicht-Proxy-Integration verwenden, die das Eingabeereignis an API Gateway zurückgibt. Eine Liste aller unterstützten Variablen für Datentransformationen finden Sie unter Variablen für Datentransformationen für API Gateway.
Beispiel 1: Übergeben mehrerer $context-Variablen an den Integrationsendpunkt
Das folgende Beispiel zeigt eine Mapping-Vorlage für die Zuordnung eingehender $context Variablen zu Backend-Variablen mit geringfügig unterschiedlichen Namen in der Nutzlast einer Integrationsanforderung:
{ "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" }
Die Ausgabe dieser Zuweisungsvorlage sollte wie folgt aussehen:
{ 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' }
Eine der Variablen ist ein API-Schlüssel. In diesem Beispiel wird vorausgesetzt, dass die Methode einen API-Schlüssel erfordert.
Beispiel 2: Übergeben aller Anfrageparameter an den Integrationsendpunkt über Nutzdaten im JSON-Format
Das folgende Beispiel übergibt alle Anfrageparameter, einschließlich path-, querystring- und header-Parameter, an den Integrationsendpunkt über Nutzdaten im JSON-Format:
#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 } }
Wenn eine Anfrage die folgenden Eingabeparameter enthält:
Einen Pfadparameter namens
myparamDie Abfragezeichenfolgenparameter
querystring1=value1,value2Headers
"header1" : "value1"
Die Ausgabe dieser Zuweisungsvorlage sollte wie folgt aussehen:
{"params":{"path":{"example2":"myparamm"},"querystring":{"querystring1":"value1,value2"},"header":{"header1":"value1"}}}
Beispiel 3: Übergeben eines Unterabschnitts einer Methodenanforderung an den Integrationsendpunkt
Im folgenden Beispiel wird der Eingabeparameter name verwendet, um nur den Parameter name abzurufen, und der Eingabeparameter input.json('$'), um den gesamten Body der Methodenanforderung abzurufen:
{ "name" : "$input.params('name')", "body" : $input.json('$') }
Für eine Anforderung, die die Parameter der Abfragezeichenfolge name=Bella&type=dog und den folgenden Text enthält:
{ "Price" : "249.99", "Age": "6" }
Die Ausgabe dieser Zuweisungsvorlage sollte wie folgt aussehen:
{ "name" : "Bella", "body" : {"Price":"249.99","Age":"6"} }
Diese Zuweisungsvorlage entfernt den Abfragezeichenfolgenparameter type=dog.
Wenn die JSON-Eingabe Zeichen ohne Escape-Zeichen enthält, die nicht analysiert werden können JavaScript, gibt API Gateway möglicherweise eine 400-Antwort zurück. Eine Anwendung von $util.escapeJavaScript($input.json('$')) stellt sicher, dass die JSON-Eingabe ordnungsgemäß eingelesen werden kann.
Im vorangegangenen Beispiel hätte eine Anwendung von $util.escapeJavaScript($input.json('$')) folgendes Ergebnis:
{ "name" : "$input.params('name')", "body" : "$util.escapeJavaScript($input.json('$'))" }
In diesem Fall sollte die Ausgabe dieser Zuweisungsvorlage wie folgt aussehen:
{ "name" : "Bella", "body": {"Price":"249.99","Age":"6"} }
Beispiel 4: Verwenden Sie JSONPath Expression, um einen Unterabschnitt einer Methodenanforderung an den Integrationsendpunkt zu übergeben
Im folgenden Beispiel werden die JSONPath Ausdrücke verwendet, um nur den Eingabeparameter name und den Age aus dem Anforderungstext abzurufen:
{ "name" : "$input.params('name')", "body" : $input.json('$.Age') }
Für eine Anforderung, die die Parameter der Abfragezeichenfolge name=Bella&type=dog und den folgenden Text enthält:
{ "Price" : "249.99", "Age": "6" }
Die Ausgabe dieser Zuweisungsvorlage sollte wie folgt aussehen:
{ "name" : "Bella", "body" : "6" }
Diese Zuweisungsvorlage entfernt den Abfragezeichenfolgenparameter type=dog sowie das Feld Price aus dem Body.
Wenn die Payload einer Methodenanforderung Zeichen ohne Escape-Zeichen enthält, die nicht analysiert werden können JavaScript, gibt API Gateway möglicherweise eine Antwort zurück. 400 Eine Anwendung von $util.escapeJavaScript() stellt sicher, dass die JSON-Eingabe ordnungsgemäß eingelesen werden kann.
Im vorangegangenen Beispiel hätte eine Anwendung von $util.escapeJavaScript($input.json('$.Age')) folgendes Ergebnis:
{ "name" : "$input.params('name')", "body" : "$util.escapeJavaScript($input.json('$.Age'))" }
In diesem Fall sollte die Ausgabe dieser Zuweisungsvorlage wie folgt aussehen:
{ "name" : "Bella", "body": "\"6\"" }
Beispiel 5: Verwenden Sie einen JSONPath Ausdruck, um Informationen über eine Methodenanforderung an den Integrationsendpunkt zu übergeben
Im folgenden Beispiel werden $input.params(), $input.path() und $input.json() verwendet, um Informationen über eine Methodenanforderung an den Integrationsendpunkt zu senden. Diese Zuweisungsvorlage nutzt die Methode size(), um die Anzahl der Elemente in einer Liste bereitzustellen.
{ "id" : "$input.params('id')", "count" : "$input.path('$.things').size()", "things" : $input.json('$.things') }
Für eine Anforderung, die den Pfadparameter 123 und den folgenden Text enthält:
{ "things": { "1": {}, "2": {}, "3": {} } }
Die Ausgabe dieser Zuweisungsvorlage sollte wie folgt aussehen:
{"id":"123","count":"3","things":{"1":{},"2":{},"3":{}}}
Wenn die Payload einer Methodenanforderung Zeichen ohne Escape-Zeichen enthält, die nicht analysiert werden können JavaScript, gibt API Gateway möglicherweise eine Antwort zurück. 400 Eine Anwendung von $util.escapeJavaScript() stellt sicher, dass die JSON-Eingabe ordnungsgemäß eingelesen werden kann.
Im vorangegangenen Beispiel hätte eine Anwendung von $util.escapeJavaScript($input.json('$.things')) folgendes Ergebnis:
{ "id" : "$input.params('id')", "count" : "$input.path('$.things').size()", "things" : "$util.escapeJavaScript($input.json('$.things'))" }
Die Ausgabe dieser Zuweisungsvorlage sollte wie folgt aussehen:
{"id":"123","count":"3","things":"{\"1\":{},\"2\":{},\"3\":{}}"}