как передать аргумент в лямбду aws из конечного автомата aws / пошаговой функции - PullRequest
1 голос
/ 27 марта 2019

Я пытаюсь передать аргумент в лямбду aws python с конечного автомата.Я написал следующую функцию:

{
  "Comment": "test lambda execution with state machine",
  "StartAt": "testPassInArgs",
  "States": {
    "testPassInArgs": {
      "Type": "Task",
      "Resource":"arn:aws:lambda:....function:testPassInArgs",
      "Next": "testRecieveArgs"
    },

    "testRecieveArgs": {
      "Type": "Task",
      "InputPath": "$.a",
      "Parameters": {
      "InputPath": "$.a"},
      "Resource": "arn:aws:lambda:....:function:testRecieveArgs",
      "End": true

    }

  }
}

вот лямбда-функции testPassInArgs:

import json

def lambda_handler(event, context):        
    stations={}
    stations['a']='A'
    stations['b']='B'
    stations['c']='C'    

    return  {
        'a':stations['a'],
        'b':stations['b'],
        'c':stations['c']
    }

другие лямбда-выражения testRecieveArgs:

import json

def lambda_handler(event, context):
    # TODO implement
    out={}
    if type(event) == dict:
        for item in event:
            out[item+item] = event[item]+event[item]
            print(item)
            print(event[item])



    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!'),
        'event': out
    }

Я быожидали, что аргумент «Параметры» во второй части конечного автомата проанализировал бы вывод первой лямбды и передал только первую часть (а именно «А») второй лямбде.Однако это не так.вывод второй лямбды:

"InputPathInputPath": "$.a$.a"

Вход второй лямбды - это просто выход первой.

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

Я, должно быть, здесь упускаю трюк?Если кто-нибудь знает, что это было бы очень полезно?

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

...