Sale!

CSCI4145/5409 Compute & Storage solution

$30.00 $25.50

Category:

Description

5/5 - (5 votes)

Introduction
This assignment will measure your understanding of the main compute and storage
mechanisms of our cloud provider AWS. This assignment assures us that you have attended the
tutorials and learned about AWS EC2 and S3, or that you have found some other way to learn
these services.
Learning Outcomes
• You understand how to launch AWS Elastic Compute (EC2) instances
• You understand how to connect to an EC2 instance and provision it to support your web
applications
• You understand the AWS Simple Storage Service (S3) and how to create a bucket
• Experience working with AWS libraries that allow you to perform AWS operations such
as creating a file on S3
• More experience building REST APIs
Requirements
You will build a web application with any language or framework you like, deployed on an EC2
instance. I will do the same thing! Your application will “introduce” itself to mine by sending a
POST request with some JSON to a URL that begins a chain of events:
1. I will POST to your app with some JSON that gives you data to store in a file on S3
2. Your app will retrieve the data from the POST, and use an AWS library to
programmatically store the data in a file you create on S3
3. Your app will return a 200 status code and JSON that includes the URL for the file you
created on S3
4. My app will download your file and verify that it contains the data I sent you
When you are finished the system will look and function like this:
I retrieve your file from the returned URL and verify contents
Rob’s App on EC2 Your App
AWS S3
Your app POST to
/begin
I POST to /storedata,
you return URL
Write data
to file on
S3
JSON Your App Sends To My App’s /begin
Your app will send me the following JSON in your POST to /begin
{
“banner”: “”,
“ip”: “”
}
JSON My App Sends To Your App’s /storedata
When you POST to my app’s /begin endpoint with valid JSON my app will immediately interact
with yours by sending a POST with the following JSON to your app’s /storedata endpoint:
{
“data”: “
}
Your App’s Response To /storedata POSTs:
When my app posts the JSON above to your /storedata endpoint, after you create the file on S3
you must return a 200 status code and the following JSON:
{
“s3uri”: “”
}
Marking Rubric
In this class I’m not very concerned about the quality of the code you write, if you write bad
quality code it is you that will suffer in maintaining and supporting it (especially on your
project). I care that you can meet the learning objectives defined at the top of this document,
and I can verify this by simply verifying the correct behaviour of your app’s interaction with
mine.
Your submission will be marked by the app that I will write, my app will:
• Listen for requests to /begin, and initiate the check process
• The check process:
1. Records the IP you send to /begin in DynamoDB
2. Sends a POST to your IP’s /storedata endpoint
3. Retrieves the file from the URL you returned
4. Verifies that the file contains the correct string
Your mark is entirely based on the success of steps 1 – 4:
• Your app posts to /begin from an AWS IP address – 50%
• Your app stores a file on S3 and returns the URL when /storedata is called – 25%
• The file from S3 retrieved via the returned URL contains the string sent to your app –
25%
I will build my app such that only the performance of your most recent call to /begin counts
towards grading.
Because your mark is entirely results based it makes sense for you to spend time testing to
ensure it works! I again recommend that you use a tool like POSTman to test your app’s
behaviour.
How To Submit
Submit a zip file (one file only) of your application’s code to the Brightspace submission folder.
This will count as a submission placeholder for my script to assign you a grade, and allow us to
run MOSS on everyone’s code to check academic integrity.
I will publish the IP of my running app a few days before the assignment deadline, I will leave it
running. You must build, provision and execute your app such that it makes its call to /begin
before the assignment deadline.
CSCI4145/5409