【问题标题】:get step function execution result获取阶跃函数执行结果
【发布时间】:2021-05-24 22:24:38
【问题描述】:

我是 AWS 新手,正在努力使用步进功能。

我的工作流程是这样的:

client ('search_word')-> api gateway -> lambda function(调用 step 函数)-> step function(生成搜索输出)-> client

这是我的调用 lambda 函数。

import json
import boto3
import uuid

client = boto3.client('stepfunctions')


def lambda_handler(event, context):
    transactionId = str(uuid.uuid1())
    print(transactionId) 
    
    input = {'TransactionId':transactionId,'text':'search_word'} 
    
    response = client.start_execution(
        stateMachineArn='arn:aws:states:ap-northeast-2:xxxxxxxxxx:stateMachine:MyStateMachine',
        name=transactionId,
        input=json.dumps(input)
        )
        
    print(response) 
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

我想从 step 函数中获取执行结果并将其传递给客户端。但我不知道该怎么做。

工作流程不一定是我建议的,只要我能把step函数的执行结果提供给客户端即可。

这是我的阶梯函数。

{ 
  "Comment": "A simple AWS Step Functions state machine.", 
  "StartAt": "Tokenize", 
  "States": {  
    "Tokenize": { 
      "Type": "Task", 
      "Resource": "arn:aws:lambda:ap-northeast-2:xxxxxxxx:function:search_ko", 
      "Next": "Search"
    }, 
    "Search": { 
      "Type": "Task", 
      "Resource": "arn:aws:lambda:ap-northeast-2:xxxxxxx:function:BM-25-Get-Index", 
      "End": true 
    } 
  }
}

请帮忙。

提前致谢!

【问题讨论】:

    标签: python aws-lambda aws-api-gateway boto3 aws-step-functions


    【解决方案1】:

    您正在尝试将同步的 api 网关与异步的步进函数结合起来。如果您使用阶跃函数,您的流程应该是异步的。您不会通过单个 API 调用获得响应。您将需要创建另一个 API,该 API 将继续“轮询” step 函数以查看它是否已成功执行以及响应是什么。

    这是您可以尝试的流程。

    1. 初始化步进函数的 API 调用。您可以尝试将 API 网关 post 调用与您的 step 函数直接连接,并查看它是否返回执行 arn 作为响应。如果是这样,您将不需要 lambda。如果没有,则坚持使用当前的 lambda 并使其返回执行 arn。
    2. 然后您的应用程序会获取执行 arn 并使用它定期调用另一个 API。如果您认为完成步进函数执行所需的时间少于 30 秒(API 网关超时限制),您可以定期调用 API 或让后端的 lambda 持续轮询响应。
    3. 然后您的第二个 API/Lambda 使用 DescribeExecution 查找执行结果,并返回响应。

    编辑: 如果您认为您的步进函数将在 30 秒内持续执行,您可以尝试使用单个 lambda 启动步进函数,然后使用 DescribeExecution 继续轮询它以完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-16
      • 2015-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-16
      相关资源
      最近更新 更多