PROG2003 – Cloud Systems Development
Assignment 1
PROG2003 Assignment 1
Weight: 30% of your final mark
Due: Week 3 Monday (16 May 2022) at 11:00 PM
Specifications
Your task is to create a website that prints all the existing file details in an S3 bucket. To make the
website dynamic, you need to create a Cloud9 app that would work as a “backend” for the website.
Your submission will be evaluated based on:
• whether instructions have been followed;
• correct functionality;
• correct implementation; and
• comments inside the program
Getting Help
This assignment, which is to be completed individually, is your chance to gain an understanding of the
fundamental concepts of listing and creating S3 objects on which later learning will be based. It is
important that you master these concepts yourself.
Since you are mastering fundamental skills, you are permitted to work from the examples in the
MySCU site or textbook, but you must acknowledge assistance from other textbooks or classmates. In
particular, you must not use online material or help from others, as this would prevent you from
mastering these concepts.
This diagram will help you understand where you can get help:
Encouraged Attribution Required Not acceptable Ask tutor
Be aware that if you do get help from one of the red sources, you will be reported for academic
misconduct, which may have serious penalties. Please visit the following link for the guidelines:
https://bit.ly/scuAcadMisconduct
Lecturer Tutors Online
Forums Relatives
Students
outside unit Hired coders Classmates Private
Tutors
Other
PROG2003 – Cloud Systems Development
Assignment 1
Overview: You have to create a website that prints the current file names and their sizes in an S3
bucket. The website will be hosted in the same bucket and will have an index and an error page. The
index page will print the file list and the error page will print some error messages. The index page
would look like the screenshot below.
You need to use the UA-provided AWS account for all assessment tasks. A personal AWS account is
not acceptable.
Details: The details of the assignment tasks are described below.
Part A: The website (6 marks): The index and error pages ideally would be the index.html and
error.html files. The error page will be displayed upon entering the wrong/invalid URL. The index page
will print a list of names and sizes of the “current” files (i.e., known as objects in S3) within an S3
bucket. If the bucket is empty then the index page should print a message “There are currently no
objects”. You need to host a static website with two pages (index.html, and error.html) in the bucket.
You need to configure the bucket with the appropriate “bucket policy” and “public access” so that
your website can be accessed publicly.
The index page must reflect any changes to the number of files in the bucket. If you delete from or
add a file to the bucket, the index page must reflect that. You might be wondering how that would be
possible by a static website. To implement this “dynamic” functionality, you need to implement a
Cloud9 app that can: (a) list the current file names and their sizes; and (b) create (or overwrite) an
index file with the current file names and sizes in the bucket. The app will be executed each time
before running the website so that the index.html always displays the updated list of current files and
their sizes.
Part B: The Cloud9 app (24 marks): The Cloud9 app will have two main features – listing all file names
(i.e., object names or keys) as well as their sizes in the bucket, and creating a new file/object with the
name/key “index.html” within the bucket. Upon serving, the index.html will display these names and
sizes. It will print a message “no object available” if the bucket is empty. It has been taught during the
tutorial that while creating an object in a bucket, you need to specify the content of the object. The
content of the index.html in this case will include the current object names and their sizes. You will
get the names and sizes of the objects by implementing the listing feature. You need to embed this
information with HTML code to prepare the content of the index.html. The error.html will be very
simple and will display a relevant error message, e.g., page not found.
Requirements: Your website and Cloud9 app must fulfil the following requirements. You will lose
marks otherwise.
PROG2003 – Cloud Systems Development
Assignment 1
• Your Cloud9 app must be named yourscuusernameA1App.
• You will use a single bucket for the whole assignment and its name must be yourscuusernamea1-bucket.
• Your Cloud9 app must have separate methods for the two features – listing and creating.
• Your Cloud9 app must use exception handling and loop(s).
• You must use AWS SDK v 2.x to implement the Cloud9 app.
• You must implement the assignment in the SCU-provided AWS account, personal AWS
account will not be accepted.
• You need to add comments inside your source code.
Solution Hints: Check the following hints for implementation.
• A newly created object by default has a content type of “application/octet”. Such objects
behave as attachments. This will not fulfil the purpose for a website, where the HTML pages
need to serve. You need to explore the content-type property of the PutObjectRequest class
for this purpose.
• You can use an unordered HTML list (
) for the index.html to display the object
names. Check this link out: https://www.w3schools.com/html/html_lists_unordered.asp.
Submission Checklist: The marker will access your AWS Academy workspace (provided by the UA),
check your app, and directly mark your app from there. If your AWS console provided by the UA is not
accessible, you will lose a significant mark. You have to zip the app project folder and submit it in
Blackboard as well. Blackboard submission list:
• Zipped app folder for the Cloud9 app.
• A text file containing the URL of the static website.