python-3.x - 使用 API 网关非代理 lambda 和二进制输出设置自定义标头
问题描述
使用 lambda 非代理集成时是否可以设置自定义标头?
目前我已经启用了二进制支持并且我直接从我的处理程序返回但是我需要设置下载的文件名并且计划使用Content-Disposition: attachment; filename="filename.xlsx"
但是我不确定如果我有 lambda 代理集成我该怎么做关掉。
阅读此https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-integration-settings-integration-response.html我不确定它是否仅适用于 json 响应?
该示例将正文注释显示为采用 json 对象,但随后说有一个 base64 编码选项用于二进制支持,但我只是直接从我的函数返回我的二进制数据,如果可能的话,我根本不打算使用 lambda 代理。
我目前正在下载文件,但我正在使用临时文件并且我想命名下载。
# In my service
with tempfile.NamedTemporaryFile(suffix=".xlsx") as tmp:
pd.DataFrame(report_json).to_excel(tmp.name)
bytes_io = BytesIO(tmp.read())
return bytes_io
# In my handler
return base64.b64encode(bytes_io.getvalue())
解决方案
使用更高版本的无服务器框架,例如Content-Disposition
可以设置自定义标头,如下所示。
Integration: lambda
response:
headers:
Content-Type: "'text/csv'"
Content-Disposition: "'attachment; filename=abc.csv'"
我还不确定是否可以将上下文中的值插入到这些值中。
推荐阅读
- php - base64_encode 和 convert.base64-encode 之间的 PHP 结果不同
- html - 站点地图生成器仅找到一页
- javascript - Firestore (javascript sdk) - 只获取新数据(不只是添加)
- python - 模拟 glob 的问题不需要 for 循环
- android - 如何在运行时从共享首选项更改 Retrofit baseUrl
- asp.net-identity - 如何获取 IdentityServer4 本身的自定义声明
- android - 'by viewModels()' Kotlin 属性委托未解析的引用
- reactjs - 反应嵌套路由仅适用于链接
- linux - 面临 rhel 6.4 上的绑定问题
- r - R中向量的元素级联