34 lines
1.2 KiB
Markdown
34 lines
1.2 KiB
Markdown
# once: a one-time file sharing personal service
|
|
|
|
It happens that I want to share a file with someone which is sensitive enough
|
|
that I don't want to upload on a public free service.
|
|
|
|
I would like to have something like transfer.sh, running
|
|
as a personal service, with the following features:
|
|
|
|
- it must be serverless (I'm not willing to pay except for the actual file storage, and only for the time strictly required)
|
|
- it must return a link that I can share to anyone
|
|
- file must be deleted as soon as it get *successfully downloaded*
|
|
- it must expose a simple HTTP API, so *curl* should suffice to share a file
|
|
- it must be protected with some form of authentication
|
|
|
|
With CDK I could create the following resources:
|
|
|
|
- An S3 bucket to host the uploaded files
|
|
- A Lambda function to implement the 'get-upload-ticket'
|
|
- A Dynamodb table to store the information about the entries
|
|
- Another Lambda function to implement a "smart" download handler, to delete the file after the very first successful transfer.
|
|
|
|
I will use API Gateway to expose the lambda functions as an HTTP API.
|
|
|
|
|
|
HERE BE DIAGRAM!
|
|
|
|
|
|
mkdir once
|
|
cd once
|
|
cdk init app
|
|
|
|
Then it should be easy to start organizing the project layout.
|
|
One single stack, one folder for each lambda function.
|