NodeJs를 사용하여 AWS S3 버킷의 파일에 액세스

여기에서 업로드, 다운로드 및 삭제 방법을 배웁니다.
NodeJs를 사용하는 AWS S3 버킷의 파일

1단계: AWS 계정 생성


  • AWS 계정이 없는 경우 먼저 AWS 계정을 생성해야 합니다
  • .
  • 프리 티어 계정을 생성할 수 있지만 거기에서 카드 세부 정보를 입력해야 합니다
  • .

    2단계: 프로젝트 초기화


  • 폴더를 만들어 바탕 화면이나 어디에서나 's3'이라고 말할 수 있습니다.
    원하는

  • 터미널을 열고 cd 명령을 사용하여 지시하십시오.
  • cd 데스크탑
  • cds3



  • 이제 npm json 파일을 추가합니다.
  • npm 초기화 -y



  • s3 폴더에 'app.js' 파일 생성

  • 3단계: 필수 종속 항목 설치


  • 폴더(예: s3)에 express, aws-sdk 및 multer를 설치합니다.
  • npm install express aws-sdk multer multer-s3




  • 4단계: S3 버킷 설정


  • AWS 콘솔 열기
  • 이제 거기에서 S3를 검색한 다음 S3를 엽니다
  • 버킷 생성 옵션을 클릭합니다
  • .
  • 이름과 지역을 설정하고 ☑️ '모든 공개 액세스 차단'을 선택 취소합니다
  • .
  • select✅ '새 퍼블릭 버킷 또는 액세스 포인트 정책을 통해 부여된 버킷 및 객체에 대한 퍼블릭 액세스 차단'
    및 '퍼블릭 버킷 또는 액세스 포인트 정책을 통해 버킷 및 객체에 대한 퍼블릭 및 교차 계정 액세스 차단'
  • 버킷 만들기 클릭

  • 버킷이 생성된 것을 축하합니다.

    5단계: AWS 자격 증명 생성


  • 먼저 'Innominds'를 클릭합니다.
  • 그런 다음 '내 보안 자격 증명'을 클릭합니다
  • .
  • 그런 다음 '액세스 키'를 클릭한 다음 '새 액세스 키 만들기'를 클릭합니다
  • 여기에서 액세스 키를 얻을 수 있습니다
  • .

    6단계: .env 파일 만들기


  • s3 폴더에 .env 파일 생성

  • .env 파일 내부에 다음을 입력하십시오.
  • ACCESS_KEY = (액세스 키)
  • ACCESS_SECRET = (비밀 액세스 키)
  • 지역 = (버킷 지역)
  • BUCKET = (버킷 이름)




  • 7단계: 익스프레스 서버 만들기


  • 'app.js' 파일 내부에 익스프레스 서버 생성
  • 's3' 폴더에 .env 파일을 추가하는 것을 잊지 마십시오.
    -npm i dotenv
  • 익스프레스 서버에서 aws-sdk, multer, multer-s3와 같은 이전에 언급한 모든 라이브러리를 선언합니다
  • .

    8단계: aws-sdk와 함께 multer를 사용하여 파일에 액세스



    다음은 Express 서버의 표준 예입니다.



    require("dotenv").config()

    const 익스프레스 = 요구('익스프레스')

    const 앱 = 익스프레스();

    app.listen(3001);

    const aws = 요구('aws-sdk')
    const multer = 요구('multer')
    const multerS3 = 요구('multer-s3');

    aws.config.update({
    secretAccessKey: process.env.ACCESS_SECRET,
    accessKeyId: process.env.ACCESS_KEY,
    지역: process.env.REGION,

    });
    const 버킷 = process.env.BUCKET
    const s3 = new aws.S3();

    const 업로드 = multer({
    저장: multerS3({
    s3: s3,
    acl: "공개 읽기",
    양동이: 양동이,
    키: 기능(요청, 파일, cb) {
    console.log(파일);
    cb(널, 파일.원본이름)
    }
    })
    })

    app.post('/upload', upload.single('file'), 비동기 함수(req, res, next) {

    res.send('Successfully uploaded ' + req.file.location + ' location!')
    

    })

    app.get("/list", async (req, res) => {

    let r = await s3.listObjectsV2({ Bucket: BUCKET }).promise();
    let x = r.Contents.map(item => item.Key);
    res.send(x)
    

    })

    app.get("/download/:filename", async (req, res) => {
    const 파일 이름 = req.params.filename
    let x = await s3.getObject({ 버킷: BUCKET, 키: 파일 이름 }).promise();
    res.send(x.본문)
    })

    app.delete("/delete/:filename", async (req, res) => {
    const 파일 이름 = req.params.filename
    await s3.deleteObject({ 버킷: BUCKET, 키: 파일 이름 }).promise();
    res.send("파일 삭제 성공")

    })

    좋은 웹페이지 즐겨찾기