mirror of https://github.com/grafana/grafana
Cloudwatch: Correctly obtain IAM roles within ECS container tasks. (#7892)
We now obtain credentials based on the container task's role rather than just relying on the credentials of the enclosing container instance. Fixes #6700.pull/7711/head
parent
5ed7d65b0e
commit
e99137598e
@ -0,0 +1,41 @@ |
||||
package cloudwatch |
||||
|
||||
import ( |
||||
"fmt" |
||||
"os" |
||||
"testing" |
||||
|
||||
"github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds" |
||||
"github.com/aws/aws-sdk-go/aws/credentials/endpointcreds" |
||||
"github.com/aws/aws-sdk-go/aws/session" |
||||
. "github.com/smartystreets/goconvey/convey" |
||||
) |
||||
|
||||
func TestECSCredProvider(t *testing.T) { |
||||
Convey("Running in an ECS container task", t, func() { |
||||
defer os.Clearenv() |
||||
os.Setenv("AWS_CONTAINER_CREDENTIALS_RELATIVE_URI", "/abc/123") |
||||
|
||||
provider := remoteCredProvider(&session.Session{}) |
||||
|
||||
So(provider, ShouldNotBeNil) |
||||
|
||||
ecsProvider, ok := provider.(*endpointcreds.Provider) |
||||
So(ecsProvider, ShouldNotBeNil) |
||||
So(ok, ShouldBeTrue) |
||||
|
||||
So(ecsProvider.Client.Endpoint, ShouldEqual, fmt.Sprintf("http://169.254.170.2/abc/123")) |
||||
}) |
||||
} |
||||
|
||||
func TestDefaultEC2RoleProvider(t *testing.T) { |
||||
Convey("Running outside an ECS container task", t, func() { |
||||
provider := remoteCredProvider(&session.Session{}) |
||||
|
||||
So(provider, ShouldNotBeNil) |
||||
|
||||
ec2Provider, ok := provider.(*ec2rolecreds.EC2RoleProvider) |
||||
So(ec2Provider, ShouldNotBeNil) |
||||
So(ok, ShouldBeTrue) |
||||
}) |
||||
} |
Loading…
Reference in new issue