gpt4 book ai didi

amazon-web-services - 如何设置 APIGateway 方法以从步骤函数返回值?

转载 作者:行者123 更新时间:2023-12-03 07:21:22 25 4
gpt4 key购买 nike

我有一个由多个 lambda 组成的状态机,我使用 Cloudformation 模板设置了这些 lambda,该模板执行一些处理并最终将文件保存到 S3;除非有要求,否则我不会在这里添加它,因为它可以正常工作。步骤函数的最后部分是一个输出以下内容的 lambda:

{
"output": {
"statusCode": "200",
"body": "{\"dataset-name\": \"inserted\"}",
"headers": {
"Content-Type": "application/json"
}
}
}

这是我必须设置一个调用此步骤函数的 API 方法的 cloudformation 模板:

PostDatasetMethod:
Type: AWS::ApiGateway::Method
DependsOn: Resource
Properties:
ApiKeyRequired: false
AuthorizationType: NONE
HttpMethod: POST
Integration:
Credentials: !Ref 'IamRoleArn'
IntegrationHttpMethod: POST
PassthroughBehavior: NEVER
Type: AWS
Uri: 'arn:aws:apigateway:us-east-1:states:action/StartExecution'
IntegrationResponses:
- StatusCode: 200
RequestTemplates:
application/json: !Sub |
{
"input": "$util.escapeJavaScript($input.json('$'))",
"stateMachineArn": "${StateMachine}"
}
ResourceId: !Ref 'Resource'
RestApiId: !Ref 'Api'

但是,我收到错误

Execution failed due to configuration error: No match for output mapping and no default output mapping configured

当我调用 API 时,即使步骤函数成功完成,我认为是因为我不确定如何在 CloudFormation 模板中设置方法和集成响应。我只需要上面的 json 按原样传递,类似于 lambda 的默认情况。为了使该 API 按预期工作,我还需要 CloudFormation 模板中的哪些内容?

最佳答案

Step Function 是异步调用的,没有自然的方式来执行同步调用。这意味着您无法使 API 网关方法返回 Step Functions 的输出。

有人提出了多种方法来实现这一目标,也许讨论最多的一个是:创建一个 lambda 函数,其唯一目的是启动 Step Functions 的执行,然后开始轮询 Step Functions 的结果。

Here有关获取 Step Functions 结果的一些信息。请注意,由于 API Gateway 的执行限制,这仅当 Step Functions 的持续时间少于 30 秒时才有效。

关于amazon-web-services - 如何设置 APIGateway 方法以从步骤函数返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49654971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com