Skip to content

Use of parameters with the Redshift Data API in aws-sdk-pandas #3024

Closed
@ArtOfStew

Description

@ArtOfStew

We are attempting to use a Lambda to read from a Redshift Serverless Workgroup.

We need to use parameters, but I can't figure out the syntax to make it work. This may be a bug, but we may simply be missing the correct way of doing it.

Here's a sample lambda:

import json
import awswrangler as wr

def lambda_handler(event, context):
    print(wr.__version__)
    rs_data_api = wr.data_api.redshift.RedshiftDataApi(
        workgroup_name="my-workgroup",
        database="dev",
        secret_arn="arn:aws:secretsmanager:REGION:ACCOUNT:secret:my/redshift/secret-5OCdpE"
    )

    parameters = [{
        "name": "ittype",
        "value": "E"
    }]


    df = rs_data_api.execute("SELECT itemcode FROM my_schema.itemtable where itemtype = :ittype LIMIT 5", parameters = parameters)
    # This fails with "Request 0c4f411e-9dbe-4e4f-bc03-0184fcf26e59 failed with status FAILED and error ERROR: syntax error at or near \":\" in context \"where ittype = :\", at line 1\n  Position: 60"


    df = rs_data_api.execute("SELECT itemcode FROM my_schema.itemtable where itemtype = ? LIMIT 5", parameters = parameters)
    # This fails with "Request 3f9dbece-3a2b-4a8d-a15f-909afae5ad6c failed with status FAILED and error No value specified for parameter 1."
    
    print(df)

We've also tried the %s format defined in PEP249, but it gets the same error as the colon; the error is a syntax error.

We have tried different combinations for the parameters according to various documentation we found on the web. For example this:

    parameters = [{
        "stringValue": "E"
    }]

... as well as many more. We've even tried string-ifying the parameters with json.dumps(parameters).

It seems like parameters either aren't being fed through, or there is a different way of submitting them.

Appreciate the help!

Lambda Python Runtime: 3.12 ARM64
Wrangler Layer: AWSSDKPandas-Python312-Arm64 version 14 (awswranger == 3.10.0)

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions