【问题标题】:Serverless API Gateway/Lambda fails to download PDFServerless API Gateway/Lambda 下载 PDF 失败
【发布时间】:2021-06-16 17:32:07
【问题描述】:

我使用无服务器 SAM 和 .NET 核心创建了一个 lambda 函数。此函数通过 API Gateway 在 GET 请求上触发,并应返回一个 pdf 文件。我正在使用 itextsharp 创建 pdf 并尝试使用以下命令返回 pdf 文件

public async Task<IActionResult> GenerateReport()
{
    var reportName = "test";
    var result = await reportHandler.GenerateReportAsync();         
    return File(result, System.Net.Mime.MediaTypeNames.Application.Pdf, reportName + ".pdf");
}

查看此线程AWS Lambda fails to return PDF file 后,我还在我的 API 网关中添加 application/pdf 作为二进制媒体类型,就像在我的 serverless.yaml 中一样

Globals:
  Api:
    BinaryMediaTypes:
    - application~1pdf
Resources:
  ApiGateway:
    Type: AWS::Serverless::Api
    Properties:
      StageName:
        Ref: Environment
      Name:
        Fn::Join:
          - "-"
          - - Ref: AWS::StackName
            - "api"  
    ContentHandling:
    - CONVERT_TO_BINARY

但是,当我尝试打开 PDF 时,仍然出现错误:“无法打开 PDF 文档”。当我用记事本打开 pdf 文件时,它看起来像这样(我只是把它缩短了)

JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9JbWFnZS9XaWR0aCAxNzIvSGVpZ2h0IDM2L0xlbmd0aCAxNjkwL0NvbG9yU3BhY2VbL0luZGV4ZWQvRGV2aWNlUkdCIDI1NSigoKBNTU0BAQGhoaECAgIXFxdMTEz9/f2Xl5f+/v7y8vJpaWkYGBjx8fHMzMxZWVkWFhalpaUcHBwZGRlLS0ukpKQGY1YzRlNjFhNjIwYjFkZjNjMDM1MjE1PjwwZTk1MTRhOGRmNWM0ZTYxYTYyMGIxZGYzYzAzNTIxNT5dPj4KJWlUZXh0LTUuNS4xMy4yCnN0YXJ0eHJlZgo0NTQzCiUlRU9GCg==

任何人都可以帮助这里的问题是什么?

注意:它在我的本地机器上运行良好(我可以完美地打开 PDF)。部署后就不行了

【问题讨论】:

  • 文件正在被base64编码。也许试试这个https://stackoverflow.com/questions/59263288/how-to-stop-aws-api-gateway-from-base64-encoding-binary-responses 会有所帮助?
  • @FrankNielsen 我不确定将“x-amazon-apigateway-integration”放在我的 serverless.yaml 中的哪个位置。但是,我尝试在内容处理中添加 CONVERT_TO_BINARY(请参阅我的 serverless.yaml),但仍然无法正常工作。有什么想法吗?

标签: c# asp.net-web-api lambda aws-api-gateway


【解决方案1】:

使用 sam 1.33.0,它与 AWS::Serverless::Api 资源一起使用,如下所示:

  LocalApi:
    Type: AWS::Serverless::Api
    Properties:
      StageName: dev
      DefinitionBody:
        x-amazon-apigateway-binary-media-types:
          - "*/*"

【讨论】:

    猜你喜欢
    • 2018-12-06
    • 2023-03-06
    • 1970-01-01
    • 2020-03-18
    • 2021-01-08
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多