Connecting to an RDS in a Private VPC
    • Dark
      Light

    Connecting to an RDS in a Private VPC

    • Dark
      Light

    Article Summary

    Overview

    There are following scenarios for accessing an RDS DB instance by the Matillion Instance.

    • A DB Instance in a VPC Accessed by Matillion Instance in the Same VPC.
    • Same VPC

      Same VPC

      Important Information

      The simplest way to manage access between Matillion instances and RDS DB instances in the same VPC is to do the following:

      • Create a VPC security group for RDS DB instances to be in. This security group can be used to restrict access to the RDS DB instances.
      • Create a VPC security group for Matillion instances to be in. This security group can, if needed, allow access to the Matillion instance from the internet by using the VPC's routing table.
      • Create custom rules in the security group for RDS DB instances that allow connections from the security group you created for the Matillion instances. This would allow any member of the security group to access the DB instances.
    • A DB Instance in a VPC Accessed by Matillion Instance in a Different VPC
    Different VPC

    Different VPC

    When your DB instance is in a different VPC from the Matillion instance , you can use VPC peering to access the DB instance.

    A VPC peering connection is a networking connection between two VPCs that enables you to route traffic between them using private IP addresses. Instances in either VPC can communicate with each other as if they are within the same network. You can create a VPC peering connection between your own VPCs, with a VPC in another AWS account, or with a VPC in a different AWS Region.

    This guide looks at how to set up VPC Peering to allow Matillion instance available in one VPC to use VPC Peer connection to access the data from the another VPC (Amazon RDS Databse). The concept is the same for any data held within the VPC.

    For security reasons, RDS database might be held in a Private Subnet of the VPC that doesn't allow public access. Whereas, Matillion instance, which might be in a Public Subnet of the another VPC, can still connect to this RDS database using VPC Peering.

    The following diagram depicts what final architecture will look like if Matillion Instance and RDS Database placed in different VPC.

    VPC Peering Architecture

    VPC Peering Architecture



    Create a VPC


    Navigate to the Amazon VPC Dashboard in the AWS Management Console. Click Create VPC and fill in all the details required to create a VPC.


    Create VPC

    Create VPC

    Please Note

    A VPC in AWS is private if it doesn't have an Internet Gateway or an NAT Gateway that can be used to connect into it. This can be set up from the AWS Console.

    Create and Attach Internet Gateway


    On the Internet Gateways tab of the VPC Dashboard, create a new Internet gateway. Attach the gateway to the newly created VPC.

    Internet Gateway

    Internet Gateway

    Create a Custom Route Tables


    On the Route Tables tab of the VPC Dashboard, click Create route table.

    Create Route Tables

    Create Route Tables

    Add a route to the route table for the Internet gateway by clicking Edit routes tab.

    Add Route Tables

    Add Route Tables

    Please Note

    The route table for the VPC will only have an entry for local routes.

    Create Public and Private Subnet

    Create a subnet in the required availability zone by clicking Create subnet

    Create Subnet

    Create subnet

    Change the route table for the previously created subnet from the main route table to the custom route table, if needed. And , click Edit route table association

    Add Subnet

    Add Subnet

    Create Security Group

    Create a Security Group for the Matillion instance to be provisioned in the public subnet.

    Create Security Group

    Create Security Group

    Authorize inbound traffic from your local IP address. The default outbound rules should be fine.

    Add Inbound Rules

    Add Inbound Rules

    Similary, create a security group for the RDS instance to be provisioned in the private subnet.

    Peering Connection

    A Peering Connection is required to route traffic between two VPCs. These VPCs can be in the same AWS account, or in different accounts if required.

    Create VPC Peering Connection

    To create Peering connection, navigate to Peering Connection to the left of the menu and click Create peering connection.

    Create Peering Connection

    Create Peering Connection

    Accept VPC Peering Connection

    This peering request will appear in Peering Connections and now needs to be accepted by the account the VPC to peer with is in:

    Peering Connection Created

    Peering Connection Created

    VPC Peering Connection Status

    Check that the status is now active on both VPCs.

    Peering Connection Staus

    Peering Connection Status

    Some additional steps to complete the connection

    Once the Peering Connection completed but still we need to follow some additional steps to complete the connectivity between two VPCs.

    Create Routes on both the ends.

    On VPC 1 where Matillion resides, we need to provide CIDR for destination VPC (VPC 2) - where RDS resides, and target should be "Peering Connection". Click on Save routes.

    Edit Routes

    Edit Routes

    For the VPC that Matillion is in, all traffic to the IP associated with the Private VPC needs to be directed to the Peering Connection:

    Set Route Table for Matillion

    Set Route Table for Matillion

    For the RDS VPC, all traffic to the Matillion instance needs to be directed to use the Peering Connection. This was done by directing all other traffic to the Peering Connection but this IP range could be limited:

    Set route Table for RDS

    Set route Table for RDS

    Matillion now has a private route to the RDS instance without having to use the internet. The RDS Query and RDS Bulk Load components will now work as expected from the Matillion instance.

    Please Note

    Allow respective CIDR on the "Security Group" of particular service so that they can establish the connection to that service.