Is it possible to query an Amazon RDS instance directly from API Gateway?

10,161

No this isn't possible. The API Gateway service proxy will only proxy calls to the AWS API. The RDS API only allows you to do things like create a database, delete a database, take snapshots, etc. It doesn't allow you to connect and run queries against the database.

You should look into pointing API Gateway at a Lambda function that has the ability to connect to your RDS database and run queries.

Share:
10,161
Camilo Ortegón
Author by

Camilo Ortegón

Mobile app entrepreneur, passioned about the new tech trends, hungry to discover new places and different ways to understand the life. Convinced that nothing can go wrong when you do what you like. Coding is magical, indeed it should be considered as an art, just like musicians or painters, developers can decide either to produce master pieces or just junk lines of code.

Updated on June 06, 2022

Comments

  • Camilo Ortegón
    Camilo Ortegón almost 2 years

    I'm new to API Gateway, and as far I have tried is a really powerful tool. For the project I'm working right now we are using a PostgreSQL instance in RDS. I've seen that is possible to access directly to DynamoDB tables from API Gateway, so I was wondering if is there a way to do so for relational databases. So I created a resource with a GET method and configure it to connect to my database, but I wasn't sure if I used the right parameters:

    Provided information about the target backend

    So I wasn't sure about the arguments in each setting's field. In AWS Subdomain I wrote the public URL as if I was connecting me from my pgAdmin client (no port cause the full structure was not accepted, so I know I'm doing something bad). Before that I tried using the ARN of my RDS resource, but an this error appeared:

    AWS ARN for integration must contains path or action
    

    For execution role I created one with the policies to access my Postgres resource.

    Reading RDS documentation I found out that is possible to use the Query API from RDS using the HTTP verb GET or POST and a Query parameter named Action, so I tried to figure out how to place my query statement in this way:

    HTTP Query-based requests

    But when I test the method, this is the Response Body:

    {
      "message": "AWS ARN for integration contains invalid action"
    }
    

    And this is these are the Logs:

    Execution log for request test-request
    Sat Mar 19 15:27:17 UTC 2016 : Execution failed: AWS ARN for integration contains invalid action
    Sat Mar 19 15:27:17 UTC 2016 : Method completed with status: 400
    

    I know I'm doing a lot of things wrong, so does anybody knows if this is actually possible and how to do it, cause I haven't found any detailed tutorial yet.