我创建了一个lambda,用于将图像上传和下载到s3。
我面临的问题是我在API网关的代理集成方面苦苦挣扎。
检查文档和有关Gateway and Lambda to Return Image的问题后,我可以使上传工作或下载工作,但不能同时进行:(
如果我在serverless.yml文件的apiGateway文件中的apiGateway的binaryMediaTypes中添加-*/*
,如链接栈溢出问题中所建议,我可以进行下载,但随后我的上载功能停止了...(返回502)
如果我不添加此*/*
,则可以上传,但无法下载...
我尝试通过不同的方式进行上传,例如以形式或在主体中以base64字符串形式添加文件,这两种方法都无需使用*/*
,但是当*/*
添加了...
我找不到其他方式来使下载正常运行,而不会破坏上传部分...
有任何线索吗?
(obs1:我在下载返回obj中将内容类型设置为“ image / jpeg”)
(obs2:我知道您可以直接从s3下载图像,但是我在lambda上实现了一些逻辑来决定应提供哪个图像,因此我想通过lambda来做到这一点)
这是serverless.yml文件中有关网关的部分:
答案 0 :(得分:0)
通过Lambda从s3上传和下载图像的最好方法是预先签名的URL。
使用lambda创建预签名URL