8
8
"log"
9
9
"net/http"
10
10
"net/url"
11
+ "strconv"
11
12
12
13
"github.com/aws/aws-sdk-go-v2/aws"
13
14
"github.com/aws/aws-sdk-go-v2/aws/external"
@@ -21,7 +22,7 @@ func main() {
21
22
usage := `aws-sign-in.
22
23
23
24
Usage:
24
- aws-sign-in
25
+ aws-sign-in [<duration>]
25
26
aws-sign-in -h | --help
26
27
27
28
Options:
@@ -33,6 +34,7 @@ Options:
33
34
}
34
35
35
36
var conf struct {
37
+ Duration int `docopt:"<duration>"`
36
38
}
37
39
if err := arguments .Bind (& conf ); err != nil {
38
40
log .Fatalf ("%v\n " , err )
@@ -49,7 +51,7 @@ Options:
49
51
log .Fatalf ("Error retrieving credentials: %v\n " , err )
50
52
}
51
53
52
- signinToken , err := getSignInToken (creds )
54
+ signinToken , err := getSignInToken (creds , conf . Duration )
53
55
if err != nil {
54
56
log .Fatalf ("Couldn't obtain sign-in token: %v\n " , err )
55
57
}
@@ -62,7 +64,7 @@ Options:
62
64
fmt .Printf ("If the browser didn't open, please visit the following url to sign in to the AWS console: %v\n " , loginURL )
63
65
}
64
66
65
- func getSignInToken (creds aws.Credentials ) (string , error ) {
67
+ func getSignInToken (creds aws.Credentials , duration int ) (string , error ) {
66
68
reqJSON := fmt .Sprintf (`{"sessionId":"%s","sessionKey":"%s","sessionToken":"%s"}` ,
67
69
creds .AccessKeyID ,
68
70
creds .SecretAccessKey ,
@@ -73,6 +75,9 @@ func getSignInToken(creds aws.Credentials) (string, error) {
73
75
74
76
values := url.Values {}
75
77
values .Add ("Action" , "getSigninToken" )
78
+ if duration != 0 {
79
+ values .Add ("DurationSeconds" , strconv .Itoa (duration ))
80
+ }
76
81
values .Add ("Session" , reqJSON )
77
82
78
83
endpoint .RawQuery = values .Encode ()
0 commit comments