notepilot / src /lib /s3-artifacts.ts
jasonmdong's picture
Sync from GitHub via hub-sync
c057aea verified
Raw
History Blame Contribute Delete
1.46 kB
import {
PutObjectCommand,
GetObjectCommand,
DeleteObjectCommand,
HeadObjectCommand,
} from "@aws-sdk/client-s3";
import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
import { s3, S3_BUCKET_NAME } from "./s3";
export async function uploadArtifact(params: {
key: string;
body: Buffer | string;
contentType: string;
}) {
await s3.send(
new PutObjectCommand({
Bucket: S3_BUCKET_NAME,
Key: params.key,
Body: params.body,
ContentType: params.contentType,
})
);
return params.key;
}
export async function getArtifactDownloadUrl(key: string) {
return await getSignedUrl(
s3,
new GetObjectCommand({
Bucket: S3_BUCKET_NAME,
Key: key,
}),
{
expiresIn: 60 * 10,
}
);
}
export async function getArtifactUploadUrl(params: {
key: string;
contentType: string;
}) {
return await getSignedUrl(
s3,
new PutObjectCommand({
Bucket: S3_BUCKET_NAME,
Key: params.key,
ContentType: params.contentType,
}),
{
expiresIn: 60 * 10,
}
);
}
export async function deleteArtifact(key: string) {
await s3.send(
new DeleteObjectCommand({
Bucket: S3_BUCKET_NAME,
Key: key,
})
);
}
export async function artifactExists(key: string) {
try {
await s3.send(
new HeadObjectCommand({
Bucket: S3_BUCKET_NAME,
Key: key,
})
);
return true;
} catch {
return false;
}
}