S3 (Simple storage service)
- AWS에서 제공하는 Object Storage
- Data를 Object 단위로 저장/관리하는 구조
- Tree 구조 없이 무제한 확장성이 보장된 평면 주소 공간
개념
- Bucket : S3에서 Data를 저장하는 단위, 이름은 Region 단위로 유일해야 한다.
- Object : 저장되는 파일, Key + Metadata(크기, 생성 날짜, 태그 등)
- Key : 객체의 경로
- Region : Buckey이 생성된 AWS Region
- Namespace(Registry) : Bucket 간 충돌을 방지하기 위한 최상위 구역
Bucket 생성

- Account Regional namespace로 변경한다.




- 여기에 이제 파일을 올릴 수 있다. 3-tier 폴더를 만들었다.

- Static에는 html, favicon 같은 정적파일만 올린다.

- Dynamic에는 python 파일을 올린다.

- DB용 sql 파일도 올려준다. 여기까지하면 S3에 모든 파일을 다 올린 것이다. 이제 이걸로 BASTION을 사용해서 직접 올리는 것이 아니고, S3에서 받아다가 쓰는 것이다.

- IAM으로 들어가서 역할을 하나 만들어야 한다. > 역할 > 역할 생성

- 사용 사례 AWS 서비스, EC2를 선택한다.

- 권한 정책 : S3 > FullAccess > 이름 입력 : s3FullAccessRole



- EC2로 간다. 그리고 해당 역할을 부여해야 한다.
- NGINX 인스턴스부터 설정한다 > 작업 > 보안 > IAM 역할 수정

- IAM 역할 업데이트를 한다. 인스턴스는 S3dp 접근할 수 있는 권한을 받았다.

- 실제로 접근되는지를 확인해본다. NGINX ip 확인(10.17.1.156)인 것 확인한다. 올바르게 들어갔다.

- awscli 설치해야 한다. (우분투는 제대로 안될수도 있다.)
sudo apt update
apt install awscli
# 설치 안되는 경우
sudo apt update && sudo apt install unzip -y
# NGINX 에서 실행
cd ~
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
sudo apt update && sudo apt install unzip -y
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
# 설치 확인
aws --version
- Storage에 있는 것을 복사해오는 방법,
- 중요! : AccessRole이 3개에 모두 적용되어야 한다.
# Static
aws s3 cp s3://<<storage>>/static ~/static --recursive --region ap-northeast-2
# Dynamic
aws s3 cp s3://<<storage>>/dynamic ~/dynamic --recursive --region ap-northeast-2
# DB
aws s3 cp s3://<<storage>>/db ~/db --recursive --region ap-northeast-2
![업로드중..]()