Lambda function works by itself but not in Step

0

I am using the following example: https://docs.aws.amazon.com/textract/latest/dg/examples-export-table-csv.html

These work wonderfully when I run them as separate Lambda functions. However, I'm having a hard time with making them Step Functions.

Step Graph

StartDocAnalysis produces the following output:

{
  "Ainput": {
    "Comment": "Insert your JSON here"
  },
  "Aoutput": "42baaa094603ed5f656a8d54a144bfcd29caf1255666e11031b7ac6855b436b8"
}

GetDocAnalysis takes that as input, as such:

def lambda_handler(event, context):
    jobId = event['Aoutput']
    response_blocks = GetResults(jobId, file_name)

When I feed the JSON as input in a test invocation of GetDocAnalysis in Lambda, everything works great. When I run this in Step, StartDocAnalysis runs fine and then GetDocAnalysis produces the following error:

{
  "error": "KeyError",
  "cause": {
    "errorMessage": "'Blocks'",
    "errorType": "KeyError",
    "stackTrace": [
      "  File \"/var/task/lambda_function.py\", line 163, in lambda_handler\n    response_blocks = GetResults(jobId, file_name)\n",
      "  File \"/var/task/lambda_function.py\", line 43, in GetResults\n    blocks = response['Blocks']\n"
    ]
  }
}

I haven't been able to get the Step functions to produce any logging or console printing to tell me what it's actually seeing as input. So I'm stuck.

Edit: See the Task Input for the second Lambda function below. Task Input

asked 8 months ago256 views
2 Answers
0

Step Functions by itself does not pass any event details when invoking a Lambda function. You can pass input via the InputPath, ResultPath and OutputPath from step to step or declare Parameters in your state machine. This way you would be able to get visibility of what is happening.

AWS
answered 8 months ago
  • So despite the Task Input being listed, it's not actually passing it?

0

To find out what is going wrong there are two places you can look:

  1. Add a print message to your Lambda function to output the event object. This way you can see exactly what you got.
  2. StepFunctions by default generates logs in the service itself (they are not sent to CloudWatch Logs). So you can open the console and see exactly what was passed in the different steps.
profile pictureAWS
EXPERT
Uri
answered 8 months ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions