使用 API 网关 non-proxy lambda 和二进制输出设置自定义 header

Setting custom header with API gateway non-proxy lambda and binary output

使用 lambda 非代理集成时是否可以设置自定义 header?

目前我已经启用了二进制支持并且我直接从我的处理程序返回但是我需要设置下载的文件名并且计划使用 Content-Disposition: attachment; filename="filename.xlsx" 但我不确定如何如果我关闭了 lambda 代理集成,我可以这样做。

阅读此 https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-integration-settings-integration-response.html 我不确定它是否仅适用于 json 回复?

该示例显示 body 注释采用 json object 但随后表示存在用于二进制支持的 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())

使用更高版本的无服务器框架自定义 header 例如 Content-Disposition 可以设置如下。

Integration: lambda
response:
  headers:
    Content-Type: "'text/csv'"
    Content-Disposition: "'attachment; filename=abc.csv'"

我不确定是否可以将上下文中的值插入到这些值中。