Лямбда - сохранить / передать соединение Redshift

Я буду развертывать около 300-400 Lambda параллельно, чтобы достичь одного из моих желаемых ожиданий. Это очень небольшие вычисления, которые необходимо выполнить, для которых необходимо, чтобы данные вычислений считывались из Redshift. Единственная проблема, которую я не могу решить, - это то, как я передам соединение Redshift каждой из лямбда-выражений, потому что я не буду создавать отдельное соединение для каждой лямбды через Redshift, поскольку это приведет к отключению моего кластера с точки зрения подключения. Я буду использовать библиотеку pycopg2 для подключения к моему кластеру Redshift.

Вопрос в том :

  • Можно ли передать соединение Redshift через все лямбда-функции?
  • Можно ли хранить детали подключения в центральном месте, откуда моя лямбда-функция может их прочитать, а затем сделать запрос в Redshift?

person Shivkumar Mallesappa    schedule 10.07.2020    source источник


Ответы (2)


Подключение - это сеанс от определенного клиента, и каждая из ваших функций Lambda является отдельным клиентом, поэтому вы не можете использовать одно и то же соединение. Если вы запускаете параллельно 300-400 лямбда-выражений, возможно, вам стоит пересмотреть это решение.

Что касается хранения сведений о подключении, у вас есть хранилище параметров SSM, где вы можете хранить либо всю строку подключения, либо отдельные части.

person AlexYes    schedule 11.07.2020

Мы используем secretsmanager для хранения информации о нашем подключении.

Вот пример кода Python, который мы используем, просто замените ‹secret_name› своим секретом.

        # Get connection info
        scm = boto3.client("secretsmanager")
        r = scm.get_secret_value(
            SecretId=<secret_name>,
        )

        cred = r['SecretString']
        cred = json.loads(cred)

        # Connecting to DB
        conn = psycopg2.connect(
            host=cred['host'],
            port=cred['port'],
            dbname=cred['dbname'],
            user=cred['username'],
            password=cred['password'],
        )
person itsmevinod    schedule 16.07.2020
comment
Я хочу сохранить весь объект подключения, детали подключения не являются проблемой. - person Shivkumar Mallesappa; 20.07.2020