Можете ли вы указать лямбда-псевдоним при вызове лямбда-функции через пошаговую функцию? - PullRequest
1 голос
/ 03 марта 2020

Я хотел бы знать, возможно ли вызвать лямбда-функцию с псевдонимом из пошаговой функции?

В настоящее время у меня настроено несколько лямбда-функций для работы с псевдонимом. (один для каждой среды, такой как DEV, UAT и т. д. c). Это удобно, поскольку это означает, что мне не нужно развертывать отдельные лямбда-функции для каждой среды.

Я хотел бы добиться того же с помощью пошаговых функций и начать выполнение на конечном компьютере со значением, которое представляет исполняющая среда (Alias).

Затем я хотел бы использовать это значение в языке конечных автоматов для передачи его в арн функции Lambda.

Примерно так.

"Comment": "DEV Send Email Notification",
"StartAt": "Send Email Through Mandrill",
"States": {
  "Send Email Through Mandrill": {
    "Type": "Task",
    "Resource": "arn:aws:states:::lambda:invoke",
    "Parameters": {
      "FunctionName": "arn:aws:lambda:{region}:{accountId}:function:Email-Notification:DEV",
      "Payload": {
        "Input.$": "$"
      }
    },
...

Вместо использования arn: aws: lambda: {region}: {accountId}: function: Email-Notification: DEV в качестве FunctionName, могу ли я использовать значения из ввода конечного автомата, такие как

"FunctionName": "arn:aws:lambda:{region}:{accountId}:function:Email-Notification:$.Alias"

или я могу использовать другие «Параметры» для псевдонима?

Я пытаюсь избежать настройки одной и той же Шаговой функции для среды.

1 Ответ

0 голосов
/ 03 марта 2020

Параметры используют JSONPath , который является языком запросов, и поэтому вы не сможете объединить значения, как в вашем примере. Кроме того, чтобы ссылаться на данные из вашего Ввода внутри параметров, они должны быть в формате значения ключа («key. $»: «$ .Value»).

Однако, глядя на Интеграцию лямбда-задач мы видим, что он поддерживает параметры FunctionName и Qualifier. Глядя на Lambda Invoke API , мы видим, что FunctionName поддерживает 3 формата имен:

  1. Функция ARN
  2. Имя функции (имя или имя: псевдоним)
  3. Частичный ARN (123456789012: функция: my-function)

Поле Qualifier используется для указания версии или псевдонима вызываемой функции. Таким образом, с учетом сказанного вы сможете указать имя вашей лямбда-функции (нет необходимости для учетной записи и региона, поскольку пошаговые функции не поддерживают межрегиональные вызовы / вызовы учетной записи) и псевдоним (динамически из ввода) для функции без необходимости конструировать полный ARN. Вот пример того, как будет выглядеть ваше государство:

"LambdaTask": {
    "Type": "Task",
    "Resource": "arn:aws:states:::lambda:invoke",
    "Parameters": {
        "FunctionName": "NameOfYourFunction",
        "Qualifier.$": "$.Alias",
        "Payload": {
            "Foo": "Bar"
        }
    },
    "End": true
}
...