CSCI4145/5409: Compute & Storage solution

$30.00

Original Work ?
Category: You will Instantly receive a download link for .ZIP solution file upon Payment

Description

5/5 - (2 votes)

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.