[英]How to fix error with AWS Lambda handler, DynamoDB Put req?
嘗試創建一個 Lambda 來與我的 DynamoDB 交互。 這個特定的 Lambda 是將一個項目放入/寫入數據庫:
package main
import (
"fmt"
"github.com/aws/aws-lambda-go/lambda"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/dynamodb"
"github.com/aws/aws-sdk-go/service/dynamodb/dynamodbattribute"
)
type Item struct {
Email string `json:"email"`
Password string `json:"password"`
Rname string `json:"rname"`
}
func Put() error {
// Create a session - London Region
session, err := session.NewSession(&aws.Config{
Region: aws.String("eu-west-2")},
)
if err != nil {
fmt.Println(err)
}
svc := dynamodb.New(session)
// Create instance of Item Struct
item := Item{
Email: "123@mail.com",
Password: "12345678",
Rname: "abcde",
}
// Marshall Item
av, err := dynamodbattribute.MarshalMap(item)
if err != nil {
fmt.Println("Got error marshalling map:")
fmt.Println(err)
}
// Create Item
input := &dynamodb.PutItemInput{
Item: av,
TableName: aws.String("accountsTable"),
}
_, err = svc.PutItem(input)
if err != nil {
fmt.Println("Got error calling PutItem:")
fmt.Println(err)
}
return err
}
func main() {
lambda.Start(Put())
}
但是得到錯誤:
{
"errorMessage": "handler is nil",
"errorType": "errorString"
}
我也已將運行時設置中的處理程序更改為 main,所以不要認為這會是問題所在。
建設與:
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -a main.go
並通過控制台(無 IAC)將可執行文件的 zip 放入 AWS
解決此錯誤的任何幫助將不勝感激。 謝謝。
您需要將 function 句柄而不是 function 結果傳遞給lambda.Start
請將您的主 function 更新為
func main() {
lambda.Start(Put)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.