Как добавить такие функции, как генерация случайного UUID в шаблоне скорости для отображения запроса / ответа в шлюзе API - PullRequest
0 голосов
/ 11 марта 2019

Я создаю шаблон сопоставления запросов для шлюза AWS API.В этом шаблоне я хочу настроить параметры запроса на основе определенных условий и применить операторы.

 #foreach($header in $input.params().header.keySet())
     #if($header=="id")#set($idVal = 
     $util.escapeJavaScript($input.params().header.get($header)))
         #if($idVal.matches("^[0-9a-f]{4}-[0-9A-Z]{3}$"))
             "$header":"$idVal"
         #else
           #set($random = UUID.randomUUID())
          "$header":"$random"
         #end
     #else

Например, в приведенном выше шаблоне на основе условия if я хочу сгенерировать randomUUID и добавить его в заголовок.Но когда я тестирую, значение id устанавливается в пустую строку.

Как я могу использовать поддержку пакетов и функций Java в скоростном сопоставлении шаблонов API-шлюза?Также, пожалуйста, поделитесь ссылкой на хорошо оформленный шаблон, было бы очень полезно узнать больше.

1 Ответ

0 голосов
/ 11 марта 2019

VTL, используемый в API Gateway, не распространяется на ваши собственные пакеты. Можно использовать только встроенные переменные и функции $util .

Вы можете обнаружить, что $context.requestId содержит подходящий UUID для вашей цели, уникальный для каждого запроса. Обратите внимание, что если вы используете лямбда-интеграцию, это значение отличается от значения лямбда context.requestId, которое только по совпадению имеет то же имя.

Или, самые правые 33 символа $context.xrayTraceId должны содержать 4-байтовую метку времени (8 шестнадцатеричных цифр) + '-' + 96-битное уникальное значение (24 шестнадцатеричных цифры), из которого вы могли бы создать исправный UUID с некоторыми манипулирование легкой струной.

...