🍎
CloudShellとS3を使ってEC2にSQLファイルを設置する
概要
- EC2をpostgresqlのDBサーバーとして使っています。
- githubで管理しているmigrationなどのsqlファイルをEC2に持ってきて、psqlコマンドで実行していきます。
接続イメージ
手順
- CloudShell内での操作
# 任意の場所で実行。CloudShell内での操作は一時的なものになります。 git clone <git repository url> # s3にアップロード aws s3 cp /path/to/user/directory/or/file/on/CloudShell s3://path/to/your/directory
- S3上にファイルがアップロードされたことを確認します。
- EC2にセッションマネージャーで接続し、S3からファイルをダウンロードします。
# s3からダウンロード aws s3 cp s3://path/to/your/directory /path/to/user/directory/on/EC2
- EC2にてpsqlコマンドでsqlファイルを実行します。
psql -U <your user name> -d <your database> -f /path/to/your/file/<hoge>.sql
- EC2にてpsqlコマンドでDB入り、sqlの実行結果を確認します。
補足
手順4でエラーになる場合があります。
# エラー内容
sql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: Peer authentication failed for user "postgres"
(以下、ChatGPTより)
ChatGPT
これは、PostgreSQLがpeer認証方式を使用しているために発生しています。この認証方式は、OSユーザーと同じ名前のPostgreSQLユーザーのみがアクセスできるようにするものです。
解消方法として、pg_hba.conf
と言うファイルを修正していきます。
詳細はこちらをご覧ください。https://qiita.com/Jackson123/items/266ca4a6165881f53ae7
参考
Discussion