sql >> データベース >  >> RDS >> PostgreSQL

S3とaws_s3を使用してPostgresデータをRDSにインポートします

    ここでの主な問題は、1)S3バケットにアクセスするためにRDSインスタンスにIAMロールを追加し、2)通信を許可するためにRDSインスタンスが実行されるVPCにS3エンドポイントを追加する必要があることです。

    これは、シェルで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. S3サービスのVPCエンドポイントを作成します:
    $ aws ec2 create-vpc-endpoint \
        --vpc-id $VPC_ID \
        --service-name com.amazonaws.$REGION.s3
        --route-table-ids $ROUTE_TABLE_ID
    

    エンドポイントが作成されるVPCに関連するルートテーブルIDは、コマンドを使用して取得できます

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


    1. SQL Server(T-SQL)で米国の日付形式で日付を表示する方法

    2. SSMSのインストール方法

    3. DigitalOceanにPostgreSQLをデプロイする方法

    4. phpを使用してmp3オーディオ保存されたimmysqlblobを再生する方法