PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Nhập dữ liệu Postgres vào RDS bằng S3 và aws_s3

Vấn đề chính ở đây là bạn cần 1) thêm vai trò IAM vào cá thể RDS để truy cập nhóm S3 và 2) thêm điểm cuối S3 vào VPC nơi cá thể RDS chạy để cho phép truyền thông.

Đây là quy trình tôi đã làm theo để làm cho nó hoạt động, bằng cách sử dụng các lệnh AWS cli trong một trình bao (quan tâm đến giá trị phù hợp với các biến môi trường liên quan), hy vọng nó có thể giúp:

  1. Tạo vai trò 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. Tạo chính sách IAM sẽ được gắn với vai trò 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. Đính kèm chính sách:
$ aws iam attach-role-policy \
    --policy-arn arn:aws:iam::$AWS_ACCOUNT_ID:policy/$POLICY_NAME \
    --role-name $ROLE_NAME
  1. Thêm vai trò vào một phiên bản cụ thể - bước này cần được lặp lại cho mọi phiên bản mới:
$ 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. Tạo điểm cuối VPC cho dịch vụ S3:
$ aws ec2 create-vpc-endpoint \
    --vpc-id $VPC_ID \
    --service-name com.amazonaws.$REGION.s3
    --route-table-ids $ROUTE_TABLE_ID

Id bảng tuyến đường liên quan đến VPC nơi điểm cuối được tạo có thể được truy xuất thông qua lệnh

$ 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. Truy vấn kết hợp JSON trả về kết quả kỳ lạ

  2. PostgreSQL:có thể cung cấp tên tùy chỉnh cho CHÍNH hoặc DUY NHẤT không?

  3. Sqlalchemy đã sao chép mệnh đề WHERE thành FROM

  4. Tên phần tử XML từ dữ liệu trong Postgres

  5. truy vấn chậm hơn nhiều với readyStatement so với câu lệnh