sql >> Database >  >> RDS >> PostgreSQL

Postgres-gegevens importeren in RDS met S3 en aws_s3

Het belangrijkste probleem hier is dat u 1) een IAM-rol moet toevoegen aan de RDS-instantie om toegang te krijgen tot de S3-bucket en 2) een S3-eindpunt moet toevoegen aan de VPC waar de RDS-instantie wordt uitgevoerd om communicatie mogelijk te maken.

Dit is de procedure die ik heb gevolgd om het te laten werken, met behulp van AWS cli-opdrachten in een shell (zorg voor de juiste waarde van de betrokken omgevingsvariabelen), ik hoop dat het kan helpen:

  1. Maak de IAM-rol:
$ 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. Maak het IAM-beleid dat aan de IAM-rol wordt gekoppeld:
$ 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. Voeg het beleid bij:
$ aws iam attach-role-policy \
    --policy-arn arn:aws:iam::$AWS_ACCOUNT_ID:policy/$POLICY_NAME \
    --role-name $ROLE_NAME
  1. Voeg de rol toe aan een specifieke instantie - deze stap moet voor elke nieuwe instantie worden herhaald:
$ 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. Maak het VPC-eindpunt voor de S3-service:
$ aws ec2 create-vpc-endpoint \
    --vpc-id $VPC_ID \
    --service-name com.amazonaws.$REGION.s3
    --route-table-ids $ROUTE_TABLE_ID

De routetabel-ID gerelateerd aan de VPC waar het eindpunt is gemaakt, kan worden opgehaald via het commando

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


  1. PHP-variabelen doorgeven aan MySQL

  2. Wanneer EXCEPT gebruiken in tegenstelling tot NOT EXISTS in Transact SQL?

  3. MySql - Hoofdlettergevoelig probleem van tabellen op verschillende servers

  4. Juiste invoeging van tabelnaam