44 "fmt"
55 "log"
66 "os"
7+ "time"
78
89 "github.com/99designs/aws-vault/v7/prompt"
910 "github.com/99designs/aws-vault/v7/vault"
@@ -50,7 +51,8 @@ func ConfigureAddCommand(app *kingpin.Application, a *AwsVault) {
5051}
5152
5253func AddCommand (input AddCommandInput , keyring keyring.Keyring , awsConfigFile * vault.ConfigFile ) error {
53- var accessKeyID , secretKey , sessionToken string
54+ var accessKeyID , secretKey , sessionToken , expiration string
55+ var expires time.Time
5456
5557 p , _ := awsConfigFile .ProfileSection (input .ProfileName )
5658 if p .SourceProfile != "" {
@@ -68,6 +70,15 @@ func AddCommand(input AddCommandInput, keyring keyring.Keyring, awsConfigFile *v
6870 if sessionToken = os .Getenv ("AWS_SESSION_TOKEN" ); sessionToken == "" {
6971 return fmt .Errorf ("Missing value for AWS_SESSION_TOKEN" )
7072 }
73+ if expiration = os .Getenv ("EXPIRATION" ); expiration == "" {
74+ return fmt .Errorf ("Missing value for EXPIRATION" )
75+ }
76+
77+ var err error
78+ expires , err = time .Parse (time .RFC3339 , expiration )
79+ if err != nil {
80+ return fmt .Errorf ("Error parsing EXPIRATION: %w" , err )
81+ }
7182 } else {
7283 var err error
7384 if accessKeyID , err = prompt .TerminalPrompt ("Enter Access Key ID: " ); err != nil {
@@ -78,7 +89,7 @@ func AddCommand(input AddCommandInput, keyring keyring.Keyring, awsConfigFile *v
7889 }
7990 }
8091
81- creds := aws.Credentials {AccessKeyID : accessKeyID , SecretAccessKey : secretKey , SessionToken : sessionToken }
92+ creds := aws.Credentials {AccessKeyID : accessKeyID , SecretAccessKey : secretKey , SessionToken : sessionToken , Expires : expires }
8293
8394 ckr := & vault.CredentialKeyring {Keyring : keyring }
8495 if err := ckr .Set (input .ProfileName , creds ); err != nil {
0 commit comments