从Golang中的AWS Lambda函数读取参数

时间:2019-05-01 22:48:14

标签: go aws-lambda

我将事件从events.json文件传递到AWS lambda函数中,并在函数处理程序中对其进行解析。

代码是:

type MyEvent struct {
    Param string `json:"param1"`
    Token string `json:"token"`
}

func main() {
    lambda.Start(Handler)
}

func Handler(ctx context.Context, evt json.RawMessage) (events.APIGatewayProxyResponse, error) {

    var myEvent MyEvent
    json.Unmarshal(evt, &myEvent)

    fmt.Println(myEvent.Token)
    fmt.Println(len(myEvent.Token))

    // rest of the code is here
}

event.json文件是:

{
    "param1": "Param",
    "token": "35c760f4-b3dc-4657-b4f3–2c6566d4f42e"
}

该函数的输出为

35c760f4-b3dc-4657-b4f3–2c6566d4f42e
38

正在打印的令牌的值正确,但长度不正确。令牌的长度为36,但正在解释/打印为38。

为什么会这样?

PS:我正在使用AWS SAM cli运行该程序。

1 个答案:

答案 0 :(得分:1)

运行

func main() {
    s := "35c760f4-b3dc-4657-b4f3–2c6566d4f42e"
    fmt.Println(len(s))
}

"–",此字符的长度为3。这只是一个奇怪的字符。字符代码为8211,您需要45

https://unicodelookup.com/#8211/1

https://unicodelookup.com/#45/1

len(strings.ReplaceAll(myEvent.Token, "–", "-"))

将为您提供正确的长度