Simple use case of Linode Object storage in NodeJS with AWS-SDK for S3. Learn how to handle Linode Objects in plain Javascript.
import { Credentials } from 'aws-sdk';
import S3 from 'aws-sdk/clients/s3';
const s3Client = new S3({
region: process.env.LINODE_OBJECT_STORAGE_REGION,
endpoint: process.env.LINODE_OBJECT_STORAGE_ENDPOINT,
sslEnabled: true,
s3ForcePathStyle: false,
credentials: new Credentials({
accessKeyId: process.env.LINODE_OBJECT_STORAGE_ACCESS_KEY_ID,
secretAccessKey: process.env.LINODE_OBJECT_STORAGE_SECRET_ACCESS_KEY,
}),
});
export async function uploadFileToObjectStorage(base64Data, path, fileName, fileType, extension) {
const params = {
Bucket: process.env.LINODE_OBJECT_BUCKET,
Key: `${path}/${fileName}`,
Body: base64Data,
ACL: 'public-read',
ContentEncoding: 'base64',
ContentType: `${fileType}/${extension}`,
};
// see: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#upload-property
const { Location } = await s3Client.upload(params).promise();
return Location;
}
export async function deleteFileFromObjectStorage(url) {
const Key = url.split(`${process.env.LINODE_OBJECT_STORAGE_ENDPOINT}/`)[1];
const params = {
Bucket: process.env.LINODE_OBJECT_BUCKET,
Key,
};
// see: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#deleteObject-property
// eslint-disable-next-line consistent-return
return s3Client.deleteObject(params).promise();
}