Skip to content

Commit f351e9c

Browse files
committed
Support source_profile
Fix cognitect-labs#172
1 parent 8d97e57 commit f351e9c

File tree

3 files changed

+16
-5
lines changed

3 files changed

+16
-5
lines changed

src/cognitect/aws/credentials.clj

+7-4
Original file line numberDiff line numberDiff line change
@@ -237,11 +237,14 @@
237237
(fetch [_]
238238
(when (.exists f)
239239
(try
240-
(let [profile (get (config/parse f) profile-name)]
240+
(let [config (config/parse f)
241+
profile (get config profile-name)
242+
source-profile (some->> "source_profile" (get profile) (get config))
243+
creds-profile (or source-profile profile)]
241244
(valid-credentials
242-
{:aws/access-key-id (get profile "aws_access_key_id")
243-
:aws/secret-access-key (get profile "aws_secret_access_key")
244-
:aws/session-token (get profile "aws_session_token")}
245+
{:aws/access-key-id (get creds-profile "aws_access_key_id")
246+
:aws/secret-access-key (get creds-profile "aws_secret_access_key")
247+
:aws/session-token (get creds-profile "aws_session_token")}
245248
"aws profiles file"))
246249
(catch Throwable t
247250
(log/error t "Error fetching credentials from aws profiles file")))))))))

test/resources/.aws/credentials

+3
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,6 @@ aws_secret_access_key = DEFAULT_AWS_SECRET_ACCESS_KEY
66
aws_access_key_id = TARDIGRADE_AWS_ACCESS_KEY
77
aws_secret_access_key = TARDIGRADE_AWS_SECRET_ACCESS_KEY
88
aws_session_token = TARDIGRADE_AWS_SESSION_TOKEN
9+
10+
[sourced]
11+
source_profile = default

test/src/cognitect/aws/credentials_test.clj

+6-1
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,12 @@
129129
(is (= {:aws/access-key-id "TARDIGRADE_AWS_ACCESS_KEY"
130130
:aws/secret-access-key "TARDIGRADE_AWS_SECRET_ACCESS_KEY"
131131
:aws/session-token "TARDIGRADE_AWS_SESSION_TOKEN"}
132-
(credentials/fetch (credentials/profile-credentials-provider))))))))
132+
(credentials/fetch (credentials/profile-credentials-provider))))))
133+
(testing "uses source_profile."
134+
(is (= {:aws/access-key-id "DEFAULT_AWS_ACCESS_KEY"
135+
:aws/secret-access-key "DEFAULT_AWS_SECRET_ACCESS_KEY"
136+
:aws/session-token nil}
137+
(credentials/fetch (credentials/profile-credentials-provider "sourced" test-config)))))))
133138

134139
(deftest container-credentials-provider-test
135140
(testing "The provider reads container metadata correctly."

0 commit comments

Comments
 (0)