PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Импортирайте данни от Postgres в RDS с помощта на S3 и aws_s3

Основният проблем тук е, че трябва 1) да добавите IAM роля към екземпляра на RDS за достъп до кофата S3 и 2) да добавите крайна точка S3 към VPC, където се изпълнява екземплярът на RDS, за да позволи комуникации.

Това е процедурата, която следвах, за да работи, като използвах AWS cli команди в обвивка (погрижете се за стойността правилно на включените променливи на околната среда), надявам се, че може да помогне:

  1. Създайте 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. Създайте IAM политика, която ще бъде прикачена към 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. Прикачете правилата:
$ aws iam attach-role-policy \
    --policy-arn arn:aws:iam::$AWS_ACCOUNT_ID:policy/$POLICY_NAME \
    --role-name $ROLE_NAME
  1. Добавете ролята към конкретен екземпляр - тази стъпка трябва да се повтаря за всеки нов екземпляр:
$ 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. Създайте VPC крайна точка за услугата S3:
$ aws ec2 create-vpc-endpoint \
    --vpc-id $VPC_ID \
    --service-name com.amazonaws.$REGION.s3
    --route-table-ids $ROUTE_TABLE_ID

Идентификационният номер на таблицата с маршрути, свързан с VPC, където е създадена крайната точка, може да бъде извлечен чрез командата

$ 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. Използвайте множество конфликт_цели в клауза ON CONFLICT

  2. клониране на йерархични данни

  3. Сумирайте до достигане на праговата стойност и след това нулирайте брояча

  4. Намерете източник на заявка чрез pgbouncer

  5. Вмъкване в таблица след получаване на идентификатор от друга таблица