일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- touch event
- 클린코드
- Github Pages
- Next.js
- bucket
- dependabot
- multer-s3
- 반응형
- fly.io
- node.js
- 배포
- aws-sdk
- heroku
- gh-pages
- naver api
- dependencies
- npm-check-updates
- Web Storage
- php
- AWS
- createRoot
- qoddi
- react18
- .eslintrc
- package.json
- GitHub
- s3
- react
- CSS
- hooks
- Today
- Total
Ann's log
[AWS] Heroku로 배포한 Node.js 서버에서 AWS S3 사용하기-2 본문
이 글에서 정리하는 내용:
- AWS-SDK 사용하기
- AWS Access Key 발급하기
- Multer-S3 사용하기
AWS-SDK 사용하기
SDK(Software Development Kit)란 특정한 소프트웨어나 플랫폼을 이용해서 소프트웨어를 개발할 때 이를 돕는 개발도구의 집합이라고 한다. (출처)
따라서 AWS-SDK는 개발 환경에서 AWS를 더 쉽게 사용할 수 있게 해주는 패키지이다.
AWS Access key 발급하기
AWS-SDK를 사용하기 전에 먼저 엑세스 키가 필요하다.
1. 오른쪽 상단의 내 계정 이름을 클릭하고, 보안 자격 증명을 클릭한다.
2. 스크롤을 내리다가 엑세스키 생성하기 버튼이 보이면 클릭한다.
버튼을 클릭하면 생성된 access key id와 secret access key를 볼 수 있고, 이것을 내 프로젝트에서 heroku config vars로 설정하여 다른 사람들에게는 보이지 않게 사용하면 된다.
설치하기
npm install aws-sdk
Node.js 에서 사용하기
// aws-sdk 사용
const AWS = require("aws-sdk");
AWS.config.update({
accessKeyId: parseDataS3.ACCESS_KEY_ID,
secretAccessKey: parseDataS3.SECRET_ACCESS_KEY,
region: 'us-east-1',
});
(일단 개발 환경에서 테스트하기 위해 accessKeyId와 secretAccessKey는 다른 파일에서 정보를 가져오도록 하였다.)
(배포시에는 config vars 설정 후 process.env.를 사용하면 된다)
Multer-S3 사용하기
현재 프로젝트에서는 이미지를 업로드하기 위해 Multer 패키지만 사용하고 있었는데, S3를 사용하기 위해서는 Multer-S3 패키지를 추가적으로 설치해야 한다.
Multer-S3는 AWS S3 사용을 위한 multer 스토리지라고 한다.
설치하기
npm install --save multer-s3
Node.js에서 사용하기
const multer = require('multer');
const multerS3 = require('multer-s3');
const upload = multer({
storage: multerS3({
s3: new AWS.S3(),
bucket: `${parseDataS3.BUCKET_NAME}`,
key: function (req, file, cb) {
cb(null, `upload/${file.originalname}`);
}
})
});
(여기서 bucket name은 다른 파일에서 정보를 가져오도록 하였다.)
생성한 S3 bucket 내의 upload라는 폴더 안에 업로드한 파일을 넣어주기 위해 `upload/${file.originalname}` 위치를 지정하였다.
console.log(file)을 실행해보면 이러한 정보를 담고 있다는 것을 볼 수 있기 때문에 필요한 정보를 골라서 적절히 사용해주면 된다.
이미지 업로드 함수는 이렇게 작성하였다.
// 이미지 업로드
app.post('/image', upload.single('image'), (req, res) => {
const file = req.file;
res.send({
imageUrl: file.location
})
})
(여기서 app은 express를 사용함.)
일단 여기까지 하고 테스트 해봤을때는 성공적으로 S3 bucket에 파일이 업로드 되고, 업로드한 파일을 페이지에서 볼 수 있다!! 😁
몇가지 더 수정한 뒤에 배포하고 잘 되는지 또 테스트 해봐야겠다!
→ (2022.5.25) 배포 후에 다시 테스트 해본 결과, 문제가 없는 것을 확인했다!
참고:
https://docs.aws.amazon.com/ko_kr/sdk-for-javascript/v2/developer-guide/getting-started-nodejs.html
https://velog.io/@gbskang/Heroku%EC%97%90%EC%84%9C-AWS-S3-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0
'AWS' 카테고리의 다른 글
[AWS] Heroku로 배포한 Node.js 서버에서 AWS S3 사용하기-1 (0) | 2022.05.19 |
---|---|
[AWS] IAM 생성하기 (0) | 2022.02.20 |