github.com/epsagon/epsagon-go@v1.39.0/example/ddb_example/write/main.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "github.com/aws/aws-lambda-go/events" 6 "github.com/aws/aws-lambda-go/lambda" 7 "github.com/aws/aws-sdk-go/aws" 8 "github.com/aws/aws-sdk-go/aws/session" 9 "github.com/aws/aws-sdk-go/service/dynamodb" 10 "github.com/aws/aws-sdk-go/service/dynamodb/dynamodbattribute" 11 "github.com/epsagon/epsagon-go/epsagon" 12 "github.com/epsagon/epsagon-go/wrappers/aws/aws-sdk-go/aws" 13 "github.com/google/uuid" 14 "log" 15 "os" 16 ) 17 18 // Item example 19 type Item struct { 20 Item string `json:"item"` 21 } 22 23 func ddbHandler(request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) { 24 log.Println("In ddbHandler, received body: ", request.Body) 25 26 session := epsagonawswrapper.WrapSession(session.Must(session.NewSession(&aws.Config{ 27 Region: aws.String("eu-west-1")}, 28 ))) 29 30 svc := dynamodb.New(session) 31 32 item := Item{ 33 Item: uuid.New().String(), 34 } 35 36 av, marshalErr := dynamodbattribute.MarshalMap(item) 37 38 if marshalErr != nil { 39 marshErrMsg := fmt.Sprintf("Failed to marshal table: %v", marshalErr) 40 log.Println(marshErrMsg) 41 return events.APIGatewayProxyResponse{Body: marshErrMsg, StatusCode: 500}, marshalErr 42 } 43 44 input := &dynamodb.PutItemInput{ 45 Item: av, 46 TableName: aws.String(os.Getenv("TABLE_NAME")), 47 } 48 49 _, err := svc.PutItem(input) 50 51 if err != nil { 52 fmt.Println("Failed calling PutItem:") 53 errMsg := fmt.Sprintf("Failed calling PutItem: %v", err.Error()) 54 return events.APIGatewayProxyResponse{Body: errMsg, StatusCode: 500}, err 55 } 56 57 fmt.Println("Successfully written item to table") 58 return events.APIGatewayProxyResponse{Body: request.Body, StatusCode: 200}, nil 59 } 60 61 func main() { 62 log.Println("enter main") 63 config := epsagon.NewTracerConfig("ddb-test-go-v2", "") 64 config.Debug = true 65 lambda.Start(epsagon.WrapLambdaHandler(config, ddbHandler)) 66 log.Println("exit main") 67 }