노드 스크립트를 사용하여 S3에 파일을 일괄 업로드하는 방법
2291 단어 nodes3fileuploadjavascript
전제 조건
Amazon s3가 무엇을 사용하는지 이해한다고 가정하겠습니다. 그렇지 않은 경우 여기link를 방문하여 자세히 알아볼 수 있습니다.
업로드 스크립트 작성
// uploadTos3.js
const fs = require('fs');
const readDir = require('recursive-readdir');
const path = require('path');
const AWS = require('aws-sdk');
const mime = require('mime-types');
AWS.config.update({
region: 'ap-south-1',
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.SECRET_ACCESS_KEY,
maxRetries: 3
});
const directoryPath = path.resolve(__dirname, './images');
const getDirectoryFilesRecursive = (dir, ignores = []) => {
return new Promise((resolve, reject) => {
readDir(dir, ignores, (err, files) => (err ? reject(err) : resolve(files)));
});
};
const generateFileKey = fileName => {
const S3objectPath = fileName.split('/images/')[1];
return `website-assets/${S3objectPath}`;
};
const s3 = new AWS.S3();
const uploadToS3 = async () => {
try {
const fileArray = await getDirectoryFilesRecursive(directoryPath, [
'BUILD_ID'
]);
fileArray.map(file => {
// Configuring parameters for S3 Object
const S3params = {
Bucket: 'public-read-bucket',
Body: fs.createReadStream(file),
Key: generateFileKey(file),
ACL: 'public-read',
ContentType: mime.lookup(file),
ContentEncoding: 'utf-8',
CacheControl: 'immutable,max-age=31536000,public'
};
s3.upload(S3params, function(err, data) {
if (err) {
// Set the exit code while letting
// the process exit gracefully.
console.error(err);
process.exitCode = 1;
} else {
console.log(`Assets uploaded to S3: `, data);
}
});
});
} catch (error) {
console.error(error);
}
};
uploadToS3();
참고: 모든 자산을 웹사이트 자산 폴더에 업로드하고 있습니다. 클라우드프론트 배포는 이를 기본 경로로 사용합니다.
명령
node uploadToS3
을 실행하여 모든 파일을 S3 버킷에 업로드합니다.
Reference
이 문제에 관하여(노드 스크립트를 사용하여 S3에 파일을 일괄 업로드하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/gondar00/how-to-bulk-upload-files-to-s3-using-node-script-c37텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)