diff --git a/contrib/aws/aws-sdk-go-v2/aws/doc.go b/contrib/aws/aws-sdk-go-v2/aws/doc.go new file mode 100644 index 0000000000..c8a4ea63bf --- /dev/null +++ b/contrib/aws/aws-sdk-go-v2/aws/doc.go @@ -0,0 +1,74 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016 Datadog, Inc. + +// Package aws provides functions to trace aws/aws-sdk-go-v2 (https://github.com/aws/aws-sdk-go-v2). +// +// Usage Example: +// +// import ( +// "context" +// "log" +// "os" +// +// "github.com/aws/aws-sdk-go-v2/aws" +// awscfg "github.com/aws/aws-sdk-go-v2/config" +// "github.com/aws/aws-sdk-go-v2/feature/s3/manager" +// "github.com/aws/aws-sdk-go-v2/service/s3" +// "github.com/aws/aws-sdk-go-v2/service/sqs" +// +// awstrace "gopkg.in/DataDog/dd-trace-go.v1/contrib/aws/aws-sdk-go-v2/aws" +// "gopkg.in/DataDog/dd-trace-go.v1/ddtrace/ext" +// "gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer" +// ) +// +// func Example() { +// awsCfg, err := awscfg.LoadDefaultConfig(context.Background()) +// if err != nil { +// log.Fatalf(err.Error()) +// } +// awstrace.AppendMiddleware(&awsCfg) +// sqsClient := sqs.NewFromConfig(awsCfg) +// sqsClient.ListQueues(context.Background(), &sqs.ListQueuesInput{}) +// } +// +// // An example of the aws span inheriting a parent span from context. +// func Example_context() { +// cfg, err := awscfg.LoadDefaultConfig(context.TODO(), awscfg.WithRegion("us-west-2")) +// if err != nil { +// log.Fatalf("error: %v", err) +// } +// awstrace.AppendMiddleware(&cfg) +// client := s3.NewFromConfig(cfg) +// uploader := manager.NewUploader(client) +// +// // Create a root span. +// span, ctx := tracer.StartSpanFromContext(context.Background(), "parent.request", +// tracer.SpanType(ext.SpanTypeWeb), +// tracer.ServiceName("web"), +// tracer.ResourceName("/upload"), +// ) +// defer span.Finish() +// +// // Open image file. +// filename := "my_image.png" +// file, err := os.Open(filename) +// if err != nil { +// log.Fatalf("error: %v", err) +// } +// defer file.Close() +// +// uploadParams := &s3.PutObjectInput{ +// Bucket: aws.String("my_bucket"), +// Key: aws.String(filename), +// Body: file, +// ContentType: aws.String("image/png"), +// } +// // Inherit parent span from context. +// _, err = uploader.Upload(ctx, uploadParams) +// if err != nil { +// log.Fatalf("error: %v", err) +// } +// } +package aws diff --git a/contrib/aws/aws-sdk-go-v2/aws/example_test.go b/contrib/aws/aws-sdk-go-v2/aws/example_test.go index 5aa271f153..6ab7a4cb00 100644 --- a/contrib/aws/aws-sdk-go-v2/aws/example_test.go +++ b/contrib/aws/aws-sdk-go-v2/aws/example_test.go @@ -5,24 +5,4 @@ package aws_test -import ( - "context" - "log" - - awstrace "gopkg.in/DataDog/dd-trace-go.v1/contrib/aws/aws-sdk-go-v2/aws" - - awscfg "github.com/aws/aws-sdk-go-v2/config" - "github.com/aws/aws-sdk-go-v2/service/sqs" -) - -func Example() { - awsCfg, err := awscfg.LoadDefaultConfig(context.Background()) - if err != nil { - log.Fatalf(err.Error()) - } - - awstrace.AppendMiddleware(&awsCfg) - - sqsClient := sqs.NewFromConfig(awsCfg) - sqsClient.ListQueues(context.Background(), &sqs.ListQueuesInput{}) -} +// The example was moved into the package godoc to avoid adding its dependencies into dd-trace-go's go.mod file. diff --git a/contrib/aws/aws-sdk-go/aws/example_test.go b/contrib/aws/aws-sdk-go/aws/example_test.go index a240331e44..2b6605153e 100644 --- a/contrib/aws/aws-sdk-go/aws/example_test.go +++ b/contrib/aws/aws-sdk-go/aws/example_test.go @@ -6,11 +6,18 @@ package aws_test import ( + "context" + "log" + "os" + awstrace "gopkg.in/DataDog/dd-trace-go.v1/contrib/aws/aws-sdk-go/aws" + "gopkg.in/DataDog/dd-trace-go.v1/ddtrace/ext" + "gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/s3" + "github.com/aws/aws-sdk-go/service/s3/s3manager" ) // To start tracing requests, wrap the AWS session.Session by invoking @@ -25,3 +32,39 @@ func Example() { Bucket: aws.String("some-bucket-name"), }) } + +// An example of the aws span inheriting a parent span from context. +func Example_context() { + cfg := aws.NewConfig().WithRegion("us-west-2") + sess := session.Must(session.NewSession(cfg)) + sess = awstrace.WrapSession(sess) + uploader := s3manager.NewUploader(sess) + + // Create a root span. + span, ctx := tracer.StartSpanFromContext(context.Background(), "parent.request", + tracer.SpanType(ext.SpanTypeWeb), + tracer.ServiceName("web"), + tracer.ResourceName("/upload"), + ) + defer span.Finish() + + // Open image file. + filename := "my_image.png" + file, err := os.Open(filename) + if err != nil { + log.Fatalf("error: %v", err) + } + defer file.Close() + + uploadParams := &s3manager.UploadInput{ + Bucket: aws.String("my_bucket"), + Key: aws.String(filename), + Body: file, + ContentType: aws.String("image/png"), + } + // Inherit parent span from context. + _, err = uploader.UploadWithContext(ctx, uploadParams) + if err != nil { + log.Fatalf("error: %v", err) + } +}