What you’ll learn
  • how file uploads are handled by the deployed cloud infrastructure and application code

Diagram
anchor

For brevity, the diagram doesn’t include network-level cloud infrastructure resources, like region, VPC, availability zones, and so on. Check out the Deployment Modes section if you’re interested in that aspect of the deployed cloud infrastructure.

Note that the stateful resources like Amazon S3, Amazon Cognito, Amazon DynamoDB and Amazon ElasticSearch are deployed as part of the Core project application. These are still included in the diagram, just so it’s more clear to the reader.

Webiny Cloud Infrastructure - API - File UploadWebiny Cloud Infrastructure - API - File Upload
(click to enlarge)

Description
anchor

The diagram shows what happens every time a client tries to upload a binary file.

To provide file upload functionality, the File Manager application relies on a method called pre-signed POST payload. Once certain conditions are met, the method enables uploading files directly to an S3 bucket, which is significantly more efficient than having the file travel through multiple cloud infrastructure resources.

Learn more

If you want to learn more, feel free to check out a blog post we wrote on this exact subject and which explains the process in detail.

The flow consists of the following three steps:

  1. The client issues a GraphQL HTTP request which instructs the GraphQL Handler C to generate the necessary pre-signed POST data.
  2. Once the client receives the pre-signed POST data, in a new POST HTTP request, the data, and the actual file are uploaded to the S3 bucket H1.
  3. Finally, another GraphQL request is issued, which instructs the GraphQL Handler C to store the file meta data. The data is stored both in Amazon DynamoDB F and Amazon ElasticSearch Service G.

FAQ
anchor

Who Can Upload Files?
anchor

Only users with proper permissions can perform file uploads. Both authentication and authorization are performed in steps one and three, on the GraphQL Handler c.

Is There a Way to Define a Maximum File Upload Size?
anchor

Yes, by going into the File Manager’s general settings section, and manually entering the appropriate values.

File Manager SettingsFile Manager Settings
(click to enlarge)