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

- index.js작성
var AWS = require("aws-sdk");
AWS.config.update({
region: "us-west-2",
accessKeyId: "AKIASJFK7DVS6ILZQYES",
secretAccessKey: "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",
});
s3 = new AWS.S3({ apiVersion: "2006-03-01" });
s3.listBuckets(function (err, data) {
if (err) {
console.log("Error", err);
} else {
console.log("Success", data.Buckets);
}
});