[Multer-S3] S3 버킷 전체 목록 불러오기
S3 버킷 전체 목록 불러오기
require('dotenv').config()
const express = require('express')
const app = express();
const PORT = 9000;
const multer = require('multer')
const multerS3 = require('multer-s3')
const AWS = require('aws-sdk');
// ! s3 객체 생성
const s3 = new AWS.S3({
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY_ID,
region: 'ap-northeast-2',
params: {
Bucket: process.env.BUCKET_NAME
}
});
// ! 3. s3 버킷 전체 목록가져오기
function listObjects(params) {
s3.listObjectsV2(params, (err, data) => {
// console.log(s3)
// console.log(data)
// console.log(data.Contents)
// console.log(data.Key) // ! undefined
// console.log(data.Contents.Key) // ! undefined
// ! S3 버킷 내 사진 이름만 가져오기
const buket_list = data.Contents;
buket_list.forEach((content) => {
lists.push(content.Key)
})
console.log(lists)
})
}
// ! 3. s3 버킷 전체 목록 가져오기
app.get('/list', (req, res) => {
res.send(listObjects())
})
app.listen(PORT, () => {
console.log(`listen on ${PORT}`)
})
PostMan Test
require('dotenv').config()
const express = require('express')
const app = express();
const PORT = 9000;
const multer = require('multer')
const multerS3 = require('multer-s3')
const AWS = require('aws-sdk');
// ! s3 객체 생성
const s3 = new AWS.S3({
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY_ID,
region: 'ap-northeast-2',
params: {
Bucket: process.env.BUCKET_NAME
}
});
// ! 3. s3 버킷 전체 목록가져오기
function listObjects(params) {
s3.listObjectsV2(params, (err, data) => {
// console.log(s3)
// console.log(data)
// console.log(data.Contents)
// console.log(data.Key) // ! undefined
// console.log(data.Contents.Key) // ! undefined
// ! S3 버킷 내 사진 이름만 가져오기
const buket_list = data.Contents;
buket_list.forEach((content) => {
lists.push(content.Key)
})
console.log(lists)
})
}
// ! 3. s3 버킷 전체 목록 가져오기
app.get('/list', (req, res) => {
res.send(listObjects())
})
app.listen(PORT, () => {
console.log(`listen on ${PORT}`)
})
- Get메소드로 S3 버킷에 있는 목록 불러오는 것을 요청했다.
Result
- console.log(s3)
Service {
config: Config {
credentials: Credentials {
expired: false,
expireTime: null,
refreshCallbacks: [],
accessKeyId: 'ACCESS_KEY_ID',
sessionToken: undefined
},
credentialProvider: CredentialProviderChain {
providers: [Array],
resolveCallbacks: []
},
region: 'ap-northeast-2',
logger: null,
apiVersions: {},
apiVersion: null,
endpoint: 'S3 엔드포인트',
httpOptions: { timeout: 120000 },
.
.
.
.
.
accessKeyId: 'ACCESS_KEY_ID',
secretAccessKey: 'SECRET_ACCESS_KEY_ID',
params: { Bucket: 'BUCKET_NAME' }
},
isGlobalEndpoint: false,
endpoint: Endpoint {
protocol: 'https:',
host: 'S3 엔드포인트',
port: 443,
hostname: 'S3 엔드포인트',
pathname: '/',
path: '/',
href: 'https://S3 엔드포인트/'
},
_events: {
apiCallAttempt: [ [Function: EVENTS_BUBBLE] ],
apiCall: [ [Function: CALL_EVENTS_BUBBLE] ]
},
MONITOR_EVENTS_BUBBLE: [Function: EVENTS_BUBBLE],
CALL_EVENTS_BUBBLE: [Function: CALL_EVENTS_BUBBLE],
_clientId: 1
}
- console.log(data)
- console.log(data.Contents)
- console.log(lists)
🚨 Problem
Service {
config: Config {
credentials: Credentials {
expired: false,
expireTime: null,
refreshCallbacks: [],
accessKeyId: 'ACCESS_KEY_ID',
sessionToken: undefined
},
credentialProvider: CredentialProviderChain {
providers: [Array],
resolveCallbacks: []
},
region: 'ap-northeast-2',
logger: null,
apiVersions: {},
apiVersion: null,
endpoint: 'S3 엔드포인트',
httpOptions: { timeout: 120000 },
.
.
.
.
.
accessKeyId: 'ACCESS_KEY_ID',
secretAccessKey: 'SECRET_ACCESS_KEY_ID',
params: { Bucket: 'BUCKET_NAME' }
},
isGlobalEndpoint: false,
endpoint: Endpoint {
protocol: 'https:',
host: 'S3 엔드포인트',
port: 443,
hostname: 'S3 엔드포인트',
pathname: '/',
path: '/',
href: 'https://S3 엔드포인트/'
},
_events: {
apiCallAttempt: [ [Function: EVENTS_BUBBLE] ],
apiCall: [ [Function: CALL_EVENTS_BUBBLE] ]
},
MONITOR_EVENTS_BUBBLE: [Function: EVENTS_BUBBLE],
CALL_EVENTS_BUBBLE: [Function: CALL_EVENTS_BUBBLE],
_clientId: 1
}
PostMan
을 이용해서 요청을 했지만, 데이터를 받아오진 못했음.
위의 정보는 console.log
로 찍어서 나온것임.
그렇다면 res.send
로 데이터를 나오게 하려면 어떻게 해야할까? 😭
Author And Source
이 문제에 관하여([Multer-S3] S3 버킷 전체 목록 불러오기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@reveloper-1311/Multer-S3-S3-목록-불러오기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)