1 回答

TA貢獻1871條經(jīng)驗 獲得超8個贊
結(jié)論 :
這個問題是由 golang 和 python 中 lambda handler 的 param struct 不同引起的。
細節(jié):
API Gateway 映射模板制作的 JSON:
{
"ToCountry": "US",
"ToState": "UT",
"SmsMessageSid": "SMed65aaxxxxxx5c7938df",
"NumMedia": "0",
"ToCity": "",
"FromZip": "",
"SmsSid": "SMed65aaxxxxxx938df",
"FromState": "",
"SmsStatus": "received",
"FromCity": "",
"Body": "Testing+again",
"FromCountry": "IN",
"To": "%2B1xxxxxx848",
"ToZip": "",
"NumSegments": "1",
"MessageSid": "SMed65aa5dxxxx7938df",
"AccountSid": "AC23xxxd98",
"From": "%2B9xxxxxx90",
"ApiVersion": "2010-04-01"
}
eventpython中的參數(shù):
def lambda_handler(event, context):
print("Received event: " + str(event))
return '<?xml version=\"1.0\" encoding=\"UTF-8\"?>'\
'<Response><Message>Hello world! -Lambda</Message></Response>'
參考AWS Python 文檔:
事件 – AWS Lambda 使用此參數(shù)將事件數(shù)據(jù)傳遞給處理程序。該參數(shù)通常是 Python dict 類型。它也可以是列表、str、int、float 或 NoneType 類型。
【重要部分】events.APIGatewayProxyRequest golang中的參數(shù):
// APIGatewayProxyRequest contains data coming from the API Gateway proxy
type APIGatewayProxyRequest struct {
Resource string `json:"resource"` // The resource path defined in API Gateway
Path string `json:"path"` // The url path for the caller
HTTPMethod string `json:"httpMethod"`
Headers map[string]string `json:"headers"`
MultiValueHeaders map[string][]string `json:"multiValueHeaders"`
QueryStringParameters map[string]string `json:"queryStringParameters"`
MultiValueQueryStringParameters map[string][]string `json:"multiValueQueryStringParameters"`
PathParameters map[string]string `json:"pathParameters"`
StageVariables map[string]string `json:"stageVariables"`
RequestContext APIGatewayProxyRequestContext `json:"requestContext"`
Body string `json:"body"`
IsBase64Encoded bool `json:"isBase64Encoded,omitempty"`
}
所以你可以看到,你提供給 Golang AWS lambda handler 的 json map 只匹配一個 key Body。這就是 printf 只打印Testing Again.
解決方案:
要使用 golang 編寫的 lambda 獲得正確的結(jié)果,我認為您可以參考AWS DOC 的這一部分。(這對我們了解 AWS API Gateway 映射模板的工作原理很有幫助。)
重寫映射模板以匹配APIGatewayProxyRequestJSON 標記。
- 1 回答
- 0 關(guān)注
- 143 瀏覽
添加回答
舉報