Skip to content

Commit 1834778

Browse files
Revert "Implement credentials chain for aws-sdk-go-v2 (#4424)"
This reverts commit c24cdae.
1 parent 9511fdb commit 1834778

File tree

743 files changed

+115
-124840
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

743 files changed

+115
-124840
lines changed

agent/app/agent.go

+1-12
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ import (
5959
apierrors "github.com/aws/amazon-ecs-agent/ecs-agent/api/errors"
6060
"github.com/aws/amazon-ecs-agent/ecs-agent/credentials"
6161
"github.com/aws/amazon-ecs-agent/ecs-agent/credentials/instancecreds"
62-
"github.com/aws/amazon-ecs-agent/ecs-agent/credentials/providers"
6362
"github.com/aws/amazon-ecs-agent/ecs-agent/doctor"
6463
"github.com/aws/amazon-ecs-agent/ecs-agent/ec2"
6564
"github.com/aws/amazon-ecs-agent/ecs-agent/eventstream"
@@ -69,7 +68,6 @@ import (
6968
"github.com/aws/amazon-ecs-agent/ecs-agent/tcs/model/ecstcs"
7069
"github.com/aws/amazon-ecs-agent/ecs-agent/utils/retry"
7170
"github.com/aws/amazon-ecs-agent/ecs-agent/wsclient"
72-
awsv2 "github.com/aws/aws-sdk-go-v2/aws"
7371
"github.com/aws/aws-sdk-go/aws"
7472
"github.com/aws/aws-sdk-go/aws/awserr"
7573
aws_credentials "github.com/aws/aws-sdk-go/aws/credentials"
@@ -148,7 +146,6 @@ type ecsAgent struct {
148146
dockerClient dockerapi.DockerClient
149147
containerInstanceARN string
150148
credentialProvider *aws_credentials.Credentials
151-
credentialsCache awsv2.CredentialsProvider
152149
stateManagerFactory factory.StateManager
153150
saveableOptionFactory factory.SaveableOption
154151
pauseLoader loader.Loader
@@ -234,13 +231,6 @@ func newAgent(blackholeEC2Metadata bool, acceptInsecureCert *bool) (agent, error
234231
metadataManager = containermetadata.NewManager(dockerClient, cfg)
235232
}
236233

237-
credentialsCache := awsv2.NewCredentialsCache(
238-
providers.NewInstanceCredentialsCache(
239-
cfg.External.Enabled(),
240-
providers.NewRotatingSharedCredentialsProviderV2(),
241-
nil,
242-
),
243-
)
244234
initialSeqNumber := int64(-1)
245235
return &ecsAgent{
246236
ctx: ctx,
@@ -254,7 +244,6 @@ func newAgent(blackholeEC2Metadata bool, acceptInsecureCert *bool) (agent, error
254244
// to mimic roughly the way it's instantiated by the SDK for a default
255245
// session.
256246
credentialProvider: instancecreds.GetCredentials(cfg.External.Enabled()),
257-
credentialsCache: credentialsCache,
258247
stateManagerFactory: factory.NewStateManager(),
259248
saveableOptionFactory: factory.NewSaveableOption(),
260249
pauseLoader: pause.New(),
@@ -792,7 +781,7 @@ func (agent *ecsAgent) registerContainerInstance(
792781
client ecs.ECSClient,
793782
additionalAttributes []*ecsmodel.Attribute) error {
794783
// Preflight request to make sure they're good
795-
if preflightCreds, err := agent.credentialsCache.Retrieve(context.TODO()); err != nil || !preflightCreds.HasKeys() {
784+
if preflightCreds, err := agent.credentialProvider.Get(); err != nil || preflightCreds.AccessKeyID == "" {
796785
seelog.Errorf("Error getting valid credentials: %s", err)
797786
}
798787

agent/app/agent_test.go

+62-62
Large diffs are not rendered by default.

agent/app/agent_unix_test.go

+52-46
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@ import (
4747
"github.com/aws/amazon-ecs-agent/ecs-agent/eventstream"
4848
md "github.com/aws/amazon-ecs-agent/ecs-agent/manageddaemon"
4949

50-
awsv2 "github.com/aws/aws-sdk-go-v2/aws"
5150
"github.com/aws/aws-sdk-go/aws"
5251
"github.com/aws/aws-sdk-go/aws/awserr"
52+
"github.com/aws/aws-sdk-go/aws/credentials"
5353
"github.com/golang/mock/gomock"
5454
"github.com/stretchr/testify/assert"
5555
)
@@ -74,7 +74,7 @@ func TestDoStartTaskENIHappyPath(t *testing.T) {
7474
monitoShutdownEvents := make(chan bool)
7575

7676
cniClient := mock_ecscni.NewMockCNIClient(ctrl)
77-
mockCredentialsProvider := app_mocks.NewMockCredentialsProvider(ctrl)
77+
mockCredentialsProvider := app_mocks.NewMockProvider(ctrl)
7878
mockPauseLoader := mock_loader.NewMockLoader(ctrl)
7979
mockUdevMonitor := mock_udev.NewMockUdev(ctrl)
8080
mockMetadata := mock_ec2.NewMockEC2MetadataClient(ctrl)
@@ -88,6 +88,7 @@ func TestDoStartTaskENIHappyPath(t *testing.T) {
8888

8989
// These calls are expected to happen, but cannot be ordered as they are
9090
// invoked via go routines, which will lead to occasional test failues
91+
mockCredentialsProvider.EXPECT().IsExpired().Return(false).AnyTimes()
9192
dockerClient.EXPECT().Version(gomock.Any(), gomock.Any()).AnyTimes()
9293
dockerClient.EXPECT().SupportedVersions().Return(apiVersions).AnyTimes()
9394
dockerClient.EXPECT().ListContainers(gomock.Any(), gomock.Any(), gomock.Any()).Return(
@@ -134,7 +135,7 @@ func TestDoStartTaskENIHappyPath(t *testing.T) {
134135
cniClient.EXPECT().Capabilities(ecscni.ECSIPAMPluginName).Return(cniCapabilities, nil),
135136
cniClient.EXPECT().Capabilities(ecscni.ECSAppMeshPluginName).Return(cniCapabilities, nil),
136137
cniClient.EXPECT().Capabilities(ecscni.ECSBranchENIPluginName).Return(cniCapabilities, nil),
137-
mockCredentialsProvider.EXPECT().Retrieve(gomock.Any()).Return(awsv2.Credentials{}, nil),
138+
mockCredentialsProvider.EXPECT().Retrieve().Return(credentials.Value{}, nil),
138139
cniClient.EXPECT().Version(ecscni.VPCENIPluginName).Return("v1", nil),
139140
cniClient.EXPECT().Version(ecscni.ECSBranchENIPluginName).Return("v2", nil),
140141
mockMobyPlugins.EXPECT().Scan().Return([]string{}, nil),
@@ -169,15 +170,15 @@ func TestDoStartTaskENIHappyPath(t *testing.T) {
169170
ctx, cancel := context.WithCancel(context.TODO())
170171
// Cancel the context to cancel async routines
171172
agent := &ecsAgent{
172-
ctx: ctx,
173-
cfg: &cfg,
174-
credentialsCache: mockCredentialsProvider,
175-
dataClient: data.NewNoopClient(),
176-
dockerClient: dockerClient,
177-
pauseLoader: mockPauseLoader,
178-
eniWatcher: eniWatcher,
179-
cniClient: cniClient,
180-
ec2MetadataClient: mockMetadata,
173+
ctx: ctx,
174+
cfg: &cfg,
175+
credentialProvider: credentials.NewCredentials(mockCredentialsProvider),
176+
dataClient: data.NewNoopClient(),
177+
dockerClient: dockerClient,
178+
pauseLoader: mockPauseLoader,
179+
eniWatcher: eniWatcher,
180+
cniClient: cniClient,
181+
ec2MetadataClient: mockMetadata,
181182
terminationHandler: func(state dockerstate.TaskEngineState, dataClient data.Client, taskEngine engine.TaskEngine, cancel context.CancelFunc) {
182183
},
183184
mobyPlugins: mockMobyPlugins,
@@ -440,7 +441,7 @@ func TestDoStartCgroupInitHappyPath(t *testing.T) {
440441
ctrl, credentialsManager, state, imageManager, client,
441442
dockerClient, _, _, execCmdMgr, _ := setup(t)
442443
defer ctrl.Finish()
443-
mockCredentialsProvider := app_mocks.NewMockCredentialsProvider(ctrl)
444+
mockCredentialsProvider := app_mocks.NewMockProvider(ctrl)
444445
mockControl := mock_control.NewMockControl(ctrl)
445446
mockMobyPlugins := mock_mobypkgwrapper.NewMockPlugins(ctrl)
446447
mockPauseLoader := mock_loader.NewMockLoader(ctrl)
@@ -452,6 +453,7 @@ func TestDoStartCgroupInitHappyPath(t *testing.T) {
452453
dockerClient.EXPECT().Version(gomock.Any(), gomock.Any()).AnyTimes()
453454
dockerClient.EXPECT().SupportedVersions().Return(apiVersions).AnyTimes()
454455
imageManager.EXPECT().StartImageCleanupProcess(gomock.Any()).MaxTimes(1)
456+
mockCredentialsProvider.EXPECT().IsExpired().Return(false).AnyTimes()
455457
ec2MetadataClient.EXPECT().PrimaryENIMAC().Return("mac", nil)
456458
ec2MetadataClient.EXPECT().VPCID(gomock.Eq("mac")).Return("vpc-id", nil)
457459
ec2MetadataClient.EXPECT().SubnetID(gomock.Eq("mac")).Return("subnet-id", nil)
@@ -477,7 +479,7 @@ func TestDoStartCgroupInitHappyPath(t *testing.T) {
477479

478480
gomock.InOrder(
479481
mockControl.EXPECT().Init().Return(nil),
480-
mockCredentialsProvider.EXPECT().Retrieve(gomock.Any()).Return(awsv2.Credentials{}, nil),
482+
mockCredentialsProvider.EXPECT().Retrieve().Return(credentials.Value{}, nil),
481483
mockMobyPlugins.EXPECT().Scan().Return([]string{}, nil),
482484
dockerClient.EXPECT().ListPluginsWithFilters(gomock.Any(), gomock.Any(), gomock.Any(),
483485
gomock.Any()).Return([]string{}, nil),
@@ -508,11 +510,11 @@ func TestDoStartCgroupInitHappyPath(t *testing.T) {
508510
ctx, cancel := context.WithCancel(context.TODO())
509511
// Cancel the context to cancel async routines
510512
agent := &ecsAgent{
511-
ctx: ctx,
512-
cfg: &cfg,
513-
credentialsCache: mockCredentialsProvider,
514-
pauseLoader: mockPauseLoader,
515-
dockerClient: dockerClient,
513+
ctx: ctx,
514+
cfg: &cfg,
515+
credentialProvider: credentials.NewCredentials(mockCredentialsProvider),
516+
pauseLoader: mockPauseLoader,
517+
dockerClient: dockerClient,
516518
terminationHandler: func(state dockerstate.TaskEngineState, dataClient data.Client, taskEngine engine.TaskEngine, cancel context.CancelFunc) {
517519
},
518520
mobyPlugins: mockMobyPlugins,
@@ -545,7 +547,7 @@ func TestDoStartCgroupInitErrorPath(t *testing.T) {
545547
dockerClient, _, _, execCmdMgr, _ := setup(t)
546548
defer ctrl.Finish()
547549

548-
mockCredentialsProvider := app_mocks.NewMockCredentialsProvider(ctrl)
550+
mockCredentialsProvider := app_mocks.NewMockProvider(ctrl)
549551
mockControl := mock_control.NewMockControl(ctrl)
550552
mockPauseLoader := mock_loader.NewMockLoader(ctrl)
551553
var discoverEndpointsInvoked sync.WaitGroup
@@ -554,6 +556,7 @@ func TestDoStartCgroupInitErrorPath(t *testing.T) {
554556
dockerClient.EXPECT().Version(gomock.Any(), gomock.Any()).AnyTimes()
555557
dockerClient.EXPECT().SupportedVersions().Return(apiVersions).AnyTimes()
556558
imageManager.EXPECT().StartImageCleanupProcess(gomock.Any()).MaxTimes(1)
559+
mockCredentialsProvider.EXPECT().IsExpired().Return(false).AnyTimes()
557560
mockPauseLoader.EXPECT().LoadImage(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil, nil).AnyTimes()
558561
mockPauseLoader.EXPECT().IsLoaded(gomock.Any()).Return(true, nil).AnyTimes()
559562
mockServiceConnectManager := mock_serviceconnect.NewMockManager(ctrl)
@@ -577,11 +580,11 @@ func TestDoStartCgroupInitErrorPath(t *testing.T) {
577580
// Cancel the context to cancel async routines
578581
defer cancel()
579582
agent := &ecsAgent{
580-
ctx: ctx,
581-
cfg: &cfg,
582-
credentialsCache: mockCredentialsProvider,
583-
dockerClient: dockerClient,
584-
pauseLoader: mockPauseLoader,
583+
ctx: ctx,
584+
cfg: &cfg,
585+
credentialProvider: credentials.NewCredentials(mockCredentialsProvider),
586+
dockerClient: dockerClient,
587+
pauseLoader: mockPauseLoader,
585588
terminationHandler: func(state dockerstate.TaskEngineState, dataClient data.Client, taskEngine engine.TaskEngine, cancel context.CancelFunc) {
586589
},
587590
resourceFields: &taskresource.ResourceFields{
@@ -600,7 +603,7 @@ func TestDoStartGPUManagerHappyPath(t *testing.T) {
600603
ctrl, credentialsManager, state, imageManager, client,
601604
dockerClient, _, _, execCmdMgr, _ := setup(t)
602605
defer ctrl.Finish()
603-
mockCredentialsProvider := app_mocks.NewMockCredentialsProvider(ctrl)
606+
mockCredentialsProvider := app_mocks.NewMockProvider(ctrl)
604607
mockGPUManager := mock_gpu.NewMockGPUManager(ctrl)
605608
mockMobyPlugins := mock_mobypkgwrapper.NewMockPlugins(ctrl)
606609
ec2MetadataClient := mock_ec2.NewMockEC2MetadataClient(ctrl)
@@ -627,6 +630,7 @@ func TestDoStartGPUManagerHappyPath(t *testing.T) {
627630
dockerClient.EXPECT().Version(gomock.Any(), gomock.Any()).AnyTimes()
628631
dockerClient.EXPECT().SupportedVersions().Return(apiVersions).AnyTimes()
629632
imageManager.EXPECT().StartImageCleanupProcess(gomock.Any()).MaxTimes(1)
633+
mockCredentialsProvider.EXPECT().IsExpired().Return(false).AnyTimes()
630634
ec2MetadataClient.EXPECT().PrimaryENIMAC().Return("mac", nil)
631635
ec2MetadataClient.EXPECT().VPCID(gomock.Eq("mac")).Return("vpc-id", nil)
632636
ec2MetadataClient.EXPECT().SubnetID(gomock.Eq("mac")).Return("subnet-id", nil)
@@ -653,7 +657,7 @@ func TestDoStartGPUManagerHappyPath(t *testing.T) {
653657

654658
gomock.InOrder(
655659
mockGPUManager.EXPECT().Initialize().Return(nil),
656-
mockCredentialsProvider.EXPECT().Retrieve(gomock.Any()).Return(awsv2.Credentials{}, nil),
660+
mockCredentialsProvider.EXPECT().Retrieve().Return(credentials.Value{}, nil),
657661
mockMobyPlugins.EXPECT().Scan().Return([]string{}, nil),
658662
dockerClient.EXPECT().ListPluginsWithFilters(gomock.Any(), gomock.Any(), gomock.Any(),
659663
gomock.Any()).Return([]string{}, nil),
@@ -687,11 +691,11 @@ func TestDoStartGPUManagerHappyPath(t *testing.T) {
687691
ctx, cancel := context.WithCancel(context.TODO())
688692
// Cancel the context to cancel async routines
689693
agent := &ecsAgent{
690-
ctx: ctx,
691-
cfg: &cfg,
692-
credentialsCache: mockCredentialsProvider,
693-
dockerClient: dockerClient,
694-
pauseLoader: mockPauseLoader,
694+
ctx: ctx,
695+
cfg: &cfg,
696+
credentialProvider: credentials.NewCredentials(mockCredentialsProvider),
697+
dockerClient: dockerClient,
698+
pauseLoader: mockPauseLoader,
695699
terminationHandler: func(state dockerstate.TaskEngineState, dataClient data.Client, taskEngine engine.TaskEngine, cancel context.CancelFunc) {
696700
},
697701
mobyPlugins: mockMobyPlugins,
@@ -724,7 +728,7 @@ func TestDoStartGPUManagerInitError(t *testing.T) {
724728
dockerClient, _, _, execCmdMgr, _ := setup(t)
725729
defer ctrl.Finish()
726730

727-
mockCredentialsProvider := app_mocks.NewMockCredentialsProvider(ctrl)
731+
mockCredentialsProvider := app_mocks.NewMockProvider(ctrl)
728732
mockGPUManager := mock_gpu.NewMockGPUManager(ctrl)
729733
mockPauseLoader := mock_loader.NewMockLoader(ctrl)
730734
var discoverEndpointsInvoked sync.WaitGroup
@@ -733,6 +737,7 @@ func TestDoStartGPUManagerInitError(t *testing.T) {
733737
dockerClient.EXPECT().Version(gomock.Any(), gomock.Any()).AnyTimes()
734738
dockerClient.EXPECT().SupportedVersions().Return(apiVersions).AnyTimes()
735739
imageManager.EXPECT().StartImageCleanupProcess(gomock.Any()).MaxTimes(1)
740+
mockCredentialsProvider.EXPECT().IsExpired().Return(false).AnyTimes()
736741
mockGPUManager.EXPECT().Initialize().Return(errors.New("init error"))
737742
mockPauseLoader.EXPECT().LoadImage(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil, nil).AnyTimes()
738743
mockPauseLoader.EXPECT().IsLoaded(gomock.Any()).Return(true, nil).AnyTimes()
@@ -749,11 +754,11 @@ func TestDoStartGPUManagerInitError(t *testing.T) {
749754
// Cancel the context to cancel async routines
750755
defer cancel()
751756
agent := &ecsAgent{
752-
ctx: ctx,
753-
cfg: &cfg,
754-
credentialsCache: mockCredentialsProvider,
755-
dockerClient: dockerClient,
756-
pauseLoader: mockPauseLoader,
757+
ctx: ctx,
758+
cfg: &cfg,
759+
credentialProvider: credentials.NewCredentials(mockCredentialsProvider),
760+
dockerClient: dockerClient,
761+
pauseLoader: mockPauseLoader,
757762
terminationHandler: func(state dockerstate.TaskEngineState, dataClient data.Client, taskEngine engine.TaskEngine, cancel context.CancelFunc) {
758763
},
759764
resourceFields: &taskresource.ResourceFields{
@@ -774,7 +779,7 @@ func TestDoStartTaskENIPauseError(t *testing.T) {
774779
defer ctrl.Finish()
775780

776781
cniClient := mock_ecscni.NewMockCNIClient(ctrl)
777-
mockCredentialsProvider := app_mocks.NewMockCredentialsProvider(ctrl)
782+
mockCredentialsProvider := app_mocks.NewMockProvider(ctrl)
778783
mockPauseLoader := mock_loader.NewMockLoader(ctrl)
779784
mockMetadata := mock_ec2.NewMockEC2MetadataClient(ctrl)
780785
mockMobyPlugins := mock_mobypkgwrapper.NewMockPlugins(ctrl)
@@ -784,6 +789,7 @@ func TestDoStartTaskENIPauseError(t *testing.T) {
784789

785790
// These calls are expected to happen, but cannot be ordered as they are
786791
// invoked via go routines, which will lead to occasional test failures
792+
mockCredentialsProvider.EXPECT().IsExpired().Return(false).AnyTimes()
787793
dockerClient.EXPECT().Version(gomock.Any(), gomock.Any()).AnyTimes()
788794
dockerClient.EXPECT().SupportedVersions().Return(apiVersions).AnyTimes()
789795
dockerClient.EXPECT().ListContainers(gomock.Any(), gomock.Any(), gomock.Any()).Return(
@@ -797,13 +803,13 @@ func TestDoStartTaskENIPauseError(t *testing.T) {
797803
cfg.ENITrunkingEnabled = config.BooleanDefaultTrue{Value: config.ExplicitlyEnabled}
798804
ctx, _ := context.WithCancel(context.TODO())
799805
agent := &ecsAgent{
800-
ctx: ctx,
801-
cfg: &cfg,
802-
credentialsCache: mockCredentialsProvider,
803-
dockerClient: dockerClient,
804-
pauseLoader: mockPauseLoader,
805-
cniClient: cniClient,
806-
ec2MetadataClient: mockMetadata,
806+
ctx: ctx,
807+
cfg: &cfg,
808+
credentialProvider: credentials.NewCredentials(mockCredentialsProvider),
809+
dockerClient: dockerClient,
810+
pauseLoader: mockPauseLoader,
811+
cniClient: cniClient,
812+
ec2MetadataClient: mockMetadata,
807813
terminationHandler: func(state dockerstate.TaskEngineState, dataClient data.Client, taskEngine engine.TaskEngine, cancel context.CancelFunc) {
808814
},
809815
mobyPlugins: mockMobyPlugins,

agent/app/generate_mocks.go

-1
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,3 @@
1414
package app
1515

1616
//go:generate mockgen -destination=mocks/credentials_mocks.go -copyright_file=../../scripts/copyright_file github.com/aws/aws-sdk-go/aws/credentials Provider
17-
//go:generate mockgen -destination=mocks/credentials_provider_mocks.go -package mock_credentials -copyright_file=../../scripts/copyright_file github.com/aws/aws-sdk-go-v2/aws CredentialsProvider

agent/app/mocks/credentials_provider_mocks.go

-65
This file was deleted.

0 commit comments

Comments
 (0)