Spaces:
Configuration error

chat / app2.py
yonkasoft's picture
Upload 15 files
681c53e verified
raw
history blame
3.09 kB
import os
import json
import boto3
from botocore.exceptions import ClientError
from pydantic import BaseModel, ValidationError
class InputData(BaseModel):
title: str
text: str
keywords: list
def get_secret():
secret_name = "secret-manager"
region_name = "us-east-1"
# Create a Secrets Manager client
session = boto3.session.Session()
client = session.client(
service_name='secretsmanager',
region_name=region_name
)
try:
get_secret_value_response = client.get_secret_value(
SecretId=secret_name
)
except ClientError as e:
# Handle the exception
raise e
secret = get_secret_value_response['SecretString']
return json.loads(secret) # Return the secret as a dictionary
def lambda_handler(event, context):
# Retrieve secrets
secrets = get_secret()
aws_access_key = secrets['AWS_ACCESS_KEY_ID']
aws_secret_access_key = secrets['AWS_SECRET_ACCESS_KEY']
# DynamoDB tablosunun adını çevresel değişkenden al
table_name = os.environ['DYNAMODB_TABLE_NAME']
# Initialize DynamoDB resource
dynamodb = boto3.resource(
'dynamodb',
aws_access_key_id=aws_access_key,
aws_secret_access_key=aws_secret_access_key,
region_name='us-east-1'
)
# DynamoDB tablosuna erişim
table = dynamodb.Table(table_name)
lambda_name = 'LAMBDA_FUNCTION_NAME'
lambda_client = boto3.client('lambda')
try:
# Body'den JSON verilerini al.
body = json.loads(event.get('body', '{}'))
# Verileri Pydantic ile doğrula.
data = InputData(**body)
# DynamoDB'ye kaydetme işlemi.
table.put_item(
Item={
'title': data.title,
'text': data.text,
'keywords': ','.join(data.keywords) # Listeyi string olarak kaydet.
}
)
# Lambda fonksiyonunu çağırma işlemi.
lambda_payload = {
'text': data.text,
'title': data.title,
'keywords': data.keywords
}
response_invoke = lambda_client.invoke(
FunctionName=lambda_name,
InvocationType='RequestResponse',
Payload=json.dumps(lambda_payload)
)
return {
'statusCode': 200,
'body': json.dumps({
'message': 'Data successfully saved!',
'data': data.dict() # Doğrulanmış verileri döndür.
})
}
except ValidationError as e:
return {
'statusCode': 400,
'body': json.dumps({
'message': 'Invalid input data',
'errors': e.errors()
})
}
except Exception as e:
return {
'statusCode': 500,
'body': json.dumps({
'message': 'Internal server error',
'error': str(e)
})
}