Skip to content

Commit

Permalink
EC2MetadataCredentials should fail to refresh when loaded credentials…
Browse files Browse the repository at this point in the history
… are expired (#2444)
  • Loading branch information
jstewmon authored and AllanZhengYP committed Dec 21, 2018
1 parent abdfa43 commit 2a872ad
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 19 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"type": "feature",
"category": "EC2MetadataCredentials",
"description": "refresh now passes an error to callback if metadata service responds with expired credentials"
}
23 changes: 16 additions & 7 deletions lib/credentials/ec2_metadata_credentials.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,14 +72,23 @@ AWS.EC2MetadataCredentials = AWS.util.inherit(AWS.Credentials, {
*/
load: function load(callback) {
var self = this;
self.metadataService.loadCredentials(function (err, creds) {
self.metadataService.loadCredentials(function(err, creds) {
if (!err) {
self.expired = false;
self.metadata = creds;
self.accessKeyId = creds.AccessKeyId;
self.secretAccessKey = creds.SecretAccessKey;
self.sessionToken = creds.Token;
self.expireTime = new Date(creds.Expiration);
var currentTime = AWS.util.date.getDate();
var expireTime = new Date(creds.Expiration);
if (expireTime < currentTime) {
err = AWS.util.error(
new Error('EC2 Instance Metadata Serivce provided expired credentials'),
{ code: 'EC2MetadataCredentialsProviderFailure' }
);
} else {
self.expired = false;
self.metadata = creds;
self.accessKeyId = creds.AccessKeyId;
self.secretAccessKey = creds.SecretAccessKey;
self.sessionToken = creds.Token;
self.expireTime = expireTime;
}
}
callback(err);
});
Expand Down
37 changes: 25 additions & 12 deletions test/credentials.spec.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 2a872ad

Please sign in to comment.