亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Go 設置 AWS Lambda,為什么這個簡單的函數總是出現“內部服務器錯誤”?

使用 Go 設置 AWS Lambda,為什么這個簡單的函數總是出現“內部服務器錯誤”?

Go
侃侃爾雅 2023-05-04 17:30:16
我實際上是在使用Go 文檔中的示例函數:package mainimport (    "context"    "fmt"    "github.com/aws/aws-lambda-go/lambda")type MyEvent struct {    Name string `json:"name"`}func HandleRequest(ctx context.Context, name MyEvent) (string, error) {    return fmt.Sprintf("Hello %s!", name.Name), nil}func main() {    lambda.Start(HandleRequest)}如果我使用測試事件控制臺并輸入{ "name": "John" }它就可以正常工作。但是如果我轉到添加觸發器,單擊 API 網關,然后單擊創建新 API,將安全性設置為打開,保留其他所有默認值,然后單擊添加,然后單擊保存。如果我看到它在底部列為“API 端點:”的 URL 并單擊它,我會收到“內部服務器錯誤”。如果我做curl -XPOST -d "{ \"name\": \"Paul\" }" https://AWS-URL-ENDPOINT/amazonaws.com/default/mytestfunction我收到“內部服務器錯誤”。我究竟做錯了什么?
查看完整描述

2 回答

?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

最常見的原因之一Internal server error是您的 Lambda 函數崩潰或未返回觸發服務預期的內容。

在這種情況下,我懷疑兩者都有。

當您通過 API 網關代理時,您的事件負載不僅僅是您發布的內容。

您的 lambda 正在崩潰,因為您從 API 網關獲得的事件無法轉換為您的type MyEvent struct,因為它沒有name屬性;事實上,請求的主體實際上是event.body一個必須解碼的字符串。


查看完整回答
反對 回復 2023-05-04
?
慕少森

TA貢獻2019條經驗 獲得超9個贊

我遇到了這個問題并通過在我的代碼中使用 AWS 結構類型修復了它。

我遵循此處的示例函數,并使用events.APIGatewayProxyRequestevents.APIGatewayProxyResponse 來自“github.com/aws/aws-lambda-go/events”作為我的 DTO。是APIGatewayProxyRequest您的處理程序需要的參數,events.APIGatewayProxyResponse也是您的處理程序需要返回的參數。


查看完整回答
反對 回復 2023-05-04
  • 2 回答
  • 0 關注
  • 133 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號