PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Importuj dane Postgres do RDS za pomocą S3 i aws_s3

Głównym problemem jest to, że musisz 1) dodać rolę uprawnień do instancji RDS, aby uzyskać dostęp do zasobnika S3, oraz 2) dodać punkt końcowy S3 do VPC, na którym działa instancja RDS, aby umożliwić komunikację.

To jest procedura, którą zastosowałem, aby to zadziałało, używając poleceń AWS cli w powłoce (zadbaj o odpowiednią wartość zmiennych środowiskowych), mam nadzieję, że może to pomóc:

  1. Utwórz rolę uprawnień:
$ 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. Utwórz zasady uprawnień, które zostaną dołączone do roli uprawnień:
$ 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. Załącz zasady:
$ aws iam attach-role-policy \
    --policy-arn arn:aws:iam::$AWS_ACCOUNT_ID:policy/$POLICY_NAME \
    --role-name $ROLE_NAME
  1. Dodaj rolę do określonej instancji — ten krok należy powtórzyć dla każdej nowej instancji:
$ 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. Utwórz punkt końcowy VPC dla usługi S3:
$ aws ec2 create-vpc-endpoint \
    --vpc-id $VPC_ID \
    --service-name com.amazonaws.$REGION.s3
    --route-table-ids $ROUTE_TABLE_ID

Identyfikator tabeli tras powiązany z VPC, w którym tworzony jest punkt końcowy, można pobrać za pomocą polecenia

$ 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. INSERT IN TO ... FROM SELECT ... ZWRACANIE mapowań id

  2. Niestandardowe ZAMÓWIENIE WEDŁUG Wyjaśnienia

  3. Zwracany wiersz SQL, jeśli nie znaleziono wyniku

  4. SQLAlchemy:filtrowanie według wartości przechowywanych w zagnieżdżonej liście pola JSONB

  5. Optymalizacja zapytań Postgres (wymuszenie skanowania indeksu)