繁体   English   中英

使用 AWS 网关 API 代理从 Python AWS Lambda 重定向

[英]Redirect from a Python AWS Lambda with AWS Gateway API Proxy

发帖在这里是因为我无法使重定向正常工作。 使用 AWS API 网关链接到 Python Lambda function 作为代理只返回响应和 header json。这是代码

import json

def lambda_handler(event, context):
    response = {}
    response["statusCode"]=301
    response["headers"]=[{"key": 'Location',"value": 
     'https://www.google.com'}]
    data = {}
    response["body"]=json.dumps(data)
return response

任何帮助将不胜感激?

谢谢

网络上的混合文档令人困惑。 使用Python时,使用“位置”指定重定向的语法必须为以下语法:

import json

def lambda_handler(event, context):   
    response = {}
    response["statusCode"]=302
    response["headers"]={'Location': 'https://www.google.com'}
    data = {}
    response["body"]=json.dumps(data)
    return response

少一点线,同output

def handler(event, context):
    response = {
        "headers": {"Location": "https://www.google.com", },
        "statusCode": 301,
    }

    return response

我会在前面说,当我将此代码复制到 Lambda function 时,使用对我有意义的设置向其添加 API 网关,并从浏览器和 curl 进行测试,我得到了正确的重定向。 这是预期的,代码看起来正确并且符合文档中的规范。

所以我花了一些时间摆弄 Lambda 和 API 网关中的设置,试图破解它; 加上谷歌搜索,看看其他人是如何让它不起作用的。

2021 年(发帖时间)普遍的互联网共识是 API 网关中有一个设置“使用 Lambda 代理集成”,需要为 API 网关打开才能正确解释返回的 JSON,而这不是默认值。 我今天在控制台中找不到该格式的设置,但是当您创建 API 网关“API”时,您 select 集成,列表中的第一个是 Lambda。选择正确设置集成以解释 JSON( v1 或 v2 格式)。

如果您使用的是已配置的旧 API 网关端点,我建议您寻找“使用 Lambda 代理集成”设置,然后使用“Lambda”集成设置设置 API 网关(如果它是新式的)界面。

如果有人现在遇到这个问题(我想是这样,因为这个问题目前有赏金)然后评论或更新你的 API 网关是如何设置的细节,我也许能指出你不同的地方.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM