0
votes

I am using boto3 library with executeStatement to get data from an RDS cluster using DATA API. Query is working fine if i select 1 or 2 columns but as soon as I select another column to query, it returns an error with (BadRequestException) permission denied for relation table_name

I have checked using pgadmin the permissions are intact to query the whole db for the user I am using.

function included in call:

def execute_query(self, sql_query, sql_parameters=[]):
        """
        Aurora DataAPI execute query. Generally used for select statements.
        :param sql_query: Query
        :param sql_parameters: parameters in sql query
        :return: DataApi response
        """
        client = self.api_access()
        response = client.execute_statement(
            resourceArn=RESOURCE_ARN,
            secretArn=SECRET_ARN,
            database='db_name',
            sql=sql_query,
            includeResultMetadata=True,
            parameters=sql_parameters)
        return response

function call: No errors

    query = '''
        SELECT id
        FROM schema_name.table_name
        limit 1

    ''' 
    print(query)
    result = conn.execute_query(query)
    print(result)

function call: fails with above error

    query = '''
        SELECT id,name,event
        FROM schema_name.table_name
        limit 1

    ''' 
    print(query)
    result = conn.execute_query(query)
    print(result)

Is there a horizontal limit on what we can get from DATA API using Boto3? I know there is a limit for 1MB, but it should return something as per the documentation if it exceeds the limit.

Backend is Postgres RDS

UPDATE: I can select the same columns 10 times and its not a problem

    query = '''
        SELECT id,event,event,event,event,event
        FROM schema_name.table_name
        limit 1

    ''' 
    print(query)
    result = conn.execute_query(query)
    print(result)

So this means there are some columns that I cannot select.

1

1 Answers

0
votes

I didnt know there are column level security in some tables. If there are column level securities in postgres for the user you are using that's obvious I cannot select those columns.