Uploading files to the cloud is a common feature in modern web and mobile applications. AWS Amplify provides a seamless way to integrate file upload functionality with scalable cloud storage. This guide walks through the process of uploading files using AWS Amplify Storage, making it simple and efficient for developers to integrate into their apps.

What Is AWS Amplify?

AWS Amplify is a powerful set of tools and services that enables developers to build full-stack web and mobile applications backed by AWS. It offers authentication, APIs, storage, and more—all with minimal configuration.

Setting Up AWS Amplify for File Uploads

To enable file uploads, AWS Amplify utilizes Amazon S3 for cloud storage. Here’s how to configure the setup:

  1. Install Amplify CLI

    bash
    npm install -g @aws-amplify/cli
  1. Initialize Amplify in Your Project

    bash
    amplify init
  1. Add Storage

    bash
    amplify add storage
  • Choose Content (Images, audio, video, etc.) 
  • Provide a friendly name and bucket name 
  • Set auth and guest access permissions 
  1. Push Configuration to AWS

    bash
    amplify push

Uploading Files Using Amplify Storage

With Amplify configured, files can be uploaded using the Storage.put() method:

javascript

import { Storage } from ‘aws-amplify’;

async function uploadFile(file) {

  try {

    const result = await Storage.put(file.name, file, {

      contentType: file.type,

    });

    console.log(‘Upload successful:’, result);

  } catch (error) {

    console.error(‘Upload failed:’, error);

  }

}

This code uploads the selected file to the configured Amazon S3 bucket and returns the upload result.

Handling Permissions

Ensure that authenticated and/or guest users have the appropriate read/write permissions in amplify/backend/storage/yourResource/cli-inputs.json.

Benefits of Using AWS Amplify for File Uploads

  • Scalability: Handles growing file storage needs without manual infrastructure management. 
  • Security: Integrates with Amazon Cognito for secure file access. 

Ease of Integration: Minimal code required to implement in web or mobile applications.