Skip to content

Commit b014caf

Browse files
committed
InstanceCredentialsProvider -> InstanceCredentialsCache
1 parent b25becc commit b014caf

10 files changed

+143
-139
lines changed

agent/app/agent.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ type ecsAgent struct {
148148
dockerClient dockerapi.DockerClient
149149
containerInstanceARN string
150150
credentialProvider *aws_credentials.Credentials
151-
credentialProviderV2 awsv2.CredentialsProvider
151+
credentialsCache awsv2.CredentialsProvider
152152
stateManagerFactory factory.StateManager
153153
saveableOptionFactory factory.SaveableOption
154154
pauseLoader loader.Loader
@@ -234,8 +234,8 @@ func newAgent(blackholeEC2Metadata bool, acceptInsecureCert *bool) (agent, error
234234
metadataManager = containermetadata.NewManager(dockerClient, cfg)
235235
}
236236

237-
credentialProviderV2 := awsv2.NewCredentialsCache(
238-
providers.NewInstanceCredentialsProvider(
237+
credentialsCache := awsv2.NewCredentialsCache(
238+
providers.NewInstanceCredentialsCache(
239239
cfg.External.Enabled(),
240240
providers.NewRotatingSharedCredentialsProviderV2(),
241241
nil,
@@ -254,7 +254,7 @@ func newAgent(blackholeEC2Metadata bool, acceptInsecureCert *bool) (agent, error
254254
// to mimic roughly the way it's instantiated by the SDK for a default
255255
// session.
256256
credentialProvider: instancecreds.GetCredentials(cfg.External.Enabled()),
257-
credentialProviderV2: credentialProviderV2,
257+
credentialsCache: credentialsCache,
258258
stateManagerFactory: factory.NewStateManager(),
259259
saveableOptionFactory: factory.NewSaveableOption(),
260260
pauseLoader: pause.New(),
@@ -792,7 +792,7 @@ func (agent *ecsAgent) registerContainerInstance(
792792
client ecs.ECSClient,
793793
additionalAttributes []*ecsmodel.Attribute) error {
794794
// Preflight request to make sure they're good
795-
if preflightCreds, err := agent.credentialProviderV2.Retrieve(context.TODO()); err != nil || !preflightCreds.HasKeys() {
795+
if preflightCreds, err := agent.credentialsCache.Retrieve(context.TODO()); err != nil || !preflightCreds.HasKeys() {
796796
seelog.Errorf("Error getting valid credentials: %s", err)
797797
}
798798

agent/app/agent_test.go

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

agent/app/agent_unix_test.go

+45-45
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ func TestDoStartTaskENIHappyPath(t *testing.T) {
7474
monitoShutdownEvents := make(chan bool)
7575

7676
cniClient := mock_ecscni.NewMockCNIClient(ctrl)
77-
mockCredentialsProviderV2 := app_mocks.NewMockCredentialsProvider(ctrl)
77+
mockCredentialsProvider := app_mocks.NewMockCredentialsProvider(ctrl)
7878
mockPauseLoader := mock_loader.NewMockLoader(ctrl)
7979
mockUdevMonitor := mock_udev.NewMockUdev(ctrl)
8080
mockMetadata := mock_ec2.NewMockEC2MetadataClient(ctrl)
@@ -134,7 +134,7 @@ func TestDoStartTaskENIHappyPath(t *testing.T) {
134134
cniClient.EXPECT().Capabilities(ecscni.ECSIPAMPluginName).Return(cniCapabilities, nil),
135135
cniClient.EXPECT().Capabilities(ecscni.ECSAppMeshPluginName).Return(cniCapabilities, nil),
136136
cniClient.EXPECT().Capabilities(ecscni.ECSBranchENIPluginName).Return(cniCapabilities, nil),
137-
mockCredentialsProviderV2.EXPECT().Retrieve(gomock.Any()).Return(awsv2.Credentials{}, nil),
137+
mockCredentialsProvider.EXPECT().Retrieve(gomock.Any()).Return(awsv2.Credentials{}, nil),
138138
cniClient.EXPECT().Version(ecscni.VPCENIPluginName).Return("v1", nil),
139139
cniClient.EXPECT().Version(ecscni.ECSBranchENIPluginName).Return("v2", nil),
140140
mockMobyPlugins.EXPECT().Scan().Return([]string{}, nil),
@@ -169,15 +169,15 @@ func TestDoStartTaskENIHappyPath(t *testing.T) {
169169
ctx, cancel := context.WithCancel(context.TODO())
170170
// Cancel the context to cancel async routines
171171
agent := &ecsAgent{
172-
ctx: ctx,
173-
cfg: &cfg,
174-
credentialProviderV2: mockCredentialsProviderV2,
175-
dataClient: data.NewNoopClient(),
176-
dockerClient: dockerClient,
177-
pauseLoader: mockPauseLoader,
178-
eniWatcher: eniWatcher,
179-
cniClient: cniClient,
180-
ec2MetadataClient: mockMetadata,
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,
181181
terminationHandler: func(state dockerstate.TaskEngineState, dataClient data.Client, taskEngine engine.TaskEngine, cancel context.CancelFunc) {
182182
},
183183
mobyPlugins: mockMobyPlugins,
@@ -440,7 +440,7 @@ func TestDoStartCgroupInitHappyPath(t *testing.T) {
440440
ctrl, credentialsManager, state, imageManager, client,
441441
dockerClient, _, _, execCmdMgr, _ := setup(t)
442442
defer ctrl.Finish()
443-
mockCredentialsProviderV2 := app_mocks.NewMockCredentialsProvider(ctrl)
443+
mockCredentialsProvider := app_mocks.NewMockCredentialsProvider(ctrl)
444444
mockControl := mock_control.NewMockControl(ctrl)
445445
mockMobyPlugins := mock_mobypkgwrapper.NewMockPlugins(ctrl)
446446
mockPauseLoader := mock_loader.NewMockLoader(ctrl)
@@ -477,7 +477,7 @@ func TestDoStartCgroupInitHappyPath(t *testing.T) {
477477

478478
gomock.InOrder(
479479
mockControl.EXPECT().Init().Return(nil),
480-
mockCredentialsProviderV2.EXPECT().Retrieve(gomock.Any()).Return(awsv2.Credentials{}, nil),
480+
mockCredentialsProvider.EXPECT().Retrieve(gomock.Any()).Return(awsv2.Credentials{}, nil),
481481
mockMobyPlugins.EXPECT().Scan().Return([]string{}, nil),
482482
dockerClient.EXPECT().ListPluginsWithFilters(gomock.Any(), gomock.Any(), gomock.Any(),
483483
gomock.Any()).Return([]string{}, nil),
@@ -508,11 +508,11 @@ func TestDoStartCgroupInitHappyPath(t *testing.T) {
508508
ctx, cancel := context.WithCancel(context.TODO())
509509
// Cancel the context to cancel async routines
510510
agent := &ecsAgent{
511-
ctx: ctx,
512-
cfg: &cfg,
513-
credentialProviderV2: mockCredentialsProviderV2,
514-
pauseLoader: mockPauseLoader,
515-
dockerClient: dockerClient,
511+
ctx: ctx,
512+
cfg: &cfg,
513+
credentialsCache: mockCredentialsProvider,
514+
pauseLoader: mockPauseLoader,
515+
dockerClient: dockerClient,
516516
terminationHandler: func(state dockerstate.TaskEngineState, dataClient data.Client, taskEngine engine.TaskEngine, cancel context.CancelFunc) {
517517
},
518518
mobyPlugins: mockMobyPlugins,
@@ -545,7 +545,7 @@ func TestDoStartCgroupInitErrorPath(t *testing.T) {
545545
dockerClient, _, _, execCmdMgr, _ := setup(t)
546546
defer ctrl.Finish()
547547

548-
mockCredentialsProviderV2 := app_mocks.NewMockCredentialsProvider(ctrl)
548+
mockCredentialsProvider := app_mocks.NewMockCredentialsProvider(ctrl)
549549
mockControl := mock_control.NewMockControl(ctrl)
550550
mockPauseLoader := mock_loader.NewMockLoader(ctrl)
551551
var discoverEndpointsInvoked sync.WaitGroup
@@ -577,11 +577,11 @@ func TestDoStartCgroupInitErrorPath(t *testing.T) {
577577
// Cancel the context to cancel async routines
578578
defer cancel()
579579
agent := &ecsAgent{
580-
ctx: ctx,
581-
cfg: &cfg,
582-
credentialProviderV2: mockCredentialsProviderV2,
583-
dockerClient: dockerClient,
584-
pauseLoader: mockPauseLoader,
580+
ctx: ctx,
581+
cfg: &cfg,
582+
credentialsCache: mockCredentialsProvider,
583+
dockerClient: dockerClient,
584+
pauseLoader: mockPauseLoader,
585585
terminationHandler: func(state dockerstate.TaskEngineState, dataClient data.Client, taskEngine engine.TaskEngine, cancel context.CancelFunc) {
586586
},
587587
resourceFields: &taskresource.ResourceFields{
@@ -600,7 +600,7 @@ func TestDoStartGPUManagerHappyPath(t *testing.T) {
600600
ctrl, credentialsManager, state, imageManager, client,
601601
dockerClient, _, _, execCmdMgr, _ := setup(t)
602602
defer ctrl.Finish()
603-
mockCredentialsProviderV2 := app_mocks.NewMockCredentialsProvider(ctrl)
603+
mockCredentialsProvider := app_mocks.NewMockCredentialsProvider(ctrl)
604604
mockGPUManager := mock_gpu.NewMockGPUManager(ctrl)
605605
mockMobyPlugins := mock_mobypkgwrapper.NewMockPlugins(ctrl)
606606
ec2MetadataClient := mock_ec2.NewMockEC2MetadataClient(ctrl)
@@ -653,7 +653,7 @@ func TestDoStartGPUManagerHappyPath(t *testing.T) {
653653

654654
gomock.InOrder(
655655
mockGPUManager.EXPECT().Initialize().Return(nil),
656-
mockCredentialsProviderV2.EXPECT().Retrieve(gomock.Any()).Return(awsv2.Credentials{}, nil),
656+
mockCredentialsProvider.EXPECT().Retrieve(gomock.Any()).Return(awsv2.Credentials{}, nil),
657657
mockMobyPlugins.EXPECT().Scan().Return([]string{}, nil),
658658
dockerClient.EXPECT().ListPluginsWithFilters(gomock.Any(), gomock.Any(), gomock.Any(),
659659
gomock.Any()).Return([]string{}, nil),
@@ -687,11 +687,11 @@ func TestDoStartGPUManagerHappyPath(t *testing.T) {
687687
ctx, cancel := context.WithCancel(context.TODO())
688688
// Cancel the context to cancel async routines
689689
agent := &ecsAgent{
690-
ctx: ctx,
691-
cfg: &cfg,
692-
credentialProviderV2: mockCredentialsProviderV2,
693-
dockerClient: dockerClient,
694-
pauseLoader: mockPauseLoader,
690+
ctx: ctx,
691+
cfg: &cfg,
692+
credentialsCache: mockCredentialsProvider,
693+
dockerClient: dockerClient,
694+
pauseLoader: mockPauseLoader,
695695
terminationHandler: func(state dockerstate.TaskEngineState, dataClient data.Client, taskEngine engine.TaskEngine, cancel context.CancelFunc) {
696696
},
697697
mobyPlugins: mockMobyPlugins,
@@ -724,7 +724,7 @@ func TestDoStartGPUManagerInitError(t *testing.T) {
724724
dockerClient, _, _, execCmdMgr, _ := setup(t)
725725
defer ctrl.Finish()
726726

727-
mockCredentialsProviderV2 := app_mocks.NewMockCredentialsProvider(ctrl)
727+
mockCredentialsProvider := app_mocks.NewMockCredentialsProvider(ctrl)
728728
mockGPUManager := mock_gpu.NewMockGPUManager(ctrl)
729729
mockPauseLoader := mock_loader.NewMockLoader(ctrl)
730730
var discoverEndpointsInvoked sync.WaitGroup
@@ -749,11 +749,11 @@ func TestDoStartGPUManagerInitError(t *testing.T) {
749749
// Cancel the context to cancel async routines
750750
defer cancel()
751751
agent := &ecsAgent{
752-
ctx: ctx,
753-
cfg: &cfg,
754-
credentialProviderV2: mockCredentialsProviderV2,
755-
dockerClient: dockerClient,
756-
pauseLoader: mockPauseLoader,
752+
ctx: ctx,
753+
cfg: &cfg,
754+
credentialsCache: mockCredentialsProvider,
755+
dockerClient: dockerClient,
756+
pauseLoader: mockPauseLoader,
757757
terminationHandler: func(state dockerstate.TaskEngineState, dataClient data.Client, taskEngine engine.TaskEngine, cancel context.CancelFunc) {
758758
},
759759
resourceFields: &taskresource.ResourceFields{
@@ -774,7 +774,7 @@ func TestDoStartTaskENIPauseError(t *testing.T) {
774774
defer ctrl.Finish()
775775

776776
cniClient := mock_ecscni.NewMockCNIClient(ctrl)
777-
mockCredentialsProviderV2 := app_mocks.NewMockCredentialsProvider(ctrl)
777+
mockCredentialsProvider := app_mocks.NewMockCredentialsProvider(ctrl)
778778
mockPauseLoader := mock_loader.NewMockLoader(ctrl)
779779
mockMetadata := mock_ec2.NewMockEC2MetadataClient(ctrl)
780780
mockMobyPlugins := mock_mobypkgwrapper.NewMockPlugins(ctrl)
@@ -797,13 +797,13 @@ func TestDoStartTaskENIPauseError(t *testing.T) {
797797
cfg.ENITrunkingEnabled = config.BooleanDefaultTrue{Value: config.ExplicitlyEnabled}
798798
ctx, _ := context.WithCancel(context.TODO())
799799
agent := &ecsAgent{
800-
ctx: ctx,
801-
cfg: &cfg,
802-
credentialProviderV2: mockCredentialsProviderV2,
803-
dockerClient: dockerClient,
804-
pauseLoader: mockPauseLoader,
805-
cniClient: cniClient,
806-
ec2MetadataClient: mockMetadata,
800+
ctx: ctx,
801+
cfg: &cfg,
802+
credentialsCache: mockCredentialsProvider,
803+
dockerClient: dockerClient,
804+
pauseLoader: mockPauseLoader,
805+
cniClient: cniClient,
806+
ec2MetadataClient: mockMetadata,
807807
terminationHandler: func(state dockerstate.TaskEngineState, dataClient data.Client, taskEngine engine.TaskEngine, cancel context.CancelFunc) {
808808
},
809809
mobyPlugins: mockMobyPlugins,

agent/vendor/github.com/aws/amazon-ecs-agent/ecs-agent/credentials/providers/instance_credentials_provider.go

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

agent/vendor/github.com/aws/amazon-ecs-agent/ecs-agent/credentials/providers/instance_credentials_provider_linux.go

+4-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

agent/vendor/github.com/aws/amazon-ecs-agent/ecs-agent/credentials/providers/instance_credentials_provider_windows.go

+4-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ecs-agent/credentials/providers/instance_credentials_provider.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ import (
1111
"github.com/aws/aws-sdk-go-v2/credentials/ec2rolecreds"
1212
)
1313

14-
type InstanceCredentialsProvider struct {
14+
type InstanceCredentialsCache struct {
1515
providers []aws.CredentialsProvider
1616
}
1717

18-
func (p *InstanceCredentialsProvider) Retrieve(ctx context.Context) (aws.Credentials, error) {
18+
func (p *InstanceCredentialsCache) Retrieve(ctx context.Context) (aws.Credentials, error) {
1919
var errs []error
2020
for _, provider := range p.providers {
2121
creds, err := provider.Retrieve(ctx)

ecs-agent/credentials/providers/instance_credentials_provider_linux.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -21,23 +21,24 @@ import (
2121
"github.com/aws/aws-sdk-go-v2/credentials/ec2rolecreds"
2222
)
2323

24+
// NewInstanceCredentialsCache returns a chain of instance credentials providers wrapped in a credentials cache.
2425
// The instance credentials chain is the default credentials chain plus the "rotating shared credentials provider",
2526
// so credentials will be checked in this order:
2627
// 1. Env vars (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY).
2728
// 2. Shared credentials file (https://docs.aws.amazon.com/ses/latest/DeveloperGuide/create-shared-credentials-file.html) (file at ~/.aws/credentials containing access key id and secret access key).
2829
// 3. EC2 role credentials. This is an IAM role that the user specifies when they launch their EC2 container instance (ie ecsInstanceRole (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/instance_IAM_role.html)).
2930
// 4. Rotating shared credentials file located at /rotatingcreds/credentials
30-
func NewInstanceCredentialsProvider(
31+
func NewInstanceCredentialsCache(
3132
isExternal bool,
3233
rotatingSharedCreds aws.CredentialsProvider,
3334
imdsClient ec2rolecreds.GetMetadataAPIClient,
34-
) *InstanceCredentialsProvider {
35+
) *InstanceCredentialsCache {
3536
// If imdsClient is nil, the SDK will default to the EC2 IMDS client.
3637
// Pass a non-nil imdsClient to stub it out in tests.
3738
options := func(o *ec2rolecreds.Options) {
3839
o.Client = imdsClient
3940
}
40-
return &InstanceCredentialsProvider{
41+
return &InstanceCredentialsCache{
4142
providers: []aws.CredentialsProvider{
4243
defaultCreds(options),
4344
rotatingSharedCreds,

0 commit comments

Comments
 (0)