{"id":486,"date":"2019-05-03T09:11:17","date_gmt":"2019-05-03T09:11:17","guid":{"rendered":"http:\/\/www.genesesofts.com\/?p=486"},"modified":"2020-11-02T02:11:24","modified_gmt":"2020-11-02T02:11:24","slug":"genese-attendance-system-overview","status":"publish","type":"post","link":"https:\/\/www.genesesolution.com\/bd\/blog\/genese-attendance-system-overview\/","title":{"rendered":"Genese Attendance System Overview"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; specialty=&#8221;on&#8221; _builder_version=&#8221;3.22&#8243;][et_pb_column type=&#8221;3_4&#8243; specialty_columns=&#8221;3&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_row_inner admin_label=&#8221;Row&#8221; _builder_version=&#8221;3.25&#8243;][et_pb_column_inner saved_specialty_column_type=&#8221;3_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_text _builder_version=&#8221;3.27.4&#8243; text_font=&#8221;Open Sans||||||||&#8221; text_font_size=&#8221;15px&#8221; header_3_font=&#8221;Open Sans|600|||||||&#8221; header_3_font_size=&#8221;20px&#8221;]<\/p>\n<h2>AWS Attendance System:\u00a0 Introduction<\/h2>\n<p>Genese Attendance System is built using AWS Serverless Framework where Dynamodb is used for Database, API Gateway is used for HTTP Requests, Lambda for Serverless Computing and Amazon Cognito for User Authentication. Furthermore, S3(with Static Web Hosting) and <a href=\"https:\/\/en.wikipedia.org\/wiki\/Amazon_CloudFront\">CloudFront<\/a> is used for Hosting it. A serverless system that seeks the help of<a href=\"https:\/\/www.apriorit.com\/dev-blog\/599-ai-for-image-processing\"> Image Analyzing AI<\/a> service provided by AWS to track and record day to day employee attendance details of any kind of organization by Facial Recognition methods. It provides a simple user interface to monitor each and every record at any time. In addition, the system incorporates holiday package, leave management and other handy integrations. Here an Architecture Diagram shows the workflow of the Genese Attendance System.<\/p>\n<p>[\/et_pb_text][\/et_pb_column_inner][\/et_pb_row_inner][et_pb_row_inner admin_label=&#8221;Row&#8221; _builder_version=&#8221;3.25&#8243; column_structure=&#8221;1_2,1_2&#8243;][et_pb_column_inner type=&#8221;1_2&#8243; saved_specialty_column_type=&#8221;3_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_text _builder_version=&#8221;3.27.4&#8243; text_font=&#8221;Open Sans||||||||&#8221; text_font_size=&#8221;15px&#8221; header_3_font=&#8221;Open Sans|600|||||||&#8221; header_3_font_size=&#8221;20px&#8221;]<\/p>\n<h3>AWS Services<\/h3>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Lambda<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">DynamoDB <\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Simple Storage Service <\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">API Gateway <\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Amazon Cognito <\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">CloudFront <\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Amazon Rekognition <\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Simple Email Service<\/span><\/li>\n<\/ul>\n<p>[\/et_pb_text][\/et_pb_column_inner][et_pb_column_inner type=&#8221;1_2&#8243; saved_specialty_column_type=&#8221;3_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][\/et_pb_column_inner][\/et_pb_row_inner][et_pb_row_inner admin_label=&#8221;Row&#8221; _builder_version=&#8221;3.25&#8243;][et_pb_column_inner saved_specialty_column_type=&#8221;3_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_text _builder_version=&#8221;3.27.4&#8243; text_font=&#8221;Open Sans||||||||&#8221; text_font_size=&#8221;15px&#8221; header_3_font=&#8221;Open Sans||||||||&#8221; header_3_font_size=&#8221;20px&#8221; header_4_font=&#8221;Open Sans||||||||&#8221;]<\/p>\n<h3>Architecture Diagram<\/h3>\n<h4>1. AWS Lambda Architecture for Attendance System.<\/h4>\n<p><img loading=\"lazy\" class=\"alignnone size-full wp-image-799\" src=\"http:\/\/genesesolution.com\/wp-content\/uploads\/sites\/4\/2020\/06\/Attendance-System-Lambda.png\" alt=\"\" width=\"2963\" height=\"2109\" \/><\/p>\n<h4>2. AWS API Gateway Architecture for Attendance System.<\/h4>\n<p><img loading=\"lazy\" class=\"alignnone size-full wp-image-800\" src=\"http:\/\/genesesolution.com\/wp-content\/uploads\/sites\/4\/2020\/06\/API-Gateway-Architecture-1.png\" alt=\"\" width=\"2888\" height=\"2308\" \/><\/p>\n<h4>3. CloudFront Architecture for Attendance System.<b><\/b><\/h4>\n<p><img loading=\"lazy\" class=\"alignnone size-full wp-image-801\" src=\"http:\/\/genesesolution.com\/wp-content\/uploads\/sites\/4\/2020\/06\/CloudFront-Architecture.png\" alt=\"\" width=\"1988\" height=\"1688\" \/>[\/et_pb_text][\/et_pb_column_inner][\/et_pb_row_inner][et_pb_row_inner admin_label=&#8221;Row&#8221; _builder_version=&#8221;3.25&#8243;][et_pb_column_inner saved_specialty_column_type=&#8221;3_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_text _builder_version=&#8221;3.27.4&#8243; text_font=&#8221;Open Sans||||||||&#8221; text_font_size=&#8221;15px&#8221; header_3_font=&#8221;Open Sans||||||||&#8221; header_3_font_size=&#8221;20px&#8221; header_4_font=&#8221;Open Sans||||||||&#8221;]<\/p>\n<h3>AWS Services<\/h3>\n<h4>1. TCO Analysis<\/h4>\n<p>TCO analysis helps us to know the cost that we can save by using the use of Amazon Services. As we can see in the figure 73% of a yearly cost has been saved by moving our System in the AWS.<\/p>\n<p>After moving in the AWS we still saw the way to reduce the cost and we moved towards the serverless service of the AWS, through which we successfully saved 140 dollars more by integrating with the serverless of AWS.<img loading=\"lazy\" class=\"alignnone wp-image-525 size-full\" src=\"http:\/\/genesesolution.com\/wp-content\/uploads\/sites\/4\/2020\/06\/image-3.png\" alt=\"\" width=\"813\" height=\"513\" \/><\/p>\n<h4>2. Detailed reporting with Cloudwatch Reporting and analytics dashboard<\/h4>\n<p>We have web distribution URL added and then we can see the different metrics like a chart for the total number of requests for all HTTPS code, another chart is about the data transfer which shows bytes downloads and uploads by the user and another chart shows the request by the HTTPS status code.<\/p>\n<p>We have created Cloudwatch Alarms to notify us about CloudFront metric data whenever it exceeded the threshold that we have defined. When Cloudwatch triggers an alarm and it sends a notification to the email list.<img loading=\"lazy\" class=\"alignnone wp-image-526 size-full\" src=\"http:\/\/genesesolution.com\/wp-content\/uploads\/sites\/4\/2020\/06\/image-4.png\" alt=\"\" width=\"1055\" height=\"311\" \/><\/p>\n<h4>3. Signed URLs Cookies<b><\/b><\/h4>\n<p><span style=\"font-weight: 400;\">The system captures images of employees daily. Those images are displayed in the root account. So to deny public access and allow only one user to access those images, we have configured the Signed URLs for those images.<\/span><\/p>\n<h4>4. Performance testing<\/h4>\n<p><b><\/b><span style=\"font-weight: 400;\">Since real user metrics are not available because the application being tested is not receiving real web traffic, we evaluate the performance of our CloudFront distribution by using Synthetic Monitoring approach for performance testing for CDN. For this, we mimic actual web traffic by simulating requests from locations worldwide.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For our application, we use Apache Bench Tool from a command line to test heavy loads on the CloudFront.<\/span>[\/et_pb_text][et_pb_text _builder_version=&#8221;3.27.4&#8243; text_font=&#8221;Open Sans||||||||&#8221; text_font_size=&#8221;15px&#8221; header_3_font=&#8221;Open Sans||||||||&#8221; header_3_font_size=&#8221;20px&#8221; header_4_font=&#8221;Open Sans||||||||&#8221;]<\/p>\n<h3>Amazon API Gateway<\/h3>\n<h4>1. Type of API Gateway solution being delivered<\/h4>\n<p>An application uses Rest API&#8217;s created in API Gateway to facilitate client-server communications. Client-side sends a request to the API Endpoint which then triggers related lambda function and returns an appropriate response to the client side.<\/p>\n<h4>2. Guidance provided to the customer for effective monitoring solution and cloud watch metrics<\/h4>\n<p>Suggestions to enable the CloudWatch logs and CloudWatch metrics detailed option to track the information or errors of every API call and view the detailed information about API calls, latency, integration latency, 400 errors, and 500 errors.<\/p>\n<h4>3. API Versioning<b><\/b><\/h4>\n<p>Since we needed to keep the development and production environment separate, we used the Stage variables to separate different versions of API.<\/p>\n<h4>4. Proficiency<\/h4>\n<p><b><\/b>Under the API Gateway, we have used mapping template for handling the request and response from the client.<br \/>\nFor Authentication, we have used Cognito User Pool Authorizers. Client-side sends a request to the API endpoint with a token from Cognito. API Gateway verifies the token using the authorizer and grants further access to the lambda function.[\/et_pb_text][et_pb_text _builder_version=&#8221;3.27.4&#8243; text_font=&#8221;Open Sans||||||||&#8221; text_font_size=&#8221;15px&#8221; header_3_font=&#8221;Open Sans||||||||&#8221; header_3_font_size=&#8221;20px&#8221; header_4_font=&#8221;Open Sans||||||||&#8221;]<\/p>\n<h3>Amazon DynamoDB<\/h3>\n<h4>1.Description Dyanamodb Tables, their Primary Keys, and Indexes<\/h4>\n<h4>Table 1: Employee<\/h4>\n<ul>\n<li><strong>Main Table:<\/strong> <em>Name<\/em> (hash key) &amp; <em>Date<\/em>(sort key) For a particular date, a user has only one record in the table. So using \u201cName\u201d as Hash Key and \u201cDate\u201d as Sort Key, it is efficient to perform query operation in the main table.<\/li>\n<li><strong>Global Secondary Index:<\/strong> <em>Name<\/em>(hash key) &amp; <em>monthvalue<\/em>(sort key) Since scan operation on DynamoDB table with large item count results in ineffective use of provisioned throughput, we seek the help of Global Secondary index to define a new primary key combination of \u201c<em>Name<\/em>\u201d as Hash Key and \u201c<em>monthvalue<\/em>\u201d as Sort Key. Doing so we can retrieve records of a user for a particular month from a query operation<\/li>\n<\/ul>\n<h4>Table 2: employee_details<\/h4>\n<ul>\n<li><strong>Main Table:<\/strong> <em>username<\/em>(hash key) This table stored the details of every user of the application. Each user is identical with each other with the username attribute. So the best option for a primary hash key is the username itself.<\/li>\n<\/ul>\n<h4>Table 3: event_records<\/h4>\n<ul>\n<li><strong>Main Table<\/strong>: <em>companyusername<\/em>(hash key) &amp; date(sort key) Different company has different events of their own. A particular item in the table includes events records for events of a company on a particular date. So optimum efficiency is achieved by making the \u201c<em>companyusername<\/em>\u201d the Hash key and \u201c<em>date<\/em>\u201d as Sort Key.<\/li>\n<li><strong>Global Secondary Index<\/strong>: <em>monthvalue<\/em>(hash key) An application requires frequent queries regarding events in a particular month, so we need to implement an index that has \u201c<em>monthvalue<\/em>\u201d attribute as the primary hash key.<\/li>\n<\/ul>\n<h4>Table 4:leave_requests<\/h4>\n<ul>\n<li><strong>Main Table<\/strong>: <em>leaveid<\/em>(hash key) For every leave request, we generate a 32 digit unique UUID to serve as the primary hash key for the table.<\/li>\n<li style=\"font-weight: 400;\"><strong>Global Secondary Index:<\/strong>\n<ul>\n<li><strong>employeeusername-index: employeeusername (hash key):\u00a0<\/strong>The application queries every leave requests for a particular user. So for the smooth and effective query actions, this global secondary index with \u201c<em>employeeusername<\/em>\u201d as the Primary Key.<\/li>\n<li><strong>managerusername-index: managerusername \u00a0(hash key):\u00a0<\/strong>Managers get a notification about any new leave request they are responsible for. To query the leave requests from a manager\u2019s perspective, this index takes \u00a0\u201c<em>managerusername<\/em>\u201d as the Primary Hash key.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4>2. Backup and Data Encryption of Dynamodb Table<\/h4>\n<p>Continuous backup is enabled in the DynamoDB tables and when it&#8217;s enabled, point-in-time recovery provides continuous backups until it is explicitly turned off. DynamoDB maintains continuous backups of the tables for the last 35 days. We have enabled encryption for the DynamoDB tables to help protect data at rest.<\/p>\n<h4>3. Monitoring and alerting for read and write capacity<\/h4>\n<p>We have created Cloudwatch Alarms to notify us about any insufficiency in provisioned throughput capacity.<\/p>\n<h4>4. Dynamodb Workload Summary<\/h4>\n<ul>\n<li>Write Capacity Units: Range between 20,000 to 25,000 WCU-Hrs<\/li>\n<li>Read Capacity Units: Range between 20,000 to 25,000 RCU-Hrs<\/li>\n<li>Total data storage: less than 5 GB till now<\/li>\n<li>Global deployment: In only one region (ap-south-1)<\/li>\n<\/ul>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;3.27.4&#8243; text_font=&#8221;Open Sans||||||||&#8221; text_font_size=&#8221;15px&#8221; header_3_font=&#8221;Open Sans|700|||||||&#8221; header_3_font_size=&#8221;20px&#8221; header_4_font=&#8221;Open Sans|700|||||||&#8221;]<\/p>\n<h3>AWS Lambda<\/h3>\n<h4>1. Uses and Workloads of Lambda Service<\/h4>\n<ul>\n<li><strong>Connection with other AWS Services:<\/strong>AWS Lambda functions act as the backend to the application. This application utilizes other AWS services and resources that are organized and manipulated by lambda functions. The application uses DynamoDB tables for storing data and records. Lambda is responsible for reads and writes of data from and to the database.For storing static files, AWS storage service S3 is used and all the GET and PUT operation is done by Lambda functions. Amazon Rekognition is implemented in Lambda function codes to do image processing tasks.Since this application is totally serverless, all the application logic resides inside lambda functions only. There is no need for any servers or containers in any kind of roles or tasks in the application.<\/li>\n<li><strong>Automating Infrastructures provisioning and managing is not serverless<\/strong><br \/>\nAWS Lambda serves client side with appropriate data queries, user registration, and many other application tasks. Automation of Infrastructure provisioning and management is not applicable in this use case.<\/li>\n<li><strong>Handle core data flow with AWS Lambda<\/strong><br \/>\nEach and every backend logic that the application is based on is hosted in AWS Lambda. All the logic behind DynamoDB table read and writes, S3 GET and PUT, Image processing tasks with Rekognition, Cognito Admin User creation etc. resides inside lambda functions.<\/li>\n<\/ul>\n<h4>2. Solution Characteristics for Lambda Functions<\/h4>\n<ul>\n<li><strong>Load\/Performance Testing:<\/strong><br \/>\n<span style=\"font-weight: 400;\">We used a package of node (npm) named loadtest to test the API request and Lambda Invocations. We have Installed the Package Locally with command: npm install -g loadtest. To perform Load Test, the command syntax will be like this: Command: \u2018loadtest -c 10 &#8211;rps 200<\/span><a href=\"https:\/\/ginyod5w77.execute-api.ap-south-1.amazonaws.com\/prod\/openapi?addNewIntern=SendCredentials\">https:\/\/ginyod5w77.execute-api.ap-south-1.amazonaws.com\/prod\/openapi?addNewIntern=SendCredentials<\/a>\u2019<\/li>\n<li><strong>IAM Policy Definition:<\/strong><br \/>\nWe have used different IAM policies to attach it with the IAM Roles to execute necessary tasks in Lambda functions.<br \/>\nDifferent Policies Used are:<\/p>\n<ul>\n<li>AttendanceCognitoPolicy(Inline Policy)<\/li>\n<li>AttendaceDynamodbPolicy(Inline Policy)<\/li>\n<li>ses-full-access(Inline Policy)<\/li>\n<li>AWSS3DFullAccess(AWS Managed Policy)<\/li>\n<li>AttendaceRecognitionPolicy(Inline Policy)<\/li>\n<li>AttendaceS3Policy(Inline Policy)<\/li>\n<li>AttendaceSESPolicy(Inline Policy)<\/li>\n<\/ul>\n<\/li>\n<li><strong>Managing Failed Executions:<\/strong><br \/>\nWe have used python boto3 library in our code. Lambda intakes certain parameters values from API Gateway event which determines what task is to be done. Every code logic includes python exception handling mechanism which minimizes failed executions to zero. Since all the moving part are handled for exceptions, there is no way of any failed execution. In certain cases, maybe the input parameters may be wrong and code logic may not comply with the input. In such case, lambda identifies the exception and returns an appropriate message to the client side.<\/li>\n<li><strong>Management of Multiple Microservice functions:<\/strong>\n<ol>\n<li><span style=\"font-weight: 400;\">The application is composed of small independent services that communicate over a defined API. <\/span><\/li>\n<li><span style=\"font-weight: 400;\">The Server Side Logic is written in Lambda functions, which are independent microservice functions of AWS. <\/span><\/li>\n<li><span style=\"font-weight: 400;\">We have created a CloudFormation Template(CFT) to create and manage all of the microservice functions.<\/span><\/li>\n<li><span style=\"font-weight: 400;\">CloudFormation covers:<\/span>\n<ul>\n<li><span style=\"font-weight: 400;\">Create and deploy different lambda functions<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Create API gateway methods to connect the lambda microservice with the front end logic.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<\/li>\n<li><strong>VPC vs No-VPC and concurrency:<\/strong><br \/>\n<span style=\"font-weight: 400;\">Lambda functions are not placed in any VPC\u2019s as the application do not need to connect to any other servers that require VPC Secure Environment. Regarding concurrency limits, the default limit of 1000 concurrent executions is enough for a current use case. We might need a limit increase in the future.<\/span><\/li>\n<li><strong>Monitoring of Alarms and Metrics:<\/strong>\n<ol>\n<li>For Monitoring the execution of lambda functions, we have used CloudWatch Service of AWS.<\/li>\n<li>We have monitored different CloudWatch metrics of Lambda by the Name of Function.<\/li>\n<li>Name of Different Metrics that we monitored for our Lambda includes:\n<ul>\n<li>Invocation per lambda function<\/li>\n<li>Duration of execution of lambda function<\/li>\n<li>Error in a lambda function<\/li>\n<li>Throttles to manage the flow of execution<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<p>[\/et_pb_text][\/et_pb_column_inner][\/et_pb_row_inner][\/et_pb_column][et_pb_column type=&#8221;1_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_sidebar area=&#8221;sidebar-1&#8243; _builder_version=&#8221;3.15&#8243;][\/et_pb_sidebar][\/et_pb_column][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Genese Attendance System is built using AWS Serverless Framework where Dynamodb is used for Database, API Gateway is used for HTTP Requests, Lambda for Serverless Computing and Amazon Cognito for User Authentication. Furthermore, S3(with Static Web Hosting) and CloudFront is used for Hosting it. A serverless system that seeks the help of Image Analyzing AI service provided by AWS to track and record day to day employee attendance details of any kind of organization by Facial Recognition methods. It provides a simple user interface to monitor each and every record at any time. In addition, the system incorporates holiday package, leave management and other handy integrations. Here an Architecture Diagram shows the workflow of the Genese Attendance System.<\/p>\n","protected":false},"author":21,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","_links_to":"","_links_to_target":""},"categories":[70,71],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Genese Attendance System Overview | AWS Serverless Framework<\/title>\n<meta name=\"description\" content=\"Genese Attendance System is built using AWS Serverless Framework where Dynamodb is used for Database, API Gateway is used for HTTP Requests, Lambda for Serverless Computing and Amazon Cognito for User Authentication\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.genesesolution.com\/bd\/blog\/genese-attendance-system-overview\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Genese Attendance System Overview | AWS Serverless Framework\" \/>\n<meta property=\"og:description\" content=\"Genese Attendance System is built using AWS Serverless Framework where Dynamodb is used for Database, API Gateway is used for HTTP Requests, Lambda for Serverless Computing and Amazon Cognito for User Authentication\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.genesesolution.com\/bd\/blog\/genese-attendance-system-overview\/\" \/>\n<meta property=\"og:site_name\" content=\"Genese Solution Bangladesh\" \/>\n<meta property=\"article:published_time\" content=\"2019-05-03T09:11:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-11-02T02:11:24+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/genesesolution.com\/wp-content\/uploads\/sites\/4\/2020\/06\/Attendance-System-Lambda.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Anjani Phuyal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.genesesolution.com\/bd\/#website\",\"url\":\"https:\/\/www.genesesolution.com\/bd\/\",\"name\":\"Genese Solution Bangladesh\",\"description\":\"Creating you the best\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.genesesolution.com\/bd\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.genesesolution.com\/bd\/blog\/genese-attendance-system-overview\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"http:\/\/genesesolution.com\/wp-content\/uploads\/sites\/4\/2020\/06\/Attendance-System-Lambda.png\",\"contentUrl\":\"http:\/\/genesesolution.com\/wp-content\/uploads\/sites\/4\/2020\/06\/Attendance-System-Lambda.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.genesesolution.com\/bd\/blog\/genese-attendance-system-overview\/#webpage\",\"url\":\"https:\/\/www.genesesolution.com\/bd\/blog\/genese-attendance-system-overview\/\",\"name\":\"Genese Attendance System Overview | AWS Serverless Framework\",\"isPartOf\":{\"@id\":\"https:\/\/www.genesesolution.com\/bd\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.genesesolution.com\/bd\/blog\/genese-attendance-system-overview\/#primaryimage\"},\"datePublished\":\"2019-05-03T09:11:17+00:00\",\"dateModified\":\"2020-11-02T02:11:24+00:00\",\"author\":{\"@id\":\"https:\/\/www.genesesolution.com\/bd\/#\/schema\/person\/9474e5780afd73d843feb813d4a18e71\"},\"description\":\"Genese Attendance System is built using AWS Serverless Framework where Dynamodb is used for Database, API Gateway is used for HTTP Requests, Lambda for Serverless Computing and Amazon Cognito for User Authentication\",\"breadcrumb\":{\"@id\":\"https:\/\/www.genesesolution.com\/bd\/blog\/genese-attendance-system-overview\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.genesesolution.com\/bd\/blog\/genese-attendance-system-overview\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.genesesolution.com\/bd\/blog\/genese-attendance-system-overview\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.genesesolution.com\/bd\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Genese Attendance System Overview\"}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.genesesolution.com\/bd\/#\/schema\/person\/9474e5780afd73d843feb813d4a18e71\",\"name\":\"Anjani Phuyal\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.genesesolution.com\/bd\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/63136611a134b1d39e4f160d67576cd3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/63136611a134b1d39e4f160d67576cd3?s=96&d=mm&r=g\",\"caption\":\"Anjani Phuyal\"},\"url\":\"https:\/\/www.genesesolution.com\/bd\/blog\/author\/anjani\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Genese Attendance System Overview | AWS Serverless Framework","description":"Genese Attendance System is built using AWS Serverless Framework where Dynamodb is used for Database, API Gateway is used for HTTP Requests, Lambda for Serverless Computing and Amazon Cognito for User Authentication","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.genesesolution.com\/bd\/blog\/genese-attendance-system-overview\/","og_locale":"en_US","og_type":"article","og_title":"Genese Attendance System Overview | AWS Serverless Framework","og_description":"Genese Attendance System is built using AWS Serverless Framework where Dynamodb is used for Database, API Gateway is used for HTTP Requests, Lambda for Serverless Computing and Amazon Cognito for User Authentication","og_url":"https:\/\/www.genesesolution.com\/bd\/blog\/genese-attendance-system-overview\/","og_site_name":"Genese Solution Bangladesh","article_published_time":"2019-05-03T09:11:17+00:00","article_modified_time":"2020-11-02T02:11:24+00:00","og_image":[{"url":"http:\/\/genesesolution.com\/wp-content\/uploads\/sites\/4\/2020\/06\/Attendance-System-Lambda.png"}],"twitter_card":"summary_large_image","twitter_misc":{"Written by":"Anjani Phuyal","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"https:\/\/www.genesesolution.com\/bd\/#website","url":"https:\/\/www.genesesolution.com\/bd\/","name":"Genese Solution Bangladesh","description":"Creating you the best","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.genesesolution.com\/bd\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"ImageObject","@id":"https:\/\/www.genesesolution.com\/bd\/blog\/genese-attendance-system-overview\/#primaryimage","inLanguage":"en-US","url":"http:\/\/genesesolution.com\/wp-content\/uploads\/sites\/4\/2020\/06\/Attendance-System-Lambda.png","contentUrl":"http:\/\/genesesolution.com\/wp-content\/uploads\/sites\/4\/2020\/06\/Attendance-System-Lambda.png"},{"@type":"WebPage","@id":"https:\/\/www.genesesolution.com\/bd\/blog\/genese-attendance-system-overview\/#webpage","url":"https:\/\/www.genesesolution.com\/bd\/blog\/genese-attendance-system-overview\/","name":"Genese Attendance System Overview | AWS Serverless Framework","isPartOf":{"@id":"https:\/\/www.genesesolution.com\/bd\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.genesesolution.com\/bd\/blog\/genese-attendance-system-overview\/#primaryimage"},"datePublished":"2019-05-03T09:11:17+00:00","dateModified":"2020-11-02T02:11:24+00:00","author":{"@id":"https:\/\/www.genesesolution.com\/bd\/#\/schema\/person\/9474e5780afd73d843feb813d4a18e71"},"description":"Genese Attendance System is built using AWS Serverless Framework where Dynamodb is used for Database, API Gateway is used for HTTP Requests, Lambda for Serverless Computing and Amazon Cognito for User Authentication","breadcrumb":{"@id":"https:\/\/www.genesesolution.com\/bd\/blog\/genese-attendance-system-overview\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.genesesolution.com\/bd\/blog\/genese-attendance-system-overview\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.genesesolution.com\/bd\/blog\/genese-attendance-system-overview\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.genesesolution.com\/bd\/"},{"@type":"ListItem","position":2,"name":"Genese Attendance System Overview"}]},{"@type":"Person","@id":"https:\/\/www.genesesolution.com\/bd\/#\/schema\/person\/9474e5780afd73d843feb813d4a18e71","name":"Anjani Phuyal","image":{"@type":"ImageObject","@id":"https:\/\/www.genesesolution.com\/bd\/#personlogo","inLanguage":"en-US","url":"https:\/\/secure.gravatar.com\/avatar\/63136611a134b1d39e4f160d67576cd3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/63136611a134b1d39e4f160d67576cd3?s=96&d=mm&r=g","caption":"Anjani Phuyal"},"url":"https:\/\/www.genesesolution.com\/bd\/blog\/author\/anjani\/"}]}},"_links":{"self":[{"href":"https:\/\/www.genesesolution.com\/bd\/wp-json\/wp\/v2\/posts\/486"}],"collection":[{"href":"https:\/\/www.genesesolution.com\/bd\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.genesesolution.com\/bd\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.genesesolution.com\/bd\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/www.genesesolution.com\/bd\/wp-json\/wp\/v2\/comments?post=486"}],"version-history":[{"count":2,"href":"https:\/\/www.genesesolution.com\/bd\/wp-json\/wp\/v2\/posts\/486\/revisions"}],"predecessor-version":[{"id":6437,"href":"https:\/\/www.genesesolution.com\/bd\/wp-json\/wp\/v2\/posts\/486\/revisions\/6437"}],"wp:attachment":[{"href":"https:\/\/www.genesesolution.com\/bd\/wp-json\/wp\/v2\/media?parent=486"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.genesesolution.com\/bd\/wp-json\/wp\/v2\/categories?post=486"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.genesesolution.com\/bd\/wp-json\/wp\/v2\/tags?post=486"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}