배포를 위해 aws cli라는 친구와 조우해보자
인터넷에 연결된 컴퓨터 각각을 호스트라 칭한다. 컴퓨터를 빌려주는 사업을 호스팅이라고 한다. 그럼 호스팅의 원리를 알아보장
나(index.html) -> 호스팅업체(index.html -> Web Server) <-> visitor(Web Brower)
이런 식으로 서버에 미리 저장된 파일(html, js 등)이 그대로 전달되는 웹페이지를 정적 웹 페이지라고 한다. 서버는 사용자가 요청에 해당되는 저장된 웹 페이지를 내보낸다. 사용자는 서버에 저정된 데이터가 변하지 않는 한 고정된 웹 페이지를 본다.
그러면 동적 웹 페이지란 사용자의 요청, 시간 등에 따라 페이지가 변경되어 보여지는 웹 페이지다!
배포 과정을 단순화 하면
PaaS
Saas
엣지 로케이션(Edge Location)
Computing
EC2(Elastic Compute Cloud)
ECS(EC2 Container Service)
EB(Elastic Beanstalk)
AWS Lambda
AWS의 클라우드 Function 서비스. 서버 없이 작성한 코드를 실행하는 환경을 제공하는 서비스다.(serverless 아키텍쳐 구현에 사용)
ELB(Elastic Load Balancing)
Auto Scaling
AMI(Amazon Machine Images)
Storage
S3
스냅샷
Glacier
Networking
CloudFront
프론트란 말이 들어가서 뭔가 프론트엔드랑 친숙한 개념인가 했지만 전혀 다른 AWS의 CDN 서비스. 리전에 상관없이 엣지 로케이션 기준으로 가장 가까운 곳에서 파일 캐시를 가져오기 때문에 속도 빠르고 EC2, S3로 서비스 제공하는 것보다 더 저렴
Route 53
VPC(Virtual Private Cloud)
AMI(Amazon Machine Image)는 소프트웨어 설정 탬플릿이다. 소프트웨어 구성(운영체제, 어플리케이션 서버, 애플리케이션)을 선택할 수 있는 단계다.
CPU, 메로리, 스토리지 등 네트워크 용량 조합을 선택할 수 있다.
네트워크
서브넷
보안그룹에서 프로토콜이나 리소스, 포트 등을 선택해서 어떤 트래픽이 인스턴스에 도달할 수 있는지에 대한 규칙을 정한다. 인터넷 트래픽을 인스턴스에 도달하도록 하는 경우 HTTP, HTTPS 트래픽을 허용하고, 어떤 전송 방식을 사용할지, 어떤 포트를 통해 접속할지에 대해 정할 수 있다.
AWS에 파일을 업로드 되면 독립적인 다른 리전에 분산되어 저장된다. 내구성이 아주 좋아서 스토리지로 좋다. 또한 버전 관리 기능도 제공한다!
버킷 생성하기
버킷
AWS Command Line Interface(AWS CLI)는 명령줄 셸의 명령을 사용하여 AWS 서비스와 상호 작용할 수 있는 오픈 소스 도구, 터미널로 AWS를 제어할 수 있는 것!
brew install awscli
Users/user/.aws/
├── config
└── credentials
config는 output, region이 있다. output은 aws cli로 부터 응답을 받는 형식(json 등) 그리고 region은 aws region이다
crenditals엔 Access Key ID, Secret Access Key를 입력한다.
AWS 인증 정보 개념
Access Key ID: 일반 웹사이트의 아이디에 해당. 줄여서 Aceess Key(접근키)라고 부르기도 함.
Secret Access Key: 일반 웹사이트의 비밀번호에 해당. 줄여서 Secret Key(보안키)라고 부르기도 함.
인증 정보 설정
매번 AWS를 호출할 때 마다 위에 생성한 Access Key ID와 Secret Access Key를 보내려면 클라이언트 측에서 설정이 필요하다. AWS CLI는 aws configure를 통해 커맨드로 인증 정보 설정을 제공한다.
$ aws configure
AWS Access Key ID [None]: ABCDEF
AWS Secret Access Key [None]: GHIJKL
Default region name [None]: ap-northeast-2
Default output format [None]: json
이런 식이다!
aws configure
초기에 이렇게 설정하고
aws configure --profile "프로필명"
터미널에 입력하면 자격 증명을 저장한다. (여러 쌍의 인증 정보 저장)
aws configure list
로 설정한 인증 정보를 확인할 수 있다.
cat ~/.aws/credentials
인증 정보 파일을 확인할 수 있다.
Amazon S3에 데이터를 저장하려면 먼저 버킷을 생성해야 한다. 버킷은 S3에서 파일 시스템의 최상위 디렉토리나 드라이브 정도 역할을 하는 저장 단위 개념!
aws s3 mb
을 통해 생성한다.
aws s3 mb s3://버킷명
이렇게 생성하면 된다!
aws s3 ls
이렇게 버킷 목록을 조회할 수 있다.
먼저 로컬에 버킷 이름과 동일한 디렉토리를 생성한다. 그리고 touch로 파일을 생성한다.
aws s3 cp 생성한 로컬 파일 s3://버킷 이름
요렇게 복사한다.
로컬 파일을 복사하지 않고 S3 버킷으로 이동시켜보자!
aws s3 mv 로컬 파일 s3://버킷 이름
그러면 로컬에서는 삭제된다.
aws s3 rm s3://my-fruits/banana.txt
커맨드로 복사/이동했던 파일을 rm으로 삭제할 수 있다.
aws s3 sync . s3://버킷 이름
cp, mv , rm 친구들은 --recursive 옵션을 사용하면 하위 디렉토리까지 적용되어 편하다.
예제를 살펴보장!
먼저 로컬에 디렉토리를 생성하고 그 안에 파일을 만든다.
aws s3 cp . s3://버킷 이름 --recursive
요렇게 하면 하위 디렉토리까지 모두 실행된다.
버킷 제거하기
aws s3 rb s3://버킷 이름
버킷이 비어있지 않으면 삭제가 안된다. 이럴 경우 --force!
aws s3api get-bucket-location --bucket test-bucket
aws s3api put-bucket-lifecycle
를 통해 특정 버킷 라이프 사이클 주기 설정 가능!
예시!
aws s3api put-bucket-lifecycle --bucket test-bucket --lifecycle-configuration
aws s3api get-bucket-lifecycle
aws s3api delete-bucket-lifecycle --bucket test-bucket
aws s3를 통해 aws파일에 접근할 수 있고 s3api를 통해 Restful api처럼 사용할 수 있다.
aws s3api list-objects --bucket test-bucket --prefix css
참고 : https://velog.io/@matisse/AWS-%EB%B0%B0%ED%8F%AC-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC
https://www.youtube.com/watch?v=6P6HoumuTOw&list=PLuHgQVnccGMCFHj64mNZxlbeNWOYUpua4
https://web-front-end.tistory.com/74
https://www.youtube.com/watch?v=f-muwhjan4E
https://www.daleseo.com/aws-cli-configure/
https://jangseongwoo.github.io/aws_cli/aws_cli_basic/#cp-%EB%AA%85%EB%A0%B9%EC%96%B4
동하님 블로그 꾸준히 쓰시네요, 대단합니다. 갓동하