Private File Upload
Build on Spring Cloud & AWS S3
## Table of Contents
* [About the Project](#about-the-project)
* [Built With](#built-with)
* [Getting Started](#getting-started)
* [Prerequisites](#prerequisites)
* [Installation](#installation)
* [Usage](#usage)
* [Contact](#contact)
* [Acknowledgements](#acknowledgements)
## About The Project
### Built With
- Spring Boot
- Spring Cloud
- AWS S3
- âï¸ & â¤ï¸
## Getting Started
### Prerequisites
In order to run this application you should have an Amazon Web Services (AWS) account.
### Installation
1. Update the `application.yaml` settings value for `cloud.aws.credentials.profile-name` to the name of your local AWS-profile
2. run `./gradlew bootRun`
3. Open your browser at `localhost:8080`
## Usage
The application wraps a lot of S3-related API calls in easy to use UI elements to
- create/delete buckets (mapped as "spaces" so we can give them non-unique names)
- upload/delete files
- make files public/private
- create pre-signed URLs for files
- create bucket policy rules to set the lifecycle duration for elements
More detailed instructions can be found here:
𪣠Create a bucket
1. Navigate to the _Spaces_ section
2. Click on _New Space_
3. Enter the name and click _Submit_
4. A message should pop up to indicate success
ð Upload a File
1. Navigate to the _Spaces_ section
2. Select _Details_ on the target Space/Bucket
3. Click on _Upload File_
4. Pick our file, provide a name and click _Submit_
5. A message should pop up to indicate success
ð List all Objects in a Bucket
1. Navigate to the _Spaces_ section
2. Select _Details_ on the target Space/Bucket
3. You see a list of all objects stored in the bucket
ð Get an Object's URL
1. Navigate to the _Spaces_ section
2. Select _Details_ on the target Space/Bucket
3. Select _Download_ on the target object
4. The object's URL shall be opened in a new tab
ð¢ Make an object public
1. Navigate to the _Spaces_ section
2. Select _Details_ on the target Space/Bucket
3. Select _Make Public_ on the target object
4. A message should pop up to indicate success
𤫠Make an Object private
1. Navigate to the _Spaces_ section
2. Select _Details_ on the target Space/Bucket
3. Select _Make Private_ on the target object
4. A message should pop up to indicate success
ð¥ Delete an Object
1. Navigate to the _Spaces_ section
2. Select _Details_ on the target Space/Bucket
3. Select _Delete_ on the target object
4. The list of objects should reload without the deleted one
âï¸ Delete a Bucket
1. Navigate to the _Spaces_ section
2. Select _Delete_ on the target Space/Bucket
3. The list of buckets should reload without the deleted one
ð¾ Generate a pre-signed URL
1. Navigate to the _Spaces_ section
2. Select _Details_ on the target Space/Bucket
3. Select _Magic Link_ on the target object
4. A message should pop up, containing a pre-signed URL for that object (which is valid for 15 minutes)
â³ Set Expiration on Bucket
1. Navigate to the _Spaces_ section
2. Select _Make Temporary_ on the target Space/Bucket
3. Select _Delete_ on the target object
4. A message should pop up to indicate success
## Contact
Joshua Görner - [jgoerner](https://www.linkedin.com/in/jgoerner/) - joshua.goerner[at]gmail.com
## Acknowledgements
* [O. Drew](https://github.com/othneildrew/Best-README-Template) - nice GH Readme template
* [Hatchful](https://hatchful.shopify.com/) - Easy Logo Generation