通过 ElasticBeansStalk 上托管的 API Gateway 在 AWS S3 上上传图像
Posted
技术标签:
【中文标题】通过 ElasticBeansStalk 上托管的 API Gateway 在 AWS S3 上上传图像【英文标题】:Upload image on AWS S3 through API Gateway hosted on ElasticBeansStalk 【发布时间】:2021-04-20 01:15:24 【问题描述】:我在 elasticbeanstalk 上部署了一个 REST API,它将图像上传到 s3 存储桶。
REST API 使用 node.js 编写,前端使用 Reactjs。
当我调用托管在 elasticbeanstalk 上的 REST API 时,它可以将文件上传到 s3。上传后,文件可访问并正确显示。
我还在本地主机上部署了 REST API,并上传了文件。它工作正常。上传的文件显示正确。
另外,我也使用 elasticbeanstalk 配置 API 网关。 当我通过 API 网关调用相同的 REST API 并且可以在 s3 上上传文件时。上传后,该文件在存储桶上可用,但不知何故该文件未正确打开。该文件似乎已损坏。这可能是访问策略的问题。
我也有一次在文件中看到这个问题
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>10292CE4C4D62A301</RequestId>
<HostId>XJjQBB3DwB6H0lVkS5cHpj3D9ysTa9tApFaacsklg6MGFEnRwyRWLgnVojM8jY3TpCZ6/NQfMogg=</HostId>
</Error>
这是正确显示的文件。它是通过直接从本地主机或弹性 beanstalk 调用 REST API 上传的。 https://images-for-naradej.s3.amazonaws.com/2021-01-14T23%3A39%3A49.938Z-largebanner.jpg
这是未显示的文件。通过调用连接到 Elastic beanstalk 的 API Gateway 上传。 https://images-for-naradej.s3.amazonaws.com/2021-01-14T23%3A46%3A23.030Z-largebanner.jpg
当我通过 API 网关上传文件时,我不确定为什么文件损坏或访问被拒绝。
有人可以帮我吗?
【问题讨论】:
你是否在你的 api 网关中启用了binary support? 此问题已通过在 API Gateway 中启用二进制媒体类型得到修复。类型应该是“multipart/form-data” 【参考方案1】:通过在 api 网关中添加二进制媒体类型来解决此问题。类型应该是“multipart/form-data”
【讨论】:
以上是关于通过 ElasticBeansStalk 上托管的 API Gateway 在 AWS S3 上上传图像的主要内容,如果未能解决你的问题,请参考以下文章
将 iOS 应用程序连接到 Amazon 上托管的 Ejabberd 服务器
在 IIS 上托管的 ASP.NET Core WebApp 上提供持久配置
没有显示 Apache 和 mod_wsgi 的 Ubuntu VM 上托管的 Django 应用程序