in repos/serving/lambdas/functions/read-sm/lambda_function.py [0:0]
def lambda_handler(event, context):
logger.info('Lambda event is [{}]'.format(event))
# Retrieve AWS request identifier for this execution
request_id = str(context.aws_request_id)
# Retrieve target DynamoDB table name from environment variables
val_table_name = os.environ['target_ddb_table'] # mlops-table
val_policy_id = str(event['queryStringParameters']['policy_id'])
logger.info('Input parameters are [{}] [{}]'.format(val_table_name, val_policy_id))
request_data = event.get("requestContext")
logger.info('Request data is is [{}]'.format(request_data))
# Create a paginator
paginator = dynamodb.meta.client.get_paginator('query')
logger.info('Retrieving data ...')
try:
# Scenario : retrieve all columns from the source table
response_iterator = paginator.paginate(
TableName=val_table_name,
KeyConditionExpression=Key('policy_id').eq(val_policy_id),
#FilterExpression=Attr('cnt_records').gte(val_record_cnt),
Select='ALL_ATTRIBUTES',
PaginationConfig={'MaxItems':10, 'PageSize': 10}
)
for page in response_iterator:
#logger.info('count->[{}]'.format(page['Count']))
if page['Count'] > 0:
converted_items = json.dumps(page['Items'], cls=DecimalEncoder, indent = 2)
logger.info('no. of items ->[{}]'.format(len(converted_items)))
# Dummy response
responsebody = converted_items
# Generate response
responseObject = {}
responseObject['statusCode'] = 200
responseObject['headers'] = {}
responseObject['headers']['Content-Type'] = 'application/json'
responseObject['body'] = responsebody
return(responseObject)
except ClientError as e:
if e.response['Error']['Code'] == "AccessDeniedException":
logger.error('Error - AccessDeniedException', exc_info=True)
return {
'statusCode': 401,
'body': json.dumps('Insufficient rights to perform this operation')
}
else:
raise