Reference no: EM133848167
Cloud Computing
Learning Outcome 1: Develop and deploy cloud applications using popular cloud platforms.
Learning Outcome 2: Design and develop highly scalable cloud-based applications by creating and configuring virtual machines on the cloud and building private cloud.
Assessment Details
Create a simple online music subscription application that leverages AWS S3 and DynamoDB. Deploy your web application on a free-tier EC2 instance running Ubuntu Server.
Your assessment will be marked during your demo time (further details about the demo will be provided in Week 5). Examiners will ask questions to assess how well students understand the AWS services implemented. Marks will be assigned based on two key criteria: (1) the functional correctness of your application, and (2) your demonstrated understanding of the services employed in the project. Hire best assignment help now!
The application should be FULLY hosted in a web server environment - Apache2 (or a suitable alternative) and be able to be rendered in a web browser by directly entering the root Public IPv4 DNS (in either https or http) of the EC2 instance hosting the application.
Please make sure that markers can access your web application via the standard HTTP(S) port of your EC2 public DNS, for example:
Using Elastic Beanstalk is NOT allowed as a valid means of deploying your application.
Using non-standard HTTP ports (i.e. ones other than 80/443) are also NOT allowed.
AWS supports multiple programming languages, allowing developers to choose the language that best suits their needs and preferences.
You can use any language(s) that you are familiar with. Your application still needs to fulfil the same requirements (. e.g., running on an AWS Ubuntu EC2 instance, connecting to a DynamoDB, S3 actions, ...etc.).
You can use any framework providing you are writing the code for the core functions.
AWS Academy account does not allow to create any IAM roles. However, a role named
LabRole has been pre-created for you. Use LabRole instead.
Students would also need to securely access the images stored in S3. This is considered security best practice and should always be done.
Students must meticulously design the DynamoDB key schema and secondary index to maximize query performance. Both the Ouery and Scan operations should be implemented appropriately for data retrieval from DynamoDB tables.
Please ensure that your implementation correctly handles various HTTP request methods
- such as GET and POST - when using the API Gateway REST API.
Task Description
Create a login table in DynamoDB containing 10 entities with the following attributes and values. Note: This task can be done via code or console.
Write a program to create a table titled music in DynamoDB with the following attributes:
title, artist, year, album, and image_url.
Write a program to load the data from 2025a1.json to your music table.
A single song can have multiple versions (for example, deluxe editions, live recordings, and remix versions), performed by either the same or different artist. Different versions of the same song are released on different albums.
Note: It is acceptable that the program creates the table with only the key attribute(s) in Task
1.2. The non-key attributes can be created when the program loads the data from the JSON file 2025a1.json in this task.
Write a program that automatically downloads all artist images based on the image_url values found in 2025a1.json and then uploads these images to an S3 bucket.
The login page contains an "Email" text field, a "Password" field, and a "Login" button as well as a register link.
When user clicks the Login button, it will validate if the user-entered credentials match with the information stored in the login table.
If the user credential is invalid, the login page will display "email or password is invalid"; it will be redirected to the main page otherwise.
The register page contains an "Email" text field, a "Username" field, a "Password" field, and a "Register" button. When a user clicks the "Register" button, it will validate if the user- entered email matches with the email stored in the login table created in task 1.1.
Note: Each registration must have a unique email address. The username is not intended to serve as a unique credential for authentication, therefore, it is possible for two (or more) users to have accounts with the same username.
If the entered email matches with the email stored in the login table, the register page will show "The email already exists".
If the entered email is unique, the new user information will be stored in the login table, and the user will be redirected to the login page, where user can login with the new email and password.
The main page contains three areas (a user area, a subscription area, and a query area) and a "Logout" link.
Note: For a newly registered user who hasn't subscribed to any songs yet, the subscription area should be empty. Displaying all songs stored in the database is not advisable, since in a real- world scenario it could contain millions of songs.
(1 mark) After a user log in, the user area will show the corresponding user_name.
The subscription area
The subscription area will show all the user subscribed music information (title, artist, year, and album) stored in DynamoDB.
Each music information is followed by the corresponding artist image retrieved from S3 and a "Remove" button.
If the user clicks the "Remove" button, the corresponding subscribed music informationand artist information will be removed from the subscription area and the corresponding table in DynamoDB.
The query area should contain four text areas, "Title", "Year", "Artist", "Album", and a "Ouery" button. The user may fill in one or more of these text areas and then click the Ouery button, but at least one field must be completed.
If the queried information is not contained in the entities' corresponding attribute value(s) in the music table, it will show "No result is retrieved. Please query again".
If the queried information is contained in (one or more) entities' correspondingattribute value(s) in the music table, the area will show
All the retrieved music information (title, artist, album, and year).
Note: If a user enters more than one query conditions, the query conditions are connected by "AND" operator(s) by default.
Each music information is followed by the corresponding artist images retrieved from S3 and a "Subscribe" button.
If the user clicks the "Subscribe" button, the subscribed music information and the corresponding artist image will be added into the subscription area and the subscribed music information will be stored in DynamoDB.
If the user clicks the "Logout" link, the user will be redirected to the login page.
The application needs to read and update the records (user, music, and subscription) in DynamoDB through API Gateway and Lambda function. For example, when
users register on the website, and
users subscribe to new songs, and
users remove subscribed song(s),
the requests will pass through the API Gateway REST API.
The Lambda function gets the requests (read or write) and communicates with DynamoDB.