🍎

CloudShellとS3を使ってEC2にSQLファイルを設置する

2024/07/20に公開

概要

  • EC2をpostgresqlのDBサーバーとして使っています。
  • githubで管理しているmigrationなどのsqlファイルをEC2に持ってきて、psqlコマンドで実行していきます。

接続イメージ

手順

  1. CloudShell内での操作
    # 任意の場所で実行。CloudShell内での操作は一時的なものになります。
    git clone <git repository url>
    
    # s3にアップロード
    aws s3 cp /path/to/user/directory/or/file/on/CloudShell s3://path/to/your/directory
    
  2. S3上にファイルがアップロードされたことを確認します。
  3. EC2にセッションマネージャーで接続し、S3からファイルをダウンロードします。
    # s3からダウンロード
    aws s3 cp s3://path/to/your/directory /path/to/user/directory/on/EC2
    
  4. EC2にてpsqlコマンドでsqlファイルを実行します。
    psql -U <your user name> -d <your database> -f /path/to/your/file/<hoge>.sql
    
  5. 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

参考

https://qiita.com/Jackson123/items/266ca4a6165881f53ae7
https://stackoverflow.com/questions/69676009/psql-error-connection-to-server-on-socket-var-run-postgresql-s-pgsql-5432

Discussion