カピバラ好きなエンジニアブログ

興味ある技術とか検証した内容を赴くままに書いていきます。カピバラの可愛さこそ至高。

RDSにCloudShellからアクセスしてみる

タイトル通りです。
ローカルのPCから接続するときはpsqlコマンドをインストールしてアクセスできますが、自分のPCにインストールしたくない人はEC2を立てたりする必要があります。
今回はEC2ではなく、AWS CloudShellで接続できるか確認してみます。

実施作業

CloudShell起動

CloudShellにはコンソール上部にあるPowserShellのようなアイコンからすぐに接続することができます。
初回は初期設定に少し時間がかかります。


接続してすぐにpsqlコマンドを実行してみましたがそんなコマンドはないと怒られたので、デフォルトではpsqlコマンドはインストールされていないようです。
f:id:live-your-life-dd18:20220121144936p:plain

psqlコマンドインストール

まずはpsqlのコマンドがインストールできるか確認してみます。

$ sudo yum search postgresql



表示された一覧に「postgresql.x86_64 : PostgreSQL client programs」があったので、これをインストールします。
f:id:live-your-life-dd18:20220121145011p:plain


以下のコマンドを実行します。

$ sudo yum install -y postgresql.x86_64



Complete!と表示されたので正常にインストールできてそうです。
f:id:live-your-life-dd18:20220121145037p:plain


バージョンが古いようですが、インストールはできているようです。
f:id:live-your-life-dd18:20220121145059p:plain

RDSのSG修正

過去の記事でRDSと専用のSGを作成しているので、そのSGにCloudShellのIPからの接続を許可する設定を追加しておきます。
f:id:live-your-life-dd18:20220121145300p:plain

RDS接続

以下のコマンドをCloudShellで実行して接続できるか試してみます。

$ psql -h database-1.[ランダム文字列].ap-northeast-1.rds.amazonaws.com -U postgres -d sample_db



接続に失敗しました。
f:id:live-your-life-dd18:20220121150925p:plain


先に調べてやればよかったですが、CloudShellのFAQを見るとプライベートVPCにあるリソースにアクセスすることはできないみたいです。
f:id:live-your-life-dd18:20220121151347p:plain
AWS CloudShell FAQs | Browser-Based Shell | Amazon Web Services


以下の記事に自己責任と前置きされた上で接続方法が記載されていたので、こちらのやり方で接続できるか試してみます。
AWS CloudShell を早速使ってみました - Qiita

RDS接続(2回目)

参考記事を見る限り、

  • 接続したいリソースがパブリックサブネットに構築されている
  • CloudShellのグローバルIPが接続先リソースで許可されている

という条件がクリアできれば接続できるようです。


今回RDSはたまたまパブリックサブネットで構築していたので、以下のコマンドでCloudShellのグローバルIPを確認します。

$ curl http://checkip.amazonaws.com/

f:id:live-your-life-dd18:20220121151831p:plain


確認したグローバルIPをRDSのSGに追加します。
f:id:live-your-life-dd18:20220121152001p:plain


今度は接続に成功しました。
f:id:live-your-life-dd18:20220121152126p:plain


重ねて言いますが、このやり方はRDSをパブリックサブネットに配置したり、CloudShellのグローバルIPをRDSのSGで許可したりあまり推奨されない方法ですので、使用される際は検証の範囲に留めておくようご注意ください。

サンプルデータ確認

最後にRDS内にサンプルデータをインポートしてCloudShellから確認してみます。
[PostgreSQL] サンプルのデータベースを用意する | DevelopersIO


以下の記事に記載の手順でインポートを行います。
尚、pg_restoreコマンドはpsqlコマンドのバージョンが古くて使えなかったので、以下の記事を参考に新しいバージョンをインストールしました。
【超速】AWS EC2インスタンスにpostgresql client 12をインストールする - Qiita

で、実際にインポートして確認した結果がこちらです。
f:id:live-your-life-dd18:20220121154353p:plain


psql -cコマンドでSQL実行してみるとちゃんとデータが入っていることが確認できます。
f:id:live-your-life-dd18:20220121155013p:plain

感想及び所感

RDSに対してCloudShellから接続とデータへのクエリを試してみました。
検証として手軽に確認したいときは良いですが、通常はEC2を別途準備してそちらからアクセスするようにした方が良いと思います。