github.com/epsagon/epsagon-go@v1.39.0/example/s3_example/write/main.go (about) 1 package main 2 3 import ( 4 "bytes" 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/aws" 9 "github.com/aws/aws-sdk-go/aws/session" 10 "github.com/aws/aws-sdk-go/service/s3/s3manager" 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 func s3WriteHandler(request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) { 19 log.Println("In s3WriteHandler, received body: ", request.Body) 20 21 session := epsagonawswrapper.WrapSession(session.Must(session.NewSession(&aws.Config{ 22 Region: aws.String("eu-west-1")}, 23 ))) 24 25 uploader := s3manager.NewUploader(session) 26 27 byteData := []byte("Hello World") 28 myBucket := os.Getenv("BUCKET_NAME") 29 key := uuid.New().String() 30 31 if len(myBucket) == 0 { 32 errMsg := "ERROR: You need to assign BUCKET_NAME env" 33 log.Println(errMsg) 34 return events.APIGatewayProxyResponse{Body: errMsg, StatusCode: 500}, nil 35 } 36 37 result, err := uploader.Upload(&s3manager.UploadInput{ 38 Bucket: aws.String(myBucket), 39 Key: aws.String(key), 40 Body: bytes.NewReader(byteData), 41 }) 42 43 if err != nil { 44 errMsg := fmt.Sprintf("Failed calling Upload: %v", err.Error()) 45 log.Println(errMsg) 46 return events.APIGatewayProxyResponse{Body: errMsg, StatusCode: 500}, err 47 } 48 49 log.Printf("Succesfully uploaded file to %s\n", result.Location) 50 return events.APIGatewayProxyResponse{Body: request.Body, StatusCode: 200}, nil 51 } 52 53 func main() { 54 log.Println("enter main") 55 config := epsagon.NewTracerConfig("s3-test-go", "") 56 config.Debug = true 57 lambda.Start(epsagon.WrapLambdaHandler(config, s3WriteHandler)) 58 log.Println("exit main") 59 }