github.com/epsagon/epsagon-go@v1.39.0/example/ddb_example/write_sdk_v2/main.go (about) 1 package main 2 3 import ( 4 "context" 5 "fmt" 6 "github.com/aws/aws-lambda-go/events" 7 "github.com/aws/aws-lambda-go/lambda" 8 "github.com/aws/aws-sdk-go-v2/aws" 9 "github.com/aws/aws-sdk-go-v2/aws/external" 10 "github.com/aws/aws-sdk-go-v2/service/dynamodb" 11 "github.com/epsagon/epsagon-go/epsagon" 12 "github.com/google/uuid" 13 "log" 14 "os" 15 ) 16 17 func ddbHandler(request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) { 18 cfg, err := external.LoadDefaultAWSConfig() 19 if err != nil { 20 panic("Failed to load default aws config") 21 } 22 cfg.Region = "eu-west-1" 23 svc := epsagon.WrapAwsV2Service(dynamodb.New(cfg)).(*dynamodb.Client) 24 putItemInput := dynamodb.PutItemInput{ 25 Item: map[string]dynamodb.AttributeValue{ 26 "item": {S: aws.String(uuid.New().String())}, 27 "request": {S: &request.Body}, 28 }, 29 TableName: aws.String(os.Getenv("TABLE_NAME")), 30 } 31 req := svc.PutItemRequest(&putItemInput) 32 33 resp, err := req.Send(context.Background()) 34 if err != nil { 35 return events.APIGatewayProxyResponse{ 36 Body: fmt.Sprintf("PutItem Failed: %s\n%s", 37 resp.String(), err.Error()), 38 StatusCode: 500, 39 }, nil 40 } 41 42 log.Println("Successfully written item to table") 43 return events.APIGatewayProxyResponse{Body: request.Body, StatusCode: 200}, nil 44 } 45 46 func main() { 47 log.Println("enter main") 48 config := epsagon.NewTracerConfig("ddb-test-go-v2", "") 49 config.Debug = true 50 lambda.Start(epsagon.WrapLambdaHandler(config, ddbHandler)) 51 log.Println("exit main") 52 }