๐Ÿ“Today I Learned

[TIL] nest : S3 ์ด๋ฏธ์ง€-ํผ๋ธ”๋ฆญ ์„ค์ • / nest : app.controller.ts์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์˜ service ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

์•„2 2023. 8. 25. 02:26

โœ… ํ•œ ์ผ

-S3 ์ด๋ฏธ์ง€ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์—๋Ÿฌ ํ•ด๊ฒฐ - ํผ๋ธ”๋ฆญ ์„ค์ •

-๋งˆ์ดํŽ˜์ด์ง€ ํ”„๋ก ํŠธ ์ž‘์—…, ๋ฐฑ์—”๋“œ api ์—ฐ๊ฒฐ ์™„

-๋‚ด ์ •๋ณด ์กฐํšŒ api queryBuilder๋กœ ์…€๋ ‰ํŠธ ๋ณ€๊ฒฝ


โ˜‘๏ธ ๊ธฐ๋ก

๋ชฉ์ฐจ

[S3 ์ด๋ฏธ์ง€ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ-ํผ๋ธ”๋ฆญ ์„ค์ •]
[app.controller.ts์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์˜ service ๋ถˆ๋Ÿฌ์˜ฌ๋•Œ]

 


[S3 ์ด๋ฏธ์ง€ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ-ํผ๋ธ”๋ฆญ ์„ค์ •]

S3 ๋ฐ์ดํ„ฐ์— ์ €์žฅ๋œ URL์— ์ ‘๊ทผํ•˜๋ ค๋ฉด ์•„๋ž˜ ์˜ค๋ฅ˜ ๋ฐœ์ƒ, ๊ถŒํ•œ์ด ์—†์–ด์„œ ๊ทธ๋ ‡๋‹ค.

This XML file does not appear to have any style information associated with it. The document tree is shown below.

 

ํ•ด๊ฒฐ์ฑ… => AWS S3 ๋ฒ„ํ‚ท์ •์ฑ… ์„ค์ •์ด ํ•„์š”ํ•จ.

1. S3 ๋ฒ„ํ‚ท ์ ‘๊ทผ์ด ์žˆ๋Š” IAM ์ƒ์„ฑ ํ›„ ์ •์ฑ… ์„ค์ •

2. aws accesskey IAM ๊ณ„์ •์œผ๋กœ .env์— ์ €์žฅ

3. ๋ฒ„ํ‚ท์— ํด๋”๋ฅผ ALC ํผ๋ธ”๋ฆญ์œผ๋กœ ์ง์ ‘ ์„ค์ •ํ•ด์ค˜์•ผ ํ•จ.


[app.controller.ts์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์˜ service ๋ถˆ๋Ÿฌ์˜ฌ๋•Œ]

 

// users.modules.ts (๋‚ด๋ณด๋‚ผ ๋ชจ๋“ˆ)

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { MulterModule } from '@nestjs/platform-express';
import { UserService } from './users.service';
import { UserController } from './users.controller';
import { UsersEntity } from '../common/entities/users.entity';
import { UploadsService } from 'src/uploads/uploads.service';
import * as multer from 'multer';

@Module({
  imports: [
    MulterModule.register({
      storage: multer.memoryStorage(), // ๋ฉ”๋ชจ๋ฆฌ ์Šคํ† ๋ฆฌ์ง€์— ์ž„์‹œ๋กœ ์ €์žฅํ›„ S3์— ์—…๋กœ๋“œ
    }),
    TypeOrmModule.forFeature([UsersEntity]),
  ],
  controllers: [UserController],
  providers: [UserService, UploadsService],
  exports: [UserService],
})
export class UsersModule {}

 

// app.controller.ts - ๋ฐ›๋Š”๊ณณ์€ ๋‹น์—ฐํžˆ ์ฃผ์ž…ํ•ด์„œ ์‚ฌ์šฉ

  constructor(private readonly userService: UserService) {}