Skip to content

Commit

Permalink
feat: make AWS SDK log retries at DEBUG or TRACE levels
Browse files Browse the repository at this point in the history
  • Loading branch information
pdecat committed Jan 23, 2024
1 parent 732ab6d commit 2909292
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 15 deletions.
24 changes: 22 additions & 2 deletions aws/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -131,12 +131,13 @@ import (
"github.com/aws/aws-sdk-go-v2/service/wafv2"
"github.com/aws/aws-sdk-go-v2/service/wellarchitected"
"github.com/aws/aws-sdk-go-v2/service/workspaces"
"github.com/aws/smithy-go/logging"
"github.com/hashicorp/go-hclog"
"github.com/rs/dnscache"
"golang.org/x/sync/semaphore"

"github.com/turbot/go-kit/helpers"
"github.com/turbot/steampipe-plugin-sdk/v5/memoize"
"github.com/turbot/steampipe-plugin-sdk/v5/plugin"
"golang.org/x/sync/semaphore"

amplifyEndpoint "github.com/aws/aws-sdk-go/service/amplify"
apigatewayv2Endpoint "github.com/aws/aws-sdk-go/service/apigatewayv2"
Expand Down Expand Up @@ -1949,6 +1950,12 @@ func getBaseClientForAccountUncached(ctx context.Context, d *plugin.QueryData, h
configOptions = append(configOptions, config.WithCredentialsProvider(provider))
}

if plugin.Logger(ctx).GetLevel() <= hclog.Debug {
logger := plugin.Logger(ctx)
configOptions = append(configOptions, config.WithLogger(NewHCLoggerToSmithyLoggerWrapper(&logger)))
configOptions = append(configOptions, config.WithClientLogMode(aws.LogRetries))
}

plugin.Logger(ctx).Info("getBaseClientForAccountUncached", "connection_name", d.Connection.Name, "status", "loading_config")

// NOTE: EC2 metadata service IMDS throttling and retries
Expand Down Expand Up @@ -2017,6 +2024,19 @@ func getBaseClientForAccountUncached(ctx context.Context, d *plugin.QueryData, h

}

// HCLoggerToSmithyLoggerWrapper wraps an hclog Logger in order to pass it as an AWS SDK smithy Logger
type HCLoggerToSmithyLoggerWrapper struct {
hclogger *hclog.Logger
}

func (logger *HCLoggerToSmithyLoggerWrapper) Logf(classification logging.Classification, format string, v ...interface{}) {
(*logger.hclogger).Debug(fmt.Sprintf(format, v...))
}

func NewHCLoggerToSmithyLoggerWrapper(l *hclog.Logger) *HCLoggerToSmithyLoggerWrapper {
return &HCLoggerToSmithyLoggerWrapper{l}
}

// ExponentialJitterBackoff provides backoff delays with jitter based on the
// number of attempts.
type ExponentialJitterBackoff struct {
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ require (
github.com/aws/smithy-go v1.19.0
github.com/gocarina/gocsv v0.0.0-20201208093247-67c824bc04d4
github.com/golang/protobuf v1.5.3
github.com/hashicorp/go-hclog v1.6.1
github.com/rs/dnscache v0.0.0-20230804202142-fc85eb664529
github.com/turbot/go-kit v0.9.0-rc.1
github.com/turbot/steampipe-plugin-sdk/v5 v5.8.0
Expand Down Expand Up @@ -182,7 +183,6 @@ require (
github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
github.com/hashicorp/go-getter v1.7.3 // indirect
github.com/hashicorp/go-hclog v1.6.1 // indirect
github.com/hashicorp/go-plugin v1.6.0 // indirect
github.com/hashicorp/go-safetemp v1.0.0 // indirect
github.com/hashicorp/go-version v1.6.0 // indirect
Expand Down
12 changes: 0 additions & 12 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -215,8 +215,6 @@ github.com/aws/aws-sdk-go-v2 v1.18.1/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3eP
github.com/aws/aws-sdk-go-v2 v1.19.0/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw=
github.com/aws/aws-sdk-go-v2 v1.21.0 h1:gMT0IW+03wtYJhRqTVYn0wLzwdnK9sRMcxmtfGzRdJc=
github.com/aws/aws-sdk-go-v2 v1.21.0/go.mod h1:/RfNgGmRxI+iFOB1OeJUyxiU+9s88k3pfHvDagGEp0M=
github.com/aws/aws-sdk-go-v2 v1.24.0 h1:890+mqQ+hTpNuw0gGP6/4akolQkSToDJgHfQE7AwGuk=
github.com/aws/aws-sdk-go-v2 v1.24.0/go.mod h1:LNh45Br1YAkEKaAqvmE1m8FUx6a5b/V0oAKV7of29b4=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10 h1:dK82zF6kkPeCo8J1e+tGx4JdvDIQzj7ygIoLg8WMuGs=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10/go.mod h1:VeTZetY5KRJLuD/7fkQXMU6Mw7H5m/KP2J5Iy9osMno=
github.com/aws/aws-sdk-go-v2/config v1.18.10 h1:Znce11DWswdh+5kOsIp+QaNfY9igp1QUN+fZHCKmeCI=
Expand All @@ -233,8 +231,6 @@ github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.34/go.mod h1:wZpTEecJe0
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.35/go.mod h1:ipR5PvpSPqIqL5Mi82BxLnfMkHVbmco8kUwO2xrCi0M=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.41 h1:22dGT7PneFMx4+b3pz7lMTRyN8ZKH7M2cW4GP9yUS2g=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.41/go.mod h1:CrObHAuPneJBlfEJ5T3szXOUkLEThaGfvnhTf33buas=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.9 h1:v+HbZaCGmOwnTTVS86Fleq0vPzOd7tnJGbFhP0stNLs=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.9/go.mod h1:Xjqy+Nyj7VDLBtCMkQYOw1QYfAEZCVLrfI0ezve8wd4=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.21/go.mod h1:+Gxn8jYn5k9ebfHEqlhrMirFjSW0v0C9fI+KN5vk2kE=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.23/go.mod h1:mr6c4cHC+S/MMkrjtSlG4QA36kOznDep+0fga5L/fGQ=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.24/go.mod h1:gAuCezX/gob6BSMbItsSlMb6WZGV7K2+fWOvk8xBSto=
Expand All @@ -243,8 +239,6 @@ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.28/go.mod h1:7VRpKQQedkf
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.29/go.mod h1:M/eUABlDbw2uVrdAn+UsI6M727qp2fxkp8K0ejcBDUY=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.35 h1:SijA0mgjV8E+8G45ltVHs0fvKpTj8xmZJ3VwhGKtUSI=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.35/go.mod h1:SJC1nEVVva1g3pHAIdCp7QsRIkMmLAgoDquQ9Rr8kYw=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.9 h1:N94sVhRACtXyVcjXxrwK1SKFIJrA9pOJ5yu2eSHnmls=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.9/go.mod h1:hqamLz7g1/4EJP+GH5NBhcUMLjW+gKLQabgyz6/7WAU=
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.28 h1:KeTxcGdNnQudb46oOl4d90f2I33DF/c6q3RnZAmvQdQ=
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.28/go.mod h1:yRZVr/iT0AqyHeep00SZ4YfBAKojXz08w3XMBscdi0c=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.18 h1:H/mF2LNWwX00lD6FlYfKpLLZgUW7oIzCBkig78x4Xok=
Expand All @@ -269,8 +263,6 @@ github.com/aws/aws-sdk-go-v2/service/appstream v1.20.5 h1:OQDAQTojOKS7xhd3B3NEol
github.com/aws/aws-sdk-go-v2/service/appstream v1.20.5/go.mod h1:tCB/OP6j8wUnfQajoUev5Ulgv/Q1tKM2VruRYUn81+M=
github.com/aws/aws-sdk-go-v2/service/appsync v1.22.5 h1:EbBBnB4ledSB/O+5AOnjtC9UVxvWagAXoX1p4oSQjo0=
github.com/aws/aws-sdk-go-v2/service/appsync v1.22.5/go.mod h1:36P3jShFgSxKDCLZ6Ypu9o260KpILqh3/zRp9dcWYPI=
github.com/aws/aws-sdk-go-v2/service/appsync v1.26.5 h1:sE3C1/KFq6alTwYZRNZz1D+tepwdWP3BijOxh4wipbc=
github.com/aws/aws-sdk-go-v2/service/appsync v1.26.5/go.mod h1:q6yeacrYIXpYt156QvapKEPTn7X7TpeP3R6mVzRhNKE=
github.com/aws/aws-sdk-go-v2/service/athena v1.23.1 h1:/nLhj5+pg84/hVAVqWCAYtWONbnHGixWgBReXvdAXvw=
github.com/aws/aws-sdk-go-v2/service/athena v1.23.1/go.mod h1:p3h9IW61l1BnDbpMeVPbbk+Wsgn5vVkLDMp91jtJniY=
github.com/aws/aws-sdk-go-v2/service/auditmanager v1.23.0 h1:8JqHLQ+aE1AP3DUy4R0OgCYjroNNM93ObeH2qJEs07w=
Expand Down Expand Up @@ -323,8 +315,6 @@ github.com/aws/aws-sdk-go-v2/service/docdb v1.20.1 h1:TxhuipVhk7v9vjJGBlHTuJ7CeE
github.com/aws/aws-sdk-go-v2/service/docdb v1.20.1/go.mod h1:L5e0d7YdvUtAiG6AAQqFi5mM1kHkLz32qkoYvZLm1qU=
github.com/aws/aws-sdk-go-v2/service/drs v1.10.0 h1:7JQlmAKx339YQEImt6dK2xViu9t1MUYSs+gc340HEdA=
github.com/aws/aws-sdk-go-v2/service/drs v1.10.0/go.mod h1:+rdKQi9kdwiJXEAR8Yyl++lLbZhVql61xSPdC44YqTs=
github.com/aws/aws-sdk-go-v2/service/dynamodb v1.18.1 h1:xmKa+GjQxvzK5xZNzrcybXuPOvjYX9JDWNkXF7fNr5c=
github.com/aws/aws-sdk-go-v2/service/dynamodb v1.18.1/go.mod h1:uP2wpt43//qh6NqMFslaRu53A2YbnFStkV4Wn1Ldels=
github.com/aws/aws-sdk-go-v2/service/dynamodb v1.19.0 h1:1AlVHOQPNyAxRkujCxmy5gKH7RrO53Z/bFBt1W0sHuM=
github.com/aws/aws-sdk-go-v2/service/dynamodb v1.19.0/go.mod h1:njGV8YOTBFbXQGuoei1SU+rQO32F01qvBQ9oUIR+SSY=
github.com/aws/aws-sdk-go-v2/service/ec2 v1.81.0 h1:FuCLk1Qm2elBD1MLEM0IujYQLfklBRoOleE91Hy8qPU=
Expand Down Expand Up @@ -381,8 +371,6 @@ github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.11 h1:y2+VQzC
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.11/go.mod h1:iV4q2hsqtNECrfmlXyord9u4zyuFEJX9eLgLpSPzWA8=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.22 h1:kv5vRAl00tozRxSnI0IszPWGXsJOyA7hmEUHFYqsyvw=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.22/go.mod h1:Od+GU5+Yx41gryN/ZGZzAJMZ9R1yn6lgA0fD5Lo5SkQ=
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.7.21 h1:UYhcXvg66FBsZKRpXtNc4w+2rwaTHzST/zhpQBxzhPo=
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.7.21/go.mod h1:NXJls8x8f9zVSaf+EKKoonqaahWK69MUWm6w6ob0FHs=
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.7.23 h1:5AwQnYQT3ZX/N7hPTAx4ClWyucaiqr2esQRMNbJIby0=
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.7.23/go.mod h1:s8OUYECPoPpevQHmRmMBemFIx6Oc91iapsw56KiXIMY=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.21 h1:5C6XgTViSb0bunmU57b3CT+MhxULqHH2721FVA+/kDM=
Expand Down

0 comments on commit 2909292

Please sign in to comment.