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  }