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  }