【以下的问题经过翻译处理】 我在私有子网中有一个 Redshift 集群,并且在Lambda中使用 Pyscopg2 库连接该集群。
我已经在 VPC部署了 Lambda,并且配置了正确的子网和安全组。
当我使用以下代码进行连接时,
try:
client = boto3.client('redshift')
creds = client.get_cluster_credentials(
DbUser=REDSHIFT_USER,
DbName=REDSHIFT_DATABASE,
ClusterIdentifier=REDSHIFT_CLUSTER,
DurationSeconds=3600)
except Exception as ERROR:
print("Credentials Issue: " + ERROR)
try:
conn = psycopg2.connect(
dbname=REDSHIFT_DATABASE,
user=creds['DbUser'],
password=creds['DbPassword'],
port=REDSHIFT_PORT,
host=REDSHIFT_ENDPOINT)
except Exception as ERROR:
print("Connection Issue: ")
raise
我收到以下错误
{
"errorMessage": "FATAL: no pg_hba.conf entry for host \"::ffff:10.209.4.117\", user \"IAM:awsuser\", database \"dev\", SSL off\n",
"errorType": "OperationalError",
我在SQL客户端中添加以下配置解决了这个错误
AuthMech=REQUIRE&ssl=TRUE
但是,我还是不确定如何让 Lambda 里的代码连接到 Redshift。