Skip to content

Commit bdc8668

Browse files
committed
[idp aws login] Make AWS profile configurable
1 parent 7cde715 commit bdc8668

File tree

1 file changed

+15
-19
lines changed

1 file changed

+15
-19
lines changed

components/gitpod-cli/cmd/idp-login-aws.go

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
"fmt"
1111
"os"
1212
"os/exec"
13-
"path/filepath"
1413
"time"
1514

1615
"github.com/spf13/cobra"
@@ -21,8 +20,8 @@ const (
2120
)
2221

2322
var idpLoginAwsOpts struct {
24-
RoleARN string
25-
CredentialsFile string
23+
RoleARN string
24+
Profile string
2625
}
2726

2827
var idpLoginAwsCmd = &cobra.Command{
@@ -60,15 +59,17 @@ var idpLoginAwsCmd = &cobra.Command{
6059
return err
6160
}
6261

63-
credentials := "[default]\n"
64-
credentials += fmt.Sprintf("aws_access_key_id=%s\n", result.Credentials.AccessKeyId)
65-
credentials += fmt.Sprintf("aws_secret_access_key=%s\n", result.Credentials.SecretAccessKey)
66-
credentials += fmt.Sprintf("aws_session_token=%s\n", result.Credentials.SessionToken)
67-
68-
_ = os.MkdirAll(filepath.Dir(idpLoginAwsOpts.CredentialsFile), 0755)
69-
err = os.WriteFile(idpLoginAwsOpts.CredentialsFile, []byte(credentials), 0600)
70-
if err != nil {
71-
return err
62+
vars := map[string]string{
63+
"aws_access_key_id": result.Credentials.AccessKeyId,
64+
"aws_secret_access_key": result.Credentials.SecretAccessKey,
65+
"aws_session_token": result.Credentials.SessionToken,
66+
}
67+
for k, v := range vars {
68+
awsCmd := exec.Command("aws", "configure", "set", "--profile", idpLoginAwsOpts.Profile, k, v)
69+
out, err := awsCmd.CombinedOutput()
70+
if err != nil {
71+
return fmt.Errorf("%w: %s", err, string(out))
72+
}
7273
}
7374

7475
return nil
@@ -79,11 +80,6 @@ func init() {
7980
idpLoginCmd.AddCommand(idpLoginAwsCmd)
8081

8182
idpLoginAwsCmd.Flags().StringVar(&idpLoginAwsOpts.RoleARN, "role-arn", os.Getenv("IDP_AWS_ROLE_ARN"), "AWS role to assume (defaults to IDP_AWS_ROLE_ARN env var)")
82-
83-
home, err := os.UserHomeDir()
84-
if err != nil {
85-
panic(err)
86-
}
87-
idpLoginAwsCmd.Flags().StringVar(&idpLoginAwsOpts.CredentialsFile, "credentials-file", filepath.Join(home, ".aws", "credentials"), "path to the AWS credentials file")
88-
_ = idpLoginAwsCmd.MarkFlagFilename("credentials-file")
83+
idpLoginAwsCmd.Flags().StringVarP(&idpLoginAwsOpts.Profile, "profile", "p", "default", "AWS profile to configure")
84+
_ = idpLoginAwsCmd.MarkFlagFilename("profile")
8985
}

0 commit comments

Comments
 (0)