我有一个调用 Lambda 函数(带有代理集成(的 AWS API 网关,该函数应返回一个音频文件。
假设我将音频作为"字节"对象。我该如何返回它,以便浏览器(例如 Firefox(可以立即识别和播放它?
这是我得到的,但显然,这并不真正有效。
sound: bytes
return {
'statusCode': 200,
'headers': {
'Content-Type': 'audio/mpeg'
},
'isBase64Encoded': True,
'body': base64.b64encode(sound)
}
我的情况的解决方案(代理集成(
- Base-64 对字节对象进行编码(例如
base64.b64encode(sound)
在 Python 中(,并将结果放入响应字典的'body'
中。 - 在响应字典中将
'isBase64Encoded'
设置为true。 - 在 API 设置中,将二进制媒体类型设置为适当的媒体类型,不要忘记将客户端的接受标头设置为相同的值。
直接帮助我的资源
- https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html#api-gateway-simple-proxy-for-lambda-output-format
- https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-payload-encodings-configure-with-console.html
可能有用的资源
- https://aws.amazon.com/ru/blogs/compute/binary-support-for-api-integrations-with-amazon-api-gateway/
- https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-payload-encodings.html