PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Impor data Postgres ke RDS menggunakan S3 dan aws_s3

Masalah utama di sini adalah Anda perlu 1) menambahkan peran IAM ke instans RDS untuk mengakses bucket S3 dan 2) menambahkan titik akhir S3 ke VPC tempat instans RDS berjalan untuk memungkinkan komunikasi.

Ini adalah prosedur yang saya ikuti untuk membuatnya berfungsi, menggunakan perintah AWS cli di shell (jaga nilai dengan benar variabel lingkungan yang terlibat), semoga dapat membantu:

  1. Buat peran IAM:
$ aws iam create-role \
    --role-name $ROLE_NAME \
    --assume-role-policy-document '{"Version": "2012-10-17", "Statement": [{"Effect": "Allow", "Principal": {"Service": "rds.amazonaws.com"}, "Action": "sts:AssumeRole"}]}'
  1. Buat kebijakan IAM yang akan dilampirkan ke peran IAM:
$ aws iam create-policy \
    --policy-name $POLICY_NAME \
    --policy-document '{"Version": "2012-10-17", "Statement": [{"Sid": "s3import", "Action": ["s3:GetObject", "s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::${BUCKET_NAME}", "arn:aws:s3:::${BUCKET_NAME}/*"]}]}'
  1. Lampirkan kebijakan:
$ aws iam attach-role-policy \
    --policy-arn arn:aws:iam::$AWS_ACCOUNT_ID:policy/$POLICY_NAME \
    --role-name $ROLE_NAME
  1. Tambahkan peran ke instance tertentu - langkah ini perlu diulang untuk setiap instance baru:
$ aws rds add-role-to-db-instance \
    --db-instance-identifier $RDS_INSTANCE_NAME \
    --feature-name s3Import \
    --role-arn arn:aws:iam::$AWS_ACCOUNT_ID:role/$ROLE_NAME \
    --region $REGION
  1. Buat titik akhir VPC untuk layanan S3:
$ aws ec2 create-vpc-endpoint \
    --vpc-id $VPC_ID \
    --service-name com.amazonaws.$REGION.s3
    --route-table-ids $ROUTE_TABLE_ID

ID tabel rute yang terkait dengan VPC tempat endpoint dibuat dapat diambil melalui perintah

$ aws ec2 describe-route-tables | jq -r '.RouteTables[] | "\(.VpcId) \(.RouteTableId)"'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Psycopg2 copy_from melempar DataError:sintaks input tidak valid untuk integer

  2. Salin di Postgresql:Jalur Absolut Ditafsirkan sebagai Jalur Relatif

  3. Cara menemukan kemunculan pertama dan terakhir dari karakter tertentu di dalam string di PostgreSQL

  4. PostgreSQL - nilai kolom diubah - pilih pengoptimalan kueri

  5. LATERAL JOIN tidak menggunakan indeks trigram