Generate Presigned Download URL

PreviousNext

Generate a presigned download URL for a file.

Docs
utilcnlib

Preview

Loading preview…
registry/default/storage/generate-presigned-download-url.ts
import { GetObjectCommand } from '@aws-sdk/client-s3';
import { getSignedUrl } from '@aws-sdk/s3-request-presigner';

import { getS3Client } from '@/registry/default/storage/s3-client';

export async function generatePresignedDownloadUrl(
  key: string,
  expiresIn = 3600,
) {
  try {
    const command = new GetObjectCommand({
      Bucket: process.env.S3_BUCKET_NAME,
      Key: key,
    });

    const url = await getSignedUrl(getS3Client(), command, { expiresIn });
    return url;
  } catch (err) {
    console.error({ err }, 'Failed to generate download URL');
    throw new Error('Failed to generate download URL');
  }
}

Installation

npx shadcn@latest add @utilcn/generate-presigned-download-url

Usage

import { GeneratePresignedDownloadUrl } from "@/lib/generate-presigned-download-url"
GeneratePresignedDownloadUrl()