要解决“API网关二进制数据选项在与Lambda+代理集成一起时无法正常工作”的问题,可以尝试以下解决方法:
"requestTemplates": {
"application/json": "{\"body\": \"$util.base64Encode($input.body)\"}"
},
"passthroughBehavior": "WHEN_NO_TEMPLATES",
"contentHandling": "CONVERT_TO_BINARY"
通过使用AWS_PROXY
集成类型来配置API网关与Lambda函数的集成。这可以确保传递二进制数据正确。
确保API网关的集成响应模板正确处理二进制数据。在API网关的集成响应模板中,添加以下内容:
"responseTemplates": {
"application/json": "$util.base64Decode($input.body)"
},
"contentHandling": "CONVERT_TO_TEXT"
base64
编码和解码来处理二进制数据。以下是一个示例代码:import base64
def lambda_handler(event, context):
# 检查请求是否包含二进制数据
if 'isBase64Encoded' in event and event['isBase64Encoded']:
# 解码二进制数据
binary_data = base64.b64decode(event['body'])
# 处理二进制数据
# 编码二进制数据
binary_data_encoded = base64.b64encode(binary_data).decode('utf-8')
# 返回响应
return {
'statusCode': 200,
'body': binary_data_encoded,
'isBase64Encoded': True
}
else:
# 处理非二进制数据
# 返回响应
return {
'statusCode': 200,
'body': 'Hello, World!'
}
通过使用自定义Lambda函数处理二进制数据,可以确保二进制数据正常进行编码和解码。
希望以上解决方法能够帮助您解决问题。