@@ -3,21 +3,20 @@ package aws
3
3
import (
4
4
"context"
5
5
"fmt"
6
+ "slices"
6
7
7
- "github.com/aquasecurity/trivy-aws/pkg/concurrency"
8
- "github.com/aquasecurity/trivy-aws/pkg/errs"
9
- "github.com/aquasecurity/trivy/pkg/iac/types"
10
-
11
- "github.com/aquasecurity/trivy/pkg/iac/debug"
12
-
8
+ "github.com/aws/aws-sdk-go-v2/aws"
9
+ "github.com/aws/aws-sdk-go-v2/aws/arn"
10
+ "github.com/aws/aws-sdk-go-v2/config"
13
11
"github.com/aws/aws-sdk-go-v2/service/sts"
14
12
15
13
"github.com/aquasecurity/trivy-aws/internal/adapters/cloud/options"
14
+ "github.com/aquasecurity/trivy-aws/pkg/concurrency"
15
+ "github.com/aquasecurity/trivy-aws/pkg/errs"
16
16
"github.com/aquasecurity/trivy-aws/pkg/progress"
17
17
"github.com/aquasecurity/trivy/pkg/iac/state"
18
- "github.com/aws/aws-sdk-go-v2/aws"
19
- "github.com/aws/aws-sdk-go-v2/aws/arn"
20
- "github.com/aws/aws-sdk-go-v2/config"
18
+ "github.com/aquasecurity/trivy/pkg/iac/types"
19
+ "github.com/aquasecurity/trivy/pkg/log"
21
20
)
22
21
23
22
var registeredAdapters []ServiceAdapter
@@ -44,27 +43,24 @@ type RootAdapter struct {
44
43
accountID string
45
44
currentService string
46
45
region string
47
- debugWriter debug .Logger
46
+ logger * log .Logger
48
47
concurrencyStrategy concurrency.Strategy
49
48
}
50
49
51
- func NewRootAdapter (ctx context.Context , cfg aws.Config , tracker progress.ServiceTracker ) * RootAdapter {
50
+ func NewRootAdapter (ctx context.Context , cfg aws.Config , tracker progress.ServiceTracker , logger * log. Logger ) * RootAdapter {
52
51
return & RootAdapter {
53
52
ctx : ctx ,
54
53
tracker : tracker ,
55
54
sessionCfg : cfg ,
56
55
region : cfg .Region ,
56
+ logger : logger ,
57
57
}
58
58
}
59
59
60
60
func (a * RootAdapter ) Region () string {
61
61
return a .region
62
62
}
63
63
64
- func (a * RootAdapter ) Debug (format string , args ... interface {}) {
65
- a .debugWriter .Log (format , args ... )
66
- }
67
-
68
64
func (a * RootAdapter ) ConcurrencyStrategy () concurrency.Strategy {
69
65
return a .concurrencyStrategy
70
66
}
@@ -81,6 +77,10 @@ func (a *RootAdapter) Tracker() progress.ServiceTracker {
81
77
return a .tracker
82
78
}
83
79
80
+ func (a * RootAdapter ) Logger () * log.Logger {
81
+ return a .logger
82
+ }
83
+
84
84
func (a * RootAdapter ) CreateMetadata (resource string ) types.Metadata {
85
85
86
86
// some services don't require region/account id in the ARN
@@ -136,7 +136,7 @@ func Adapt(ctx context.Context, state *state.State, opt options.Options) error {
136
136
c := & RootAdapter {
137
137
ctx : ctx ,
138
138
tracker : opt .ProgressTracker ,
139
- debugWriter : opt . DebugWriter . Extend ("adapt" , " aws" ),
139
+ logger : log . WithPrefix ("adapt- aws" ),
140
140
concurrencyStrategy : opt .ConcurrencyStrategy ,
141
141
}
142
142
@@ -148,15 +148,15 @@ func Adapt(ctx context.Context, state *state.State, opt options.Options) error {
148
148
c .sessionCfg = cfg
149
149
150
150
if opt .Region != "" {
151
- c .Debug ("Using region '%s'" , opt .Region )
151
+ c .logger . Info ("Using region" , log . String ( "region" , opt .Region ) )
152
152
c .sessionCfg .Region = opt .Region
153
153
}
154
154
if opt .Endpoint != "" {
155
- c .Debug ("Using endpoint '%s'" , opt .Endpoint )
155
+ c .logger . Info ("Using endpoint" , log . String ( "endpoint" , opt .Endpoint ) )
156
156
c .sessionCfg .EndpointResolverWithOptions = createResolver (opt .Endpoint )
157
157
}
158
158
159
- c .Debug ("Discovering caller identity..." )
159
+ c .logger . Debug ("Discovering caller identity..." )
160
160
stsClient := sts .NewFromConfig (c .sessionCfg )
161
161
result , err := stsClient .GetCallerIdentity (ctx , & sts.GetCallerIdentityInput {})
162
162
if err != nil {
@@ -166,13 +166,13 @@ func Adapt(ctx context.Context, state *state.State, opt options.Options) error {
166
166
return fmt .Errorf ("missing account id for aws account" )
167
167
}
168
168
c .accountID = * result .Account
169
- c .Debug ("AWS account ID: %s" , c .accountID )
169
+ c .logger . Info ("AWS account ID" , log . String ( "ID" , c .accountID ) )
170
170
171
171
if len (opt .Services ) == 0 {
172
- c .Debug ("Preparing to run for all %d registered services..." , len (registeredAdapters ))
172
+ c .logger . Info ("Preparing to run for all registered services..." , log . Int ( "count" , len (registeredAdapters ) ))
173
173
opt .ProgressTracker .SetTotalServices (len (registeredAdapters ))
174
174
} else {
175
- c .Debug ("Preparing to run for %d filtered services..." , len (opt .Services ))
175
+ c .logger . Info ("Preparing to run for filtered services..." , log . Int ( "count" , len (opt .Services ) ))
176
176
opt .ProgressTracker .SetTotalServices (len (opt .Services ))
177
177
}
178
178
@@ -181,16 +181,16 @@ func Adapt(ctx context.Context, state *state.State, opt options.Options) error {
181
181
var adapterErrors []error
182
182
183
183
for _ , adapter := range registeredAdapters {
184
- if len (opt .Services ) != 0 && ! contains (opt .Services , adapter .Name ()) {
184
+ if len (opt .Services ) != 0 && ! slices . Contains (opt .Services , adapter .Name ()) {
185
185
continue
186
186
}
187
187
c .currentService = adapter .Name ()
188
- c .Debug ("Running adapter for %s..." , adapter .Name ())
188
+ c .logger . Debug ("Running adapter" , log . String ( "service" , adapter .Name () ))
189
189
opt .ProgressTracker .StartService (adapter .Name ())
190
190
191
191
if err := adapter .Adapt (c , state ); err != nil {
192
- c .Debug ( "Error occurred while running adapter for %s: %s" , adapter .Name (), err )
193
- adapterErrors = append (adapterErrors , fmt .Errorf ("failed to run adapter for %s: %w" , adapter .Name (), err ))
192
+ c .logger . Error ( "Failed to adapt" , log . String ( "service" , adapter .Name ()), log . Err ( err ) )
193
+ adapterErrors = append (adapterErrors , fmt .Errorf ("failed to adapt service %s: %w" , adapter .Name (), err ))
194
194
}
195
195
opt .ProgressTracker .FinishService ()
196
196
}
@@ -201,12 +201,3 @@ func Adapt(ctx context.Context, state *state.State, opt options.Options) error {
201
201
202
202
return nil
203
203
}
204
-
205
- func contains (services []string , service string ) bool {
206
- for _ , s := range services {
207
- if s == service {
208
- return true
209
- }
210
- }
211
- return false
212
- }
0 commit comments