Skip to content

Commit 9346123

Browse files
Final updates
1 parent 85ac92a commit 9346123

2 files changed

Lines changed: 17 additions & 19 deletions

File tree

cmd/rds-iam-to-dsn/README.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# rds-iam-dsn
1+
# rds-iam-to-dsn
22

33
A CLI that resolves a `postgres+rds-iam://...` URL into a usable tokenized PostgreSQL DSN and prints it to stdout.
44

@@ -7,13 +7,13 @@ Use this when you want to script `psql`, `pg_dump`, or other Postgres tools with
77
## Installation
88

99
```bash
10-
go install github.com/corbaltcode/go-libraries/cmd/rds-iam-dsn@latest
10+
go install github.com/corbaltcode/go-libraries/cmd/rds-iam-to-dsn@latest
1111
```
1212

1313
Or build from source:
1414

1515
```bash
16-
cd ./cmd/rds-iam-dsn
16+
cd ./cmd/rds-iam-to-dsn
1717
go build
1818
```
1919

@@ -27,7 +27,7 @@ go build
2727
## Usage
2828

2929
```bash
30-
rds-iam-dsn '<postgres+rds-iam-url>'
30+
rds-iam-to-dsn '<postgres+rds-iam-url>'
3131
```
3232

3333
- Database path is optional. If omitted, `pgutils` defaults DB name to the username.
@@ -38,33 +38,33 @@ rds-iam-dsn '<postgres+rds-iam-url>'
3838
Resolve DSN only:
3939

4040
```bash
41-
rds-iam-dsn 'postgres+rds-iam://app_user@mydb.abc123.us-east-1.rds.amazonaws.com:5432/myapp'
41+
rds-iam-to-dsn 'postgres+rds-iam://app_user@mydb.abc123.us-east-1.rds.amazonaws.com:5432/myapp'
4242
```
4343

4444
Use with `psql` in a script:
4545

4646
```bash
47-
DSN="$(rds-iam-dsn 'postgres+rds-iam://app_user@mydb.abc123.us-east-1.rds.amazonaws.com:5432/myapp')"
47+
DSN="$(rds-iam-to-dsn 'postgres+rds-iam://app_user@mydb.abc123.us-east-1.rds.amazonaws.com:5432/myapp')"
4848
psql "$DSN"
4949
```
5050

5151
Or directly:
5252

5353
```bash
54-
psql "$(rds-iam-dsn 'postgres+rds-iam://app_user@mydb.abc123.us-east-1.rds.amazonaws.com:5432/myapp')"
54+
psql "$(rds-iam-to-dsn 'postgres+rds-iam://app_user@mydb.abc123.us-east-1.rds.amazonaws.com:5432/myapp')"
5555
```
5656

5757
Use with `pg_dump`:
5858

5959
```bash
60-
DSN="$(rds-iam-dsn 'postgres+rds-iam://app_user@mydb.abc123.us-east-1.rds.amazonaws.com:5432/myapp')"
60+
DSN="$(rds-iam-to-dsn 'postgres+rds-iam://app_user@mydb.abc123.us-east-1.rds.amazonaws.com:5432/myapp')"
6161
pg_dump "$DSN" > myapp.sql
6262
```
6363

6464
Cross-account role assumption:
6565

6666
```bash
67-
rds-iam-dsn 'postgres+rds-iam://app_user@mydb.abc123.us-east-1.rds.amazonaws.com:5432/myapp?assume_role_arn=arn:aws:iam::123456789012:role/db-connect&assume_role_session_name=rds-iam-dsn'
67+
rds-iam-to-dsn 'postgres+rds-iam://app_user@mydb.abc123.us-east-1.rds.amazonaws.com:5432/myapp?assume_role_arn=arn:aws:iam::123456789012:role/db-connect&assume_role_session_name=foo'
6868
```
6969

7070
## Troubleshooting

cmd/rds-iam-to-dsn/main.go

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,37 +3,35 @@ package main
33
import (
44
"context"
55
"fmt"
6+
"log"
67
"os"
78

89
"github.com/corbaltcode/go-libraries/pgutils"
910
)
1011

1112
func main() {
13+
log.SetFlags(0) // no timestamps — keep output clean for CLI use
14+
1215
if len(os.Args) != 2 {
13-
fmt.Fprintf(
14-
os.Stderr,
15-
"expected exactly one positional RDS IAM connection URL argument, got %d\nUsage:\n %s 'postgres+rds-iam://user@host:5432/db'\n",
16-
len(os.Args)-1,
16+
fmt.Fprintf(os.Stderr,
17+
"Usage: %s 'postgres+rds-iam://user@host:5432/db'\n",
1718
os.Args[0],
1819
)
1920
os.Exit(2)
2021
}
21-
rawURL := os.Args[1]
2222

23+
rawURL := os.Args[1]
2324
ctx := context.Background()
2425

2526
connectionStringProvider, err := pgutils.NewConnectionStringProviderFromURLString(ctx, rawURL)
2627
if err != nil {
27-
fmt.Fprintf(os.Stderr, "failed to create connection string provider: %v\n", err)
28-
os.Exit(1)
28+
log.Fatalf("failed to create connection string provider: %v", err)
2929
}
3030

3131
dsnWithToken, err := connectionStringProvider.ConnectionString(ctx)
3232
if err != nil {
33-
fmt.Fprintf(os.Stderr, "failed to get connection string from provider: %v\n", err)
34-
os.Exit(1)
33+
log.Fatalf("failed to get connection string from provider: %v", err)
3534
}
3635

37-
// Print only the final DSN to stdout for command-substitution in scripts.
3836
fmt.Println(dsnWithToken)
3937
}

0 commit comments

Comments
 (0)