【问题标题】:Hosting images on Lambda + API gateway在 Lambda + API 网关上托管图像
【发布时间】:2017-06-01 19:18:38
【问题描述】:

我在 AWS Lambda + API 网关环境中运行了 NodeJS 应用程序。

我正在通过无服务器应用程序 (https://www.npmjs.com/package/serverless) 部署我的应用程序。我的资产(包括图片)打包成 zip 格式,发送到 S3 存储并通过云端(常规无服务器流程)进行部署。

请求以 200 OK 状态响应的图像。问题是它们没有显示。我不知道应该从哪里开始寻找问题。

我在我的 API 网关中启用了二进制媒体类型,并提供了以下类型:image/gifimage/jpeg

例如,我正在尝试显示此图像: http://www.top13.net/wp-content/uploads/2015/10/perfectly-timed-funny-cat-pictures-5.jpg

这是我的应用程序中的 URL: http://angular-universal-serverless.maciejtreder.com/assets/img/cat.jpg

甚至可以以这种方式显示图像吗?也许我应该将它们上传到 S3 存储?

以下是日志中的一些条目(在启用二进制媒体类型之前):

http://www.heypasteit.com/clip/0IILRO

启用后: http://www.heypasteit.com/clip/0IILS2

【问题讨论】:

    标签: node.js amazon-web-services amazon-s3 aws-lambda


    【解决方案1】:

    我在使用常规 angular-universal (ng add @nguniversal/express-engine)、serverless@vendia/serverless-express 的 Angular 12.0.5 上遇到了这个问题。 解决方案是:

    1 - 在 API Gateway 中添加媒体类型:

    2 - 在我的 serverless.yml 文件中添加 apiGateway.binaryMediaTypes

    provider:
      ...
      apiGateway:
        binaryMediaTypes:
          - '*/*'
    

    【讨论】:

      【解决方案2】:

      我自己解决了问题。

      这里是样板库:https://github.com/maciejtreder/angular-universal-serverless

      重点是在 Lambda 端对文件进行编码,并以编码形式将其发送到带有适当标头的 API GW。

      【讨论】:

      • assets 文件夹确实获得了构建的一部分(我从 s3 存储桶下载了 zip 文件)...但是找不到资产!!
      猜你喜欢
      • 2016-09-02
      • 2019-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多