簡體   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