環境
Mac OS Tahoe 26.6.2
AWS CLIツールインストール済み
brewインストール済み
jq(brew)
RDSには踏み台サーバーを使用
RDSはもちろんPostgreSQL
経緯
- Datagripが重くなってきて立ち上がるまで数分かかるようになった
- Posticoが買い切りで安くメンテがされているので試しに使ってみようとなった
- 個人的に使っている
価格帯
| クライアント | 値段 | 課金方式 |
|---|---|---|
| Datagrip | ¥3,626/月(法人) | サブスク |
| Postico | ¥11,000(個人/法人) | 買い切り(AppStore) |
Posticoでできない事
- IAM認証が対応していない
AppStore経由で買ってもらっちゃったので使えるようになる所までやってみる
PosticoはProxyCommandやProxyJumpなどの高度なSSH設定(~/.ssh/configの独自ディレクティブ)を直接サポートしておらず、これは内部で使用しているlibssh2ライブラリの制限によるものです。
AppStore経由でなく、公式Webサイトから購入したものはPre-Connect Shell Scriptの機能があり、案内にある通りすればできるはず?(未検証)
~/.aws/configを設定する
ご自身の環境に読み替えて下さい。
- sso_session
- sso_account_id
- sso_role_name
- sso_start_url
[profile koko]
sso_session = aws-dev-org-root-sso
sso_account_id = *************
sso_role_name = DevlopAccess
region = ap-northeast-1
output = json
[sso-session aws-dev-org-root-sso-sso]
sso_start_url = https://************.awsapps.com/start#/
sso_region = ap-northeast-1
sso_registration_scopes = sso:account:access
~/.ssh/configを設定する
適宜読み替えて下さい。
- 秘密鍵:develop-key.pem
- awsのプロファイル名:develop
- bastionサーバー:ecs-develop-bastion
Host test-bation
User ec2-user
ProxyCommand sh -c "aws --profile develop ssm start-session --target $(aws --profile develop ec2 describe-instances --filters 'Name=tag:Name,Values=ecs-develop-bastion' 'Name=instance-state-name,Values=running' --query 'Reservations [*].Instances[*].InstanceId' --output text) --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
IdentityFile ~/.ssh/develop-key.pem
SSOを通す
aws sso login --profile develop
IAMトークンの生成
IAMトークンの生成し、コピーまでコマンドで行う。
適宜読み替えて下さい。
- hostname:..ap-northeast-1.rds.amazonaws.com
- username:dev-user
aws rds generate-db-auth-token \
--hostname ***********.***********.ap-northeast-1.rds.amazonaws.com \
--port 5432 \
--username dev-user \
--region ap-northeast-1 \
--profile develop | pbcopy
Posticoの設定
PosticoのSSHタブは使わず、ターミナルでSSHトンネルを張ってから127.0.0.1に接続する。
適当に読み替えて下さい。
| 項目 | 設定値 |
|---|---|
| Nickname | dev-bastion |
| Host | 127.0.0.1 |
| Port | 54323(何でもいいがSSHトンネル掘る時に合わせないと駄目) |
| Database | postgres |
| User | dev_readonly_user |
| Password |
SSHトンネルを掘る
ターミナルを開き下記コマンドを実行。
このターミナルは開きっぱなしにする。
ここでPosticoで設定したポートと合わせる必要がある。
ssh -N -L 54323:***********.***********.ap-northeast-1.rds.amazonaws.com:5432 dev-user
Posticoで接続
Connectボタンをクリックすると繋がる。
DBはつながった後に接続したいDBを選択できます。
まとめ
- Posticoは公式Webサイトから購入すべし。
- 15分でSSOは切れるので後はAIにまかせてシェルスクリプトを組んでみてはいかがでしょうか。