#python #ssl #aws-lambda #amazon-redshift #psycopg2
#python #ssl #aws-lambda #amazon-redshift #psycopg2
Вопрос:
Я понимаю, что есть несколько вопросов, связанных с этими проблемами. Я видел их, но не смог найти правильное решение.
Я использую AWS Secret Manager для хранения учетных данных и прямо сейчас пытаюсь подключиться к AWS Redshift с помощью AWS Lambda-функции.
Вот мой lambda.py
import json
import boto3
import base64
import psycopg2
from botocore.exceptions import ClientError
def get_secret(secret_name):
try:
session = boto3.session.Session()
client = session.client(service_name='secretsmanager', region_name='xx')
get_secret_value_response = client.get_secret_value( SecretId=secret_name )
secret = get_secret_value_response['SecretString']
secret = json.loads(secret)
return secret
def lambda_handler(event, context):
s = get_secret('secretname')
conn = psycopg2.connect(database = s['xx'],
user = s['username'],
password = secret['password'],
host = secret['host'],
port = secret['port']
)
print('connected')
cur = conn.cursor()
cur.execute("""Select * from table1;""")
rows = cur.fetchall()
for row in rows:
print(row[0])
ОШИБКА: ФАТАЛЬНО: нет записи pg_hba.conf для хоста «:: ffff: xx.xxx.xxx.xxx», пользователя «xxxx», базы данных «xxx», SSL отключен
Я использую psycopg2.
Я попытался вставить «sslmode = ‘require'», не работает.
Любая помощь будет оценена
Комментарии:
1. брандмауэр базы данных блокирует, но не уверен, почему
2. Можете ли вы проверить, находится ли ваш lambda в VPC, и sg имеет надлежащий доступ к маршруту
3. связано ли это с моим psycopg2?
4. порт должен быть 5439, принимает ли он этот порт?
5. Дважды проверьте имя пользователя и пароль, могут быть неправильные учетные данные, попробуйте распечатать в консоли в качестве теста. Как упоминал @Prashanna, проверьте, разрешает ли правила безопасности (входящие и исходящие) порт 5439 для протокола TCP.