Передача пользовательских переменных в качестве входных данных в пошаговую функцию AWS

Могу ли я передать пользовательские переменные в качестве входных данных для пошаговой функции AWS?


    processData:
      name: ingest-data
        StartAt: Execute
        States:
          Execute:
            Type: Task
            Resource: "arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:#{AWS::StackName}-ingestIntnlData"
            Next: Check
          Check:
            Type: Choice
            Choices:
              - Variable: "$.results['finished']"
                BooleanEquals: false 
                Next: Wait
              - Variable: "$.results['finished']"
                BooleanEquals: true
                Next: Notify
          Wait:
            Type: Wait
            SecondsPath: "$.waitInSeconds"
            Next: Execute
          Notify:
            Type: Task
            Resource: "arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:#{AWS::StackName}-sendEMail"
            End: true

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

Что-то вроде флаговой переменной или даже если есть способ узнать имя функции, которая вызывает лямбду, этого тоже должно хватить.

Пожалуйста, помогите мне




Ответы (3)


Мы можем построить объект в состоянии Pass и передать в качестве входных данных лямбда "Payload.$":"$" просто проходит через все входные данные.

{
   "StartAt":"Dummy Step 1 Output",
   "States":{
      "Dummy Step 1 Output":{
         "Type":"Pass",
         "Result":{
            "name":"xyz",
            "testNumber":1
         },
         "ResultPath":"$.inputForMap",
         "Next":"invoke-lambda"
      },
      "invoke-lambda":{
         "End":true,
         "Retry":[
            {
               "ErrorEquals":[
                  "Lambda.ServiceException",
                  "Lambda.AWSLambdaException",
                  "Lambda.SdkClientException"
               ],
               "IntervalSeconds":2,
               "MaxAttempts":6,
               "BackoffRate":2
            }
         ],
         "Type":"Task",
         "Resource":"arn:aws:states:::lambda:invoke",
         "Parameters":{
            "FunctionName":"arn:aws:lambda:us-east-1:111122223333:function:my-lambda",
            "Payload.$":"$"
         }
      }
   }
}

введите описание изображения здесь

person Balu Vyamajala    schedule 18.01.2021

Вы можете использовать объект контекста и передайте ExecutionId как

    {
    "Comment": "A Catch example of the Amazon States Language using an AWS Lambda Function",
    "StartAt": "nextstep",
    "States": {
        "nextstep": {
        "Type": "Task",
        "Resource": "arn:aws:lambda:eu-central-1:1234567890:function:catcherror",
        "Parameters": {
                        "executionId.$": "$$.Execution.Id"
        },
        "End": true
        }
    }
    }

Это дает вам

arn: aws: состояния: us-east-1: 123456789012: выполнение: stateMachineName: executionName

Как видите, он содержит имя вашего конечного автомата.

Вы можете принимать по ним решения

person samtoddler    schedule 18.01.2021

Вы можете создавать Lambda-функции для использования в качестве шагов в рабочем процессе, созданном с помощью AWS Step Functions. Для вашего первого шага (лямбда-функция, которую вы используете в качестве первого шага) вы можете передать ей значения в соответствии с вашими потребностями:

https://www.c-sharpcorner.com/article/passing-data-to-aws-lambda-function-and-invoking-it-using-aws-cli/

Затем вы можете передавать данные между шагами, используя лямбда-функции, как описано здесь:

https://medium.com/@tturnbull/passing-data-between-lambdas-with-aws-step-functions-6f8d45f717c3

Вы можете создавать лямбда-функции на других поддерживаемых языках программирования, таких как Java, как описано здесь:

https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javav2/usecases/creating_workflows_stepfunctions

Как видите, существует множество вариантов разработки при использовании Lambda и AWS Step Functions.

person smac2020    schedule 18.01.2021