in aws_signing_helper/update.go [25:73]
func Update(credentialsOptions CredentialsOpts, profile string, once bool) {
var refreshableCred = TemporaryCredential{}
var nextRefreshTime time.Time
signer, signatureAlgorithm, err := GetSigner(&credentialsOptions)
if err != nil {
log.Println(err)
os.Exit(1)
}
defer signer.Close()
for {
credentialProcessOutput, err := GenerateCredentials(&credentialsOptions, signer, signatureAlgorithm)
if err != nil {
log.Fatal(err)
}
// Assign credential values
refreshableCred.AccessKeyId = credentialProcessOutput.AccessKeyId
refreshableCred.SecretAccessKey = credentialProcessOutput.SecretAccessKey
refreshableCred.SessionToken = credentialProcessOutput.SessionToken // nosemgrep
refreshableCred.Expiration, _ = time.Parse(time.RFC3339, credentialProcessOutput.Expiration)
if (refreshableCred == TemporaryCredential{}) {
log.Println("no credentials created")
os.Exit(1)
}
// Get credentials file contents
lines, err := GetCredentialsFileContents()
if err != nil {
log.Println("unable to get credentials file contents")
os.Exit(1)
}
// Write to credentials file
err = WriteTo(profile, lines, &refreshableCred)
if err != nil {
log.Println("unable to write to AWS credentials file")
os.Exit(1)
}
if once {
break
}
nextRefreshTime = refreshableCred.Expiration.Add(-UpdateRefreshTime)
log.Println("Credentials will be refreshed at", nextRefreshTime.String())
time.Sleep(time.Until(nextRefreshTime))
}
}