BMAD-METHOD/bmad/bmm/agents/hand-off/serverless-starter/dist/lib/s3.js

19 lines
948 B
JavaScript

import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3';
import { getSignedUrl } from '@aws-sdk/s3-request-presigner';
const REGION = process.env.S3_REGION || 'us-east-1';
const BUCKET = process.env.S3_BUCKET || 'dev-bucket';
let s3 = null;
try {
s3 = new S3Client({ region: REGION });
}
catch (e) { /* ignore */ }
export async function presignPut(key, contentType, expires = 3600) {
const dev = !!process.env.DEV_MODE || !process.env.AWS_ACCESS_KEY_ID;
if (dev) {
return { uploadUrl: `https://dev-upload.local/${key}`, fileUrl: `s3://${BUCKET}/${key}`, expiresAt: new Date(Date.now() + expires * 1000).toISOString() };
}
const cmd = new PutObjectCommand({ Bucket: BUCKET, Key: key, ContentType: contentType });
const url = await getSignedUrl(s3, cmd, { expiresIn: expires });
return { uploadUrl: url, fileUrl: `s3://${BUCKET}/${key}`, expiresAt: new Date(Date.now() + expires * 1000).toISOString() };
}