func Update()

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))
	}
}