[AWS] S3

youngseo·2022년 12월 23일
0

AWS

목록 보기
2/4

S3

  • s3의 경우, 사용하는 모든 종류의 파일을 저장할 수 있으며 저장된 파일을 hosting해 정적사이트로 만들 수도 있습니다.
  • s3의 경우 기본이 글로벌이기 때문에, 따로 리전을 설정하지 않아도 됩니다.
  • 버킷안에 모든 파일이 들어간다고 생각을 하면 됩니다.

1. 버킷 만들기

  • 버킷을 만들때는 언제나 고유해야하며, 공백이나 대문자가 포함되지 않아야합니다.
  • 버킷을 사용할 때 사용하는 리전은 버킷의 위치라고 생각하면 쉽습니다.
  • 퍼블릭 엑세스란?
    • 버킷에 넣어둔 파일을 누가 가져가 사용할 수 있는지를 설정하는 것입니다.
    • 퍼블릭 엑세스를 허용하는 경우 악의적인 공격을 받았을 때 비용이 굉장히 많이 발생할 수 있습니다.
    • 보통은 퍼블릭 엑세스를 차단하는 것이 이상적입니다.
    • 차단을 한 경우 aws sdk를 통해서 어플리케이션단에서 파일을 엑세스를 할 때 내가 가지고 있는 권한 정보를 s3에 보내고 허락을 받아 다운받습니다.
    • 또한, 이 권한설정은 iam(리소스에 대한 엑세스관리)에서 사용자를 추가해 설정이 가능합니다.
  • 버킷 버전 관리
    • 버전이 중요한 경우 활성화
  • 태그
    • 네임은 꼭 적어주는 것이 좋은 것 같다.
  • 서버측 암호화
    • 추가설정이 필요
  • 파일 업로드
    • 스토리지 클래스가 중요.
    • input, output에 대한 빈도가 다른것에 대해 세팅을 할 수 있습니다.
  • s3에 올라온 각각의 파일에 대해서는 객체라는 표현을 사용합니다.
  • 객체의 url이 중요합니다.
    • 실제로 url을 눌러보면 aceessdenied가 뜹니다.(퍼블릭 에세스를 꺼두었기 때문.)
    • 퍼플릭 설정을 통해 변경할 수 있습니다.

2. aws-sdk 설치하기

코드에서 s3를 사용하기 위해서는, aws-sdk가 필요합니다.

2-1. 설치

2-1-1

  • AWS-SAMPLE이라는 폴더를 만들고 폴더 내부에 pem파일을 위치시킵니다.

2-1-2 설치

$ npm install aws-sdk

//실행파일 만들기
$ touch index.js

2-1-3 pakage.json

  "scripts": {
    "start": "nodemon index.js"
  },

2-1-4 적합한 permission설정

  1. aws홈페이지에서 iws를 검색해 사용자추가
  2. 기존 정책 직접 연결을 통해 권한 설정을 해줄 수 있습니다.
  3. 사용자 추가 후 나온 엑세스 코드를 연결해줘야합니다.
  • s3 configuration설정
  • 요약: 발급받은 정보를 각각의 파일안에 넣어 사용해도 괜찮고 또는 제일 상단에 ~/.aws/credentials안에다가 파일을 만들어 사용해도 괜찮음

  1. index.js작성
// Load the SDK for JavaScript
var AWS = require("aws-sdk");
// Set the Region
AWS.config.update({
  region: "us-west-2",
  accessKeyId: "AKIASJFK7DVS6ILZQYES",
  secretAccessKey: "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",
});

// Create S3 service object
s3 = new AWS.S3({ apiVersion: "2006-03-01" });

// Call S3 to list the buckets
s3.listBuckets(function (err, data) {
  if (err) {
    console.log("Error", err);
  } else {
    console.log("Success", data.Buckets);
  }
});

0개의 댓글