AWS SAM模板集集成响应映射模板



我有一个AWS SAM模板,它创建了一个连接到Step Function的API网关。

这一切都很好,但我需要添加一个Integration Response Mapping Template到从步骤函数返回的响应。

我看不出这是可能的SAM模板?

我找到了相关的云形成模板:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration-integrationresponse.html

但是看起来我必须创建整个AWS::ApiGateway::Method/Integration/IntegrationResponses链-然后我不确定您如何从SAM模板的其他部分引用它。

我读到它可以用openAPI/Swagger定义完成-这是唯一的方法吗?或者是否有一种更简洁的方法来简单地添加这个模板?

这是我刚才要演示的内容的简化版本…

Transform: AWS::Serverless-2016-10-31
Description: My SAM Template
Resources: 
MyAPIGateway:
Type: AWS::Serverless::Api
Properties:
Name: my-api
StageName: beta
Auth:
ApiKeyRequired: true 
UsagePlan: 
CreateUsagePlan: PER_API
UsagePlanName: my-usage-plan
Quota:
Limit: 1000
Period: DAY
Throttle:
BurstLimit: 1000
RateLimit: 1000

MyStateMachine:
Type: AWS::Serverless::StateMachine
Properties:
Name: my-state-machine
DefinitionUri: statemachines/my-state-machine.asl.json
Events:
MyEvent:
Type: Api
Properties:
Path: /myApiMethod
Method: post
RestApiId: !Ref MyAPIGateway
# TODO: how to we define this Integration Response Template ?
# IntegrationResponse:
#   Template:
#     application/json: |
#         ## parse arn:aws:states:REGION:ACCOUNT:execution:STATE_MACHINE:EXECUTION_NAME
#         ## to get just the name at the end
#         #set($executionArn = $input.json('$.executionArn'))
#         #set($arnTokens = $executionArn.split(':'))
#         #set($lastIndex = $arnTokens.size() - 1)
#         #set($executionId = $arnTokens[$lastIndex].replace('"',''))
#         {
#           "execution_id" : "$executionId",
#           "request_id" : "$context.requestId",
#           "request_start_time" : "$context.requestTimeEpoch"
#         }


现在您正在使用状态机中的AWS SAM事件来为您构造API,这是一种非常容易构造API的方法。但是,API的某些方面不能这样构造。

当您使用AWS::Serverless::Api的DefinitionBody属性(或DefinitionUri)时,您仍然可以使用AWS SAM来构建具有所有高级功能的API。这允许你使用OpenAPI规范和OpenAPI扩展来指定API。

您仍然需要在StateMachine中定义事件,因为这也将确保为API调用其他服务配置正确的权限。如果你没有指定事件,你必须自己修复权限。

相关内容

  • 没有找到相关文章

最新更新