Python 获取步骤函数执行结果
我是AWS新手,正在为阶跃函数而挣扎Python 获取步骤函数执行结果,python,aws-lambda,aws-api-gateway,boto3,aws-step-functions,Python,Aws Lambda,Aws Api Gateway,Boto3,Aws Step Functions,我是AWS新手,正在为阶跃函数而挣扎 import json import boto3 import uuid client = boto3.client('stepfunctions') def lambda_handler(event, context): transactionId = str(uuid.uuid1()) print(transactionId) input = {'TransactionId':transactionId,'tex
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!')
}
{
"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
}
}
}
我的工作流程如下:
客户端('search_word')->api网关->lambda函数(调用步骤函数)->步骤函数(生成搜索输出)->客户端
这是我的invoke 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!')
}
{
"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
}
}
}
我想从step函数中获取执行结果并将其传递给客户端。但是我不知道怎么做
只要我能将步骤函数的执行结果提供给客户端,工作流就不必是我建议的
这是我的阶跃函数
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!')
}
{
"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
}
}
}
请帮忙
提前谢谢 您试图将同步的api网关与异步的step函数结合起来。如果使用step函数,则流应该是异步的。您不会通过单个API调用获得响应。您需要创建另一个API,该API将继续“轮询”step函数,以查看它是否已成功执行以及响应是什么 以下是您可以尝试的流程