| 82 | } |
| 83 | |
| 84 | func getAuthenticatedURL(cfg aws.Config, dbURL string) (string, error) { |
| 85 | nURL, err := url.Parse(dbURL) |
| 86 | if err != nil { |
| 87 | return "", xerrors.Errorf("parsing dbURL: %w", err) |
| 88 | } |
| 89 | |
| 90 | // generate a new rds session auth tokenized URL |
| 91 | rdsEndpoint := fmt.Sprintf("%s:%s", nURL.Hostname(), nURL.Port()) |
| 92 | token, err := auth.BuildAuthToken(context.Background(), rdsEndpoint, cfg.Region, nURL.User.Username(), cfg.Credentials) |
| 93 | if err != nil { |
| 94 | return "", xerrors.Errorf("building rds auth token: %w", err) |
| 95 | } |
| 96 | // set token as user password |
| 97 | nURL.User = url.UserPassword(nURL.User.Username(), token) |
| 98 | |
| 99 | return nURL.String(), nil |
| 100 | } |
| 101 | |
| 102 | type connector struct { |
| 103 | url string |