IntegrationResponse SAM模板

时间:2020-01-03 10:15:50

标签: aws-lambda aws-api-gateway aws-sam

问题:

  • IntegrationResponse对Sam模板?没有OpenApi,有可能吗?
  • 如何在SAM模板中向HeaderResponses添加标头?

我想达到的目标:

  • 在SAM中定义网关响应和集成响应 CloudFront模板。

我到目前为止检查的内容:

我正在检查SAM github,但是对我来说,根据上面的链接尚不清楚如何进行操作。 我也没有在stackoverflow上找到任何答案,这可以解释为什么我的网关响应代码片段中的标头不正确

我们非常感谢您的帮助

一些例子:

Globals:
  Api:
    GatewayResponses:
      MISSING_AUTHENTICATION_TOKEN:
        ResponseParameters:
        #  gatewayresponse.header.Cache-Control: "no-cache"
        ResponseTemplates: 
          "application/json" : '{"errors": [{errorKey: "error Value"}]}'
        StatusCode: '404'
        #defaultResponse: true

预期的功能级别集成响应:

  Function:
    Type: AWS::Serverless::Function
    Properties:
      Handler: Function.handler
      Timeout: 20
      CodeUri: "src/Function"
      Role: .......
      Events:
        FunctionGet:
          Type: Api
          Properties:
            Path: /Function
            Method: get
            IntegrationResponse:
              SOME_ERROR_CODE
                ResponseTemplates
                  integrationresponse.header

1 个答案:

答案 0 :(得分:1)

长话短说,我问题的一半很愚蠢。代理集成API GW中的功能是通过从服务器向客户端返回响应,而无需在SAM模板中进一步声明。

对于标题,以下方法是正确的:

Globals:
  Api:
    GatewayResponses:
      MISSING_AUTHENTICATION_TOKEN:
        ResponseParameters:
          Headers:
            Access-Control-Allow-Origin: "'*'"
            Access-Control-Allow-Headers: "'*'"
            Cache-Control: "'no-cache'"
            Content-Type: "'application/json'"
        ResponseTemplates: 
           "application/json" : '{"errors": [{errorKey: "error Value"}]}'
        StatusCode: '404'
        #defaultResponse: true