name | slug | description | framework | deployUrl |
---|---|---|---|---|
AWS S3 Image Upload |
aws-s3-image-upload |
Learn to use AWS S3 to upload images to your bucket. |
Next.js |
This is an example of a Next.js application allowing you to upload photos to an S3 bucket.
Option 1: Use an existing S3 bucket.
Retrieve your existing access key, secret key, S3 bucket region and name. Provide those values after clicking "Deploy" to automatically set the environment variables.
Option 2: Create an S3 bucket.
- Create a new IAM User:
- Choose programatic access.
- Select "Attach existing policies directly"
- Add
AmazonS3FullAccess
.
- Save the access key and secret key for the IAM User.
- This is used for programmatic access in the API Route.
- Install the AWS CLI:
- Run
aws configure
. - Enter your root AWS user access key and secret key.
- Enter your default region.
- Run
- Create an
.env.local
file similar to.env.example
.- Enter your access key and secret key from the IAM user.
- Run
cdk bootstrap
. - Run
cdk deploy
to create an S3 bucket with an IAM policy. - Visit your newly created S3 bucket and retrieve the name and region.
- Add the name and region to
.env.local
. - Run
yarn dev
to start the Next.js app atlocalhost:3000
. - Choose a
.png
or.jpg
file. - You should see your file successfully uploaded to S3.
This example uses createPresignedPost
instead of getSignedUrlPromise
to allow setting max/min file sizes with content-length-range
.
yarn dev
– Starts the Next.js app atlocalhost:3000
.cdk deploy
– Deploy this stack to your default AWS account/regioncdk diff
– Compare deployed stack with current statecdk synth
– Emits the synthesized CloudFormation template
Execute create-next-app
with npm or Yarn to bootstrap the example:
npx create-next-app --example https://github.com/vercel/examples/tree/main/solutions/aws-s3-image-upload aws-s3-image-upload
# or
yarn create next-app --example https://github.com/vercel/examples/tree/main/solutions/aws-s3-image-upload aws-s3-image-upload
Copy the .env.example
file in this directory to .env.local
and set your AWS settings
cp .env.example .env.local
Next, run Next.js in development mode:
npm install
npm run dev
# or
yarn
yarn dev
Deploy it to the cloud with Vercel (Documentation).