aws-genai-llm-chatbot
53 строки · 1.6 Кб
1import json2import boto33import psycopg24import cfnresponse5from aws_lambda_powertools import Logger6from aws_lambda_powertools.utilities.typing import LambdaContext7from pgvector.psycopg2 import register_vector8
9logger = Logger()10secretsmanager_client = boto3.client("secretsmanager")11
12
13@logger.inject_lambda_context(log_event=True)14def lambda_handler(event, context: LambdaContext):15request_type = event["RequestType"]16resource_properties = event["ResourceProperties"]17AURORA_DB_SECRET_ID = resource_properties["AURORA_DB_SECRET_ID"]18
19secret_response = secretsmanager_client.get_secret_value(20SecretId=AURORA_DB_SECRET_ID21)22database_secrets = json.loads(secret_response["SecretString"])23dbhost = database_secrets["host"]24dbport = database_secrets["port"]25dbuser = database_secrets["username"]26dbpass = database_secrets["password"]27
28if request_type == "Create" or request_type == "Update":29dbconn = psycopg2.connect(30host=dbhost, user=dbuser, password=dbpass, port=dbport, connect_timeout=1031)32
33dbconn.set_session(autocommit=True)34
35cur = dbconn.cursor()36
37cur.execute("CREATE EXTENSION IF NOT EXISTS vector;")38register_vector(dbconn)39
40cur.execute("SELECT typname FROM pg_type WHERE typname = 'vector';")41rows = cur.fetchall()42
43for row in rows:44logger.info(f"pg_type.typname: {row}")45
46cur.close()47dbconn.close()48
49logger.info("Created vector extension")50
51cfnresponse.send(event, context, cfnresponse.SUCCESS, {"ok": True})52
53return {"ok": True}54