From 49e8578b1f816b09d74f6a0e1875fad3514bb411 Mon Sep 17 00:00:00 2001 From: Monixc Date: Tue, 22 Oct 2024 08:16:04 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20AWS=20=EA=B5=90=EA=B3=BC=EC=84=9C=202?= =?UTF-8?q?=EC=9E=A5=20=EA=B0=9C=EB=85=90=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _notes/.trash/AWS Iac 2.md | 0 _notes/.trash/AWS Iac.md | 0 ...0\354\233\220 \352\264\200\353\246\254.md" | 0 .../.space/context.mdb" | Bin 20480 -> 20480 bytes "_notes/AWS \354\240\225\353\246\254/AMI.md" | 13 +++ ...\354\233\220 \352\264\200\353\246\254 .md" | 7 ++ .../AWS \354\240\225\353\246\254.md" | 11 ++ ...S \354\273\264\355\223\250\355\214\205.md" | 8 ++ "_notes/AWS \354\240\225\353\246\254/AWS.md" | 26 ++++- "_notes/AWS \354\240\225\353\246\254/EBS.md" | 7 ++ ...44\355\212\270\354\233\214\355\202\271.md" | 9 ++ ...50\353\213\210\355\204\260\353\247\201.md" | 14 +++ .../EC2 \353\263\264\354\225\210 .md" | 3 + ...44\355\206\240\353\246\254\354\247\200.md" | 15 +++ ...70\354\212\244\355\204\264\354\212\244.md" | 18 ++++ "_notes/AWS \354\240\225\353\246\254/EC2.md" | 16 +++ "_notes/AWS \354\240\225\353\246\254/ENI.md" | 5 + .../IP \354\243\274\354\206\214.md" | 6 ++ "_notes/AWS \354\240\225\353\246\254/VPC.md" | 5 + ...60\355\216\230\354\235\264\354\212\244.md" | 4 + ...4\354\225\210 \352\267\270\353\243\271.md" | 7 ++ .../\354\204\234\353\262\204.md" | 5 + ...50\353\213\210\355\204\260\353\247\201.md" | 3 + ...44\355\206\240\353\246\254\354\247\200.md" | 3 + ...4 \354\212\244\355\206\240\354\226\264.md" | 7 ++ ...70\354\212\244\355\204\264\354\212\244.md" | 25 +++++ ...60\355\216\230\354\235\264\354\212\244.md" | 0 ...50\353\213\210\355\204\260\353\247\201.md" | 6 ++ .../\354\273\264\355\223\250\355\214\205.md" | 4 + .../\355\202\244 \355\216\230\354\226\264.md" | 10 ++ _notes/Amazon CloudWatch.md | 0 ...4\355\202\271 \354\232\224\354\206\214.md" | 99 ++++++++++++++++++ ...\355\202\271 \354\232\224\354\206\214.png" | Bin 0 -> 39801 bytes _notes/Vault.md | 11 ++ 34 files changed, 346 insertions(+), 1 deletion(-) create mode 100644 _notes/.trash/AWS Iac 2.md create mode 100644 _notes/.trash/AWS Iac.md create mode 100644 "_notes/.trash/AWS \354\236\220\354\233\220 \352\264\200\353\246\254.md" create mode 100644 "_notes/AWS \354\240\225\353\246\254/AMI.md" create mode 100644 "_notes/AWS \354\240\225\353\246\254/AWS \354\236\220\354\233\220 \352\264\200\353\246\254 .md" create mode 100644 "_notes/AWS \354\240\225\353\246\254/AWS \354\240\225\353\246\254.md" create mode 100644 "_notes/AWS \354\240\225\353\246\254/AWS \354\273\264\355\223\250\355\214\205.md" create mode 100644 "_notes/AWS \354\240\225\353\246\254/EBS.md" create mode 100644 "_notes/AWS \354\240\225\353\246\254/EC2 \353\204\244\355\212\270\354\233\214\355\202\271.md" create mode 100644 "_notes/AWS \354\240\225\353\246\254/EC2 \353\252\250\353\213\210\355\204\260\353\247\201.md" create mode 100644 "_notes/AWS \354\240\225\353\246\254/EC2 \353\263\264\354\225\210 .md" create mode 100644 "_notes/AWS \354\240\225\353\246\254/EC2 \354\212\244\355\206\240\353\246\254\354\247\200.md" create mode 100644 "_notes/AWS \354\240\225\353\246\254/EC2 \354\235\270\354\212\244\355\204\264\354\212\244.md" create mode 100644 "_notes/AWS \354\240\225\353\246\254/EC2.md" create mode 100644 "_notes/AWS \354\240\225\353\246\254/ENI.md" create mode 100644 "_notes/AWS \354\240\225\353\246\254/IP \354\243\274\354\206\214.md" create mode 100644 "_notes/AWS \354\240\225\353\246\254/VPC.md" create mode 100644 "_notes/AWS \354\240\225\353\246\254/\353\204\244\355\212\270\354\233\214\355\201\254 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244.md" create mode 100644 "_notes/AWS \354\240\225\353\246\254/\353\263\264\354\225\210 \352\267\270\353\243\271.md" create mode 100644 "_notes/AWS \354\240\225\353\246\254/\354\204\234\353\262\204.md" create mode 100644 "_notes/AWS \354\240\225\353\246\254/\354\210\230\353\217\231 \353\252\250\353\213\210\355\204\260\353\247\201.md" create mode 100644 "_notes/AWS \354\240\225\353\246\254/\354\212\244\355\206\240\353\246\254\354\247\200.md" create mode 100644 "_notes/AWS \354\240\225\353\246\254/\354\235\270\354\212\244\355\204\264\354\212\244 \354\212\244\355\206\240\354\226\264.md" create mode 100644 "_notes/AWS \354\240\225\353\246\254/\354\235\270\354\212\244\355\204\264\354\212\244.md" create mode 100644 "_notes/AWS \354\240\225\353\246\254/\354\235\270\355\204\260\355\216\230\354\235\264\354\212\244.md" create mode 100644 "_notes/AWS \354\240\225\353\246\254/\354\236\220\353\217\231 \353\252\250\353\213\210\355\204\260\353\247\201.md" create mode 100644 "_notes/AWS \354\240\225\353\246\254/\354\273\264\355\223\250\355\214\205.md" create mode 100644 "_notes/AWS \354\240\225\353\246\254/\355\202\244 \355\216\230\354\226\264.md" create mode 100644 _notes/Amazon CloudWatch.md create mode 100644 "_notes/Excalidraw/Amazon EC2 \353\204\244\355\212\270\354\233\214\355\202\271 \354\232\224\354\206\214.md" create mode 100644 "_notes/Excalidraw/Amazon EC2 \353\204\244\355\212\270\354\233\214\355\202\271 \354\232\224\354\206\214.png" create mode 100644 _notes/Vault.md diff --git a/_notes/.trash/AWS Iac 2.md b/_notes/.trash/AWS Iac 2.md new file mode 100644 index 0000000..e69de29 diff --git a/_notes/.trash/AWS Iac.md b/_notes/.trash/AWS Iac.md new file mode 100644 index 0000000..e69de29 diff --git "a/_notes/.trash/AWS \354\236\220\354\233\220 \352\264\200\353\246\254.md" "b/_notes/.trash/AWS \354\236\220\354\233\220 \352\264\200\353\246\254.md" new file mode 100644 index 0000000..e69de29 diff --git "a/_notes/AWS \354\240\225\353\246\254/.space/context.mdb" "b/_notes/AWS \354\240\225\353\246\254/.space/context.mdb" index f27b42a40942faf265aee02a13d7c86a4ad451ed..e2ec556403700265e97b8ddbcccab7e661526519 100644 GIT binary patch delta 1078 zcmZozz}T>Wae|Z(^A!dL238=30;b&)b&SM-qI&Vtyg)G)J}w6SD!xv>%Y0lL8>M(z z_%1X2o*cT-v-0Nae7c5S%G`Sy_;2%X;-A1@$REw` z!mrCO#`lu%0N--HcD`)BAU-2L8Q#CV_jtGR&gbpqjpDW7RpMpidB$^+XE9GNPZp0m zj|vYP_hat88ymB^>s6GP{Z*8i{dpb3gB9K^nEHCz8vQr(CcN&SsqlK$ir3v8Z(BCJ zUf!seo1&=1?1`+()!7JLiHst%J%*CaTi#6VPyiXAfN4Peo4GsQbS-(?vIR(j)W~D1 zdEK()ZP$)BvwPk)?F1>2!&Cw?qHO`t?QfPh0F{WyGV7zc11PE@gXYbS8L#Ux{V6TY zY>TY8Cmi*#CNZ@?|8i!jAk+ z0?k!^o_h7UDGK7u?#NnzAp#6@kd1SpfubwMoQSLf5g?6g6fl*Gh@#pP7T^rBT?AFs z)hQS#TCXn59ExlnENz+ddQ%HfLW&nPoZld6lH-}Y&QG3^d-6Fy2}Z8TH~nRJ zf!cPqKvI}C=VSqYofr;gLu7+J6B9wfA5Wae|Z(10Mqe11k{20Ov#h9-mw~^EkC*QXU)W|rftkEa z?ktmg_}rOl*e3Jx)i5_Ivu?i5r)wz1&9{bu|2qFx{%QOT{F(eg{MP(@d{6n#@T~!A z>*HgR&MH;G5NKh zjsQEeA+l1>$#(u?lWqMu3|LVm0umF0fhLHsFzX|$2igJ@m1Smj1ez [!note] AMI +>Amazon Machine Image, 운영 체제와 소프트웨어를 적절히 구성한 상태로 제공되는 템플릿 + +[[인스턴스]] 생성 시 AMI를 지정해야 하며, 하나의 AMI로 동일한 구성의 여러 [[인스턴스]] 손쉽게 생성 가능 +- 사용자 정의 AMI + - 기본 AMI를 사용하여 [[EC2 인스턴스]]를 생성하고, 변경 및 구성 후 사용자 정의 AMI 생성 + - 생성한 사용자 정의 AMI로 다른 [[EC2 인스턴스]] 생성 가능 + - AMI는 동일 [[리전]] 또는 다른 [[리전]]으로 복사할 수 있고, 등록 취소 가능 +- [[AWS Marketplace]]에서 제공하는 [[서드 파티]]용 AMI 선택 +- [[AWS]]에서 자체적으로 정의된 기본 AMI 선택하여 활용 + + + diff --git "a/_notes/AWS \354\240\225\353\246\254/AWS \354\236\220\354\233\220 \352\264\200\353\246\254 .md" "b/_notes/AWS \354\240\225\353\246\254/AWS \354\236\220\354\233\220 \352\264\200\353\246\254 .md" new file mode 100644 index 0000000..8bed825 --- /dev/null +++ "b/_notes/AWS \354\240\225\353\246\254/AWS \354\236\220\354\233\220 \352\264\200\353\246\254 .md" @@ -0,0 +1,7 @@ + + +[[AWS]] 클라우드 컴퓨팅 서비스의 자원을 관리하는 방법은 크게 3가지가 있다. +1. [[AWS 관리 콘솔]]: 웹 기반으로 손쉽게 자원 관리 가능 +2. [[AWS CLI]]: 셸 프로그램을 사용한 명령어 기반 관리 +3. [[AWS IaC]]: 코드 기반으로 자원 관리 + diff --git "a/_notes/AWS \354\240\225\353\246\254/AWS \354\240\225\353\246\254.md" "b/_notes/AWS \354\240\225\353\246\254/AWS \354\240\225\353\246\254.md" new file mode 100644 index 0000000..ed4c52e --- /dev/null +++ "b/_notes/AWS \354\240\225\353\246\254/AWS \354\240\225\353\246\254.md" @@ -0,0 +1,11 @@ +--- +_filters: [] +_contexts: [] +_links: [] +_sort: + field: name + asc: true + group: false +_template: "" +_templateName: "" +--- diff --git "a/_notes/AWS \354\240\225\353\246\254/AWS \354\273\264\355\223\250\355\214\205.md" "b/_notes/AWS \354\240\225\353\246\254/AWS \354\273\264\355\223\250\355\214\205.md" new file mode 100644 index 0000000..efe964e --- /dev/null +++ "b/_notes/AWS \354\240\225\353\246\254/AWS \354\273\264\355\223\250\355\214\205.md" @@ -0,0 +1,8 @@ +> [!note] AWS 컴퓨팅 +> [[클라우드 구축 모델#퍼블릭 클라우드]]에서 [[컴퓨팅]] 자원을 활용하여 다양한 [[워크로드]]를 수행할 수 있는 서비스 + +### [[AWS]]의 주요 컴퓨팅 서비스 +- [[EC2]]: [[클라우드]] 환경에서 [[서버]] 자원을 [[인스턴스]]라는 [[가상 머신]] 형태로 제공하는 가장 기본적인 AWS 컴퓨팅 서비스 +- [[ECS]]: EC2 기반 관리형 [[클러스터]]에서 실행되는 [[컨테이너]] 형태의 자원에 대해 배포, [[스케줄링]], [[스케일링]] 등을 관리하는 서비스 +- [[Lambda]]: [[서버리스]] 컴퓨팅 서비스로, 별도의 [[서버]] 설정이 없는 환경을 제공하여 코드만 실행해주는 서비스 +- [[Lightsail]]: 독립적인 환경을 제공하며, 최소한의 설정으로 손쉽게 사용 가능한 컴퓨팅 서비스 diff --git "a/_notes/AWS \354\240\225\353\246\254/AWS.md" "b/_notes/AWS \354\240\225\353\246\254/AWS.md" index a8851c3..0e3aeef 100644 --- "a/_notes/AWS \354\240\225\353\246\254/AWS.md" +++ "b/_notes/AWS \354\240\225\353\246\254/AWS.md" @@ -1,10 +1,34 @@ --- --- -> 다양한 퍼블릭 클라우드 컴퓨팅 서비스를 제공하는 Amazon의 자회사 +> 다양한 퍼블릭 [[클라우드 컴퓨팅]] 서비스를 제공하는 Amazon의 자회사 - AWS는 200개 이상의 클라우드 서비스를 제공 중 - 26개의 [[리전]]과 84개의 [[가용 영역]] 을 운영하며, 글로벌 클라우드 인프라를 제공 - 대한민국에는 서울 [[리전]]과 네 개의 [[가용 영역]]이 존재 ### AWS 서비스 라인업 +AWS는 컴퓨팅, 스토리지, 데이터베이스 등 [[인프라]] 서비스부터, 사물인터넷, 머신 러닝, 빅데이터 분석까지 [[클라우드]] 기반의 다양한 서비스를 제공한다. +현 시점 크게 25개 분류와, 각 분류 별 200개 이상의 세부 서비스를 제공 + +- **[[AWS 컴퓨팅]]**은 [[클라우드 구축 모델#퍼블릭 클라우드]]의 서버 자원에 대해 [[가상 머신]]을 생성하고, 비용 및 용량을 관리할 수 있는 서비스들로 구성 + - Amazon Elastic Compute([[EC2]]) + - [[EC2]] 덕분에 [[클라우드]]에서 안전하고 가변성이 보장되는 [[컴퓨팅]] 자원을 제공받을 수 있음 +- **AWS 네트워킹 및 콘텐츠 전송**은 [[클라우드 구축 모델#퍼블릭 클라우드]]에 생성한 다양한 자원으로 내외부 통신을 하는 네트워크 서비스로 구성 + - Amazon Virtual Private Cloud([[VP2]]) + - Amazon [[CloudFront]] + - Amazon [[Route5]] + - 위 서비스들로 생성된 [[클라우드]] 자원의 통신 환경 구축 가능 +- **AWS 스토리지** [[클라우드 구축 모델#퍼블릭 클라우드]]에 안정적이고 확장성 높은 [[스토리지]] 서비스로 구성되어 있다. + - Amazon Simple Storage Service([[S3]]) + - Amazon Elastic File System([[EFS]]) + - Amazon Block Store([[EBS]]) + - [[클라우드]]에서 빠르고 안정적으로 데이터를 저장할 수 있다. +- **AWS 데이터베이스**는 데이터베이스 목적과 용도에 따라 [[클라우드 구축 모델#퍼블릭 클라우드]]에 다양한 데이터터베이스 엔진을 제공하여 [[완전 관리형 데이터베이스]] 서비스를 하고 있다. + - Amazon Relational Database Service([[RDS]]) + - Amazon [[Aurora]] + - Amazon [[DynamoDB]] + - 데이터베이스 유형에 따라 선택하여 사용 가능 +- **AWS 보안 자격 증명 및 규격 준수**는 [[클라우드 구축 모델#퍼블릭 클라우드]]자원과 사용자 자격 증명 및 접근 관리, 데이터/네트워크/애플리케이션 보호와 위협 탐지 및 모니터링을 위한 다양한 서비스로 구성되어 있음 + - AWS Identity & Access Management([[IAM]]) + diff --git "a/_notes/AWS \354\240\225\353\246\254/EBS.md" "b/_notes/AWS \354\240\225\353\246\254/EBS.md" new file mode 100644 index 0000000..7f9de2d --- /dev/null +++ "b/_notes/AWS \354\240\225\353\246\254/EBS.md" @@ -0,0 +1,7 @@ +> [!note] EBS +> Amazon [[EC2#Elastic]] Block Store, [[인스턴스]]에 연결 및 제거를 하는 형태로 구성된 블록 스토리지 + +- [[인스턴스 스토어]]와 다르게 직접 연결 구조가 아닌, [[인스턴스]]가 네트워킹을 통해 EBS에 접근하여 연결되는 구조 +- 영구 보존 가능한 스토리지 +- 관리 콘솔을 통해 [[스냅샷]]을 생성하여 백업하거나, EBS 연결을 해제한 후 다른 인스턴스에 연결할 수 있다. + diff --git "a/_notes/AWS \354\240\225\353\246\254/EC2 \353\204\244\355\212\270\354\233\214\355\202\271.md" "b/_notes/AWS \354\240\225\353\246\254/EC2 \353\204\244\355\212\270\354\233\214\355\202\271.md" new file mode 100644 index 0000000..eb48070 --- /dev/null +++ "b/_notes/AWS \354\240\225\353\246\254/EC2 \353\204\244\355\212\270\354\233\214\355\202\271.md" @@ -0,0 +1,9 @@ +> [!note] Amazon EC2 네트워킹 +> [[EC2 인스턴스]] 통신할 수 있는 네트워크 환경 + +주요 요소들은 [[VPC]], [[네트워크 인터페이스]], [[IP 주소]]. + + + + +![[Amazon EC2 네트워킹 요소.png]] \ No newline at end of file diff --git "a/_notes/AWS \354\240\225\353\246\254/EC2 \353\252\250\353\213\210\355\204\260\353\247\201.md" "b/_notes/AWS \354\240\225\353\246\254/EC2 \353\252\250\353\213\210\355\204\260\353\247\201.md" new file mode 100644 index 0000000..7c29189 --- /dev/null +++ "b/_notes/AWS \354\240\225\353\246\254/EC2 \353\252\250\353\213\210\355\204\260\353\247\201.md" @@ -0,0 +1,14 @@ +> [!note] Amazon EC2 모니터링 +> 다양한 지표에 대해 [[수동 모니터링]]과 [[자동 모니터링]] + +모니터링은 **서비스의 안정성과 가용성, 성능 유지**에 필요한 중요 영역 + +[[EC2 인스턴스]]의 자원은 유한하며, 자원 이상의 [[부하]]가 있을 때는 [[장애]] 발생 가능 +따라서 실제 서비스 운영 시 모니터링 중요, 실제 모니터링 및 경보 수행 시 다음의 계획 정의 생성 필요 +- 모니터링 목표 +- 모니터링 대상 자원 +- 모니터링 빈도 +- 모니터링 수행 도구 +- 모니터링 작업을 수행할 사람 +- 문제가 발생할 때 경보를 알려야 할 대상 + diff --git "a/_notes/AWS \354\240\225\353\246\254/EC2 \353\263\264\354\225\210 .md" "b/_notes/AWS \354\240\225\353\246\254/EC2 \353\263\264\354\225\210 .md" new file mode 100644 index 0000000..94b37e4 --- /dev/null +++ "b/_notes/AWS \354\240\225\353\246\254/EC2 \353\263\264\354\225\210 .md" @@ -0,0 +1,3 @@ +> EC2 인스턴스의 안정적인 서비스를 위한 보안 정책 + +주요 보안 기능으로는 [[보안 그룹]], [[키 페어]] \ No newline at end of file diff --git "a/_notes/AWS \354\240\225\353\246\254/EC2 \354\212\244\355\206\240\353\246\254\354\247\200.md" "b/_notes/AWS \354\240\225\353\246\254/EC2 \354\212\244\355\206\240\353\246\254\354\247\200.md" new file mode 100644 index 0000000..05ed741 --- /dev/null +++ "b/_notes/AWS \354\240\225\353\246\254/EC2 \354\212\244\355\206\240\353\246\254\354\247\200.md" @@ -0,0 +1,15 @@ +> [!note] AWS EC2 스토리지 +> Amazon [[EC2]]는 유연하고 효율적이며 관리하기 쉬운 데이터 [[스토리지]] 기능을 제공 + +[[EC2 인스턴스]]용 스토리지 유형은 [[인스턴스 스토어]]와 블록 스토리지인 Amazon [[EBS]]로 나뉜다. + +- [[파일 스토리지]]인 [[EFS]]와 [[오브젝트 스토리지]]인 [[S3]]도 EC2 인스턴스와 함께 사용 가능 + +### 인스턴스 스토어 vs Amazon EBS + +| 구분 | 인스턴스 스토어
| Amazon EBS | +| ----------- | ------------ | ---------- | +| 인스턴스 연결 | 직접 연결 | 네트워킹 연결 | +| I/O 속도 | 빠름 | 보통 | +| 데이터 보관 | 임시 | 영구 | +| [[스냅샷]](백업) | 불가 | 가능 | diff --git "a/_notes/AWS \354\240\225\353\246\254/EC2 \354\235\270\354\212\244\355\204\264\354\212\244.md" "b/_notes/AWS \354\240\225\353\246\254/EC2 \354\235\270\354\212\244\355\204\264\354\212\244.md" new file mode 100644 index 0000000..4ea5c80 --- /dev/null +++ "b/_notes/AWS \354\240\225\353\246\254/EC2 \354\235\270\354\212\244\355\204\264\354\212\244.md" @@ -0,0 +1,18 @@ +> Amazon [[EC2]] [[인스턴스]]는 가상의 컴퓨팅 환경으로 CPU, 메모리, 스토리지, 네트워킹 용량을 결정하는 다양한 [[인스턴스]] 유형을 제공 + +[[인스턴스]]가 `실행 중인 임의의 프로세스`로 해석된다는 점, [[클라우드 컴퓨팅]]이 `가상의 환경에서 필요한 만큼 자원을 임대해서 사용한다`는 점이 서로 일맥상통 +클라우드 환경에서 컴퓨팅 자원을 필요한 만큼 쓰고, 쓰임을 다하면 자원을 반납하는 형태로 임의 구성된 [[인스턴스]] + +- 500개가 넘는 인스턴스 유형 중 사용자 목적과 비즈니스 환경에 맞게 최적화된 선택 가능 + - 범용, 컴퓨팅 최적화, 메모리 최적화, 가속화된 컴퓨팅, 스토리지 최적화로 용도에 따라 분류, 각 인스턴스 유형별로 명칭을 부여하여 CPU, 메모리, 네트워크 등 자원 정의 +- 프리티어는 1년간 매달 750시간의 EC2 인스턴스 무료 서비스 제공(t2.micro만 해당) + +### EC2 인스턴스 구입 옵션 +사용자의 요구와 비용 측면을 로겨하여 알맞은 형태의 옵션 선택! + +- [[온디맨드]] 인스턴스: 시작하는 인스턴스에 대한 비용을 초 단위로 지불 +- Saving Plans: 1년 또는 3년 동안 시간 당 비용을 약정하여 일관된 컴퓨팅 사용량 제공 +- 예약 인스턴스: 1년 또는 3년 동안 인스턴스 유형과 [[리전]]을 약정하여 일관된 인스턴스 제공 +- 스팟 인스턴스: 미사용 중인 인스턴스에 대해 경매 방식 형태로 할당하는 방식 + + diff --git "a/_notes/AWS \354\240\225\353\246\254/EC2.md" "b/_notes/AWS \354\240\225\353\246\254/EC2.md" new file mode 100644 index 0000000..a7acae3 --- /dev/null +++ "b/_notes/AWS \354\240\225\353\246\254/EC2.md" @@ -0,0 +1,16 @@ +> [!note] EC2 +> Amazon Elastic Compute Cloud, [[AWS]]의 [[클라우드 구축 모델#퍼블릭 클라우드]] 환경에서 탄력적으로 확장 가능한 [[컴퓨팅]] 자원을 제공하여 가상의 [[서버]]를 운영할 수 있는 서비스 + +EC2는 [[인스턴스]]라는 가상 컴퓨팅 환경을 기반으로 하여, [[AMI]]를 이용하여 인스턴스에 필요한 소프트웨어 정보를 정의한다. +사용자가 요구하는 CPU, 메모리, 디스크, 운영 체제, 소프트웨어 등을 제공하여 [[워크로드]]에 맞는 최적화된 가상의 서버를 생성하고 관리할 수 있다. +### Elastic +> 탄력적인 + +[[컴퓨팅]] 자원에 대해 원하는 만큼 확장하거나 축소하여 유연하게 사용할 수 있는 개념 + +### EC2 주요 제공 기능 +- 운영체제: 리눅스, 윈도우, macOS +- CPU 옵션: Arm, x86 +- 다양한 [[인스턴스]] 유형 제공: 범용 및 [[워크로드]]에 맞게 최적화 가능 +- 구매 옵션: [[온디맨드]], 예약 인스턴스, 스팟 인스턴스 등 + diff --git "a/_notes/AWS \354\240\225\353\246\254/ENI.md" "b/_notes/AWS \354\240\225\353\246\254/ENI.md" new file mode 100644 index 0000000..42d8520 --- /dev/null +++ "b/_notes/AWS \354\240\225\353\246\254/ENI.md" @@ -0,0 +1,5 @@ +> [!note] ENI +> Elastic Network Interface, [[VPC]]에 생성되는 [[네트워크 인터페이스]]로, EC2 인스턴스에 연결 + + + diff --git "a/_notes/AWS \354\240\225\353\246\254/IP \354\243\274\354\206\214.md" "b/_notes/AWS \354\240\225\353\246\254/IP \354\243\274\354\206\214.md" new file mode 100644 index 0000000..461120a --- /dev/null +++ "b/_notes/AWS \354\240\225\353\246\254/IP \354\243\274\354\206\214.md" @@ -0,0 +1,6 @@ +> Internet Protocol, EC2 인스턴스 통신을 위한 네트워크 주소 + + +[[네트워크 인터페이스]]에는 IP 주소가 있으며, IP 주소로 대상을 구분하고 네트워킹 수행 +- 프라이빗 IP: 내부 구간 통신을 위한 사설 IP +- 퍼블릭 IP: 외부 구간 통신을 위한 공인 IP \ No newline at end of file diff --git "a/_notes/AWS \354\240\225\353\246\254/VPC.md" "b/_notes/AWS \354\240\225\353\246\254/VPC.md" new file mode 100644 index 0000000..5cb687c --- /dev/null +++ "b/_notes/AWS \354\240\225\353\246\254/VPC.md" @@ -0,0 +1,5 @@ +> [!note] VPC +> Amazon Virtual Private Cloud, AWS [[클라우드 구축 모델#퍼블릭 클라우드]] 안에서 논리적으로 격리된 **가상의 클라우드 네트워크** + +생성된 [[EC2 인스턴스]] 는 별도로 구성된 하나의 Amazon VPC 안에 생성되어 네트워킹 된다. + diff --git "a/_notes/AWS \354\240\225\353\246\254/\353\204\244\355\212\270\354\233\214\355\201\254 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244.md" "b/_notes/AWS \354\240\225\353\246\254/\353\204\244\355\212\270\354\233\214\355\201\254 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244.md" new file mode 100644 index 0000000..5936762 --- /dev/null +++ "b/_notes/AWS \354\240\225\353\246\254/\353\204\244\355\212\270\354\233\214\355\201\254 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244.md" @@ -0,0 +1,4 @@ +[[AWS]]에서는 [[ENI]]라는 논리적 네트워크 인터페이스가 [[VPC]] 내에 생성되며, [[ENI]]를 EC2 인스턴스에 연결해서 네트워킹 수행 +어댑터가 논리적으로 구성된 가상의 어댑터 + + diff --git "a/_notes/AWS \354\240\225\353\246\254/\353\263\264\354\225\210 \352\267\270\353\243\271.md" "b/_notes/AWS \354\240\225\353\246\254/\353\263\264\354\225\210 \352\267\270\353\243\271.md" new file mode 100644 index 0000000..3fb3f2b --- /dev/null +++ "b/_notes/AWS \354\240\225\353\246\254/\353\263\264\354\225\210 \352\267\270\353\243\271.md" @@ -0,0 +1,7 @@ +> [!note] 보안 그룹 +> [[EC2 인스턴스]]의 송수신 트래픽을 제어하는 접근 제어 정책 + +수신 트래픽에 대한 [[인바운드]] 규칙과 송신 트래픽에 대한 [[아웃바운드]] 규칙으로 되어 있으며, 대상 트래픽에 대한 허용과 거부를 결정 +- [[EC2 인스턴스]]로 들어오는 트래픽을 허용 또는 거부하거나 반대로 나가는 트래픽을 거부하는 규칙 정의 가능 +- [[프로토콜]], [[포트 번호]], [[IP 대역]] 등으로 트래픽 정의 + diff --git "a/_notes/AWS \354\240\225\353\246\254/\354\204\234\353\262\204.md" "b/_notes/AWS \354\240\225\353\246\254/\354\204\234\353\262\204.md" new file mode 100644 index 0000000..ff28c6c --- /dev/null +++ "b/_notes/AWS \354\240\225\353\246\254/\354\204\234\353\262\204.md" @@ -0,0 +1,5 @@ +> [!note] 서버 +> 특수성과 전문성을 위해 일반적인 컴퓨터에 비해 높은 사양이 요구되는 고성능 [[컴퓨팅]] 자원 + +- [[온프레미스]] 형태로 구축하여 사용할 수 있다. +- [[클라우드 구축 모델#퍼블릭 클라우드]]환경에서 [[컴퓨팅]] 자원을 제공받아 [[가상 서버]]를 구성하여 손쉽게 [[워크로드]] 할 수 있다. diff --git "a/_notes/AWS \354\240\225\353\246\254/\354\210\230\353\217\231 \353\252\250\353\213\210\355\204\260\353\247\201.md" "b/_notes/AWS \354\240\225\353\246\254/\354\210\230\353\217\231 \353\252\250\353\213\210\355\204\260\353\247\201.md" new file mode 100644 index 0000000..6673f96 --- /dev/null +++ "b/_notes/AWS \354\240\225\353\246\254/\354\210\230\353\217\231 \353\252\250\353\213\210\355\204\260\353\247\201.md" @@ -0,0 +1,3 @@ +> 수동 모니터링은 관리자가 직접 콘솔을 이용하여 모니터링 수행 + +대시보드에서 간단한 통계 정보를 확인하거나, [[Amazon CloudWatch]]라는 모니터링 전용 서비스 이용하여 상세한 통계 정보 모니터링 가능 diff --git "a/_notes/AWS \354\240\225\353\246\254/\354\212\244\355\206\240\353\246\254\354\247\200.md" "b/_notes/AWS \354\240\225\353\246\254/\354\212\244\355\206\240\353\246\254\354\247\200.md" new file mode 100644 index 0000000..4e79ae2 --- /dev/null +++ "b/_notes/AWS \354\240\225\353\246\254/\354\212\244\355\206\240\353\246\254\354\247\200.md" @@ -0,0 +1,3 @@ +> 데이터를 저장하는 공간 + +스토리지는 [[서버]] 자원에서 발생되는 다양한 데이터를 보관하려면 필수적으로 존재해야 하는 요소 diff --git "a/_notes/AWS \354\240\225\353\246\254/\354\235\270\354\212\244\355\204\264\354\212\244 \354\212\244\355\206\240\354\226\264.md" "b/_notes/AWS \354\240\225\353\246\254/\354\235\270\354\212\244\355\204\264\354\212\244 \354\212\244\355\206\240\354\226\264.md" new file mode 100644 index 0000000..fba719d --- /dev/null +++ "b/_notes/AWS \354\240\225\353\246\254/\354\235\270\354\212\244\355\204\264\354\212\244 \354\212\244\355\206\240\354\226\264.md" @@ -0,0 +1,7 @@ +> [!note] 인스터스 스토어 +> [[인스터스]]에 바로 붙어 있는 저장소로, [[EC2 인스턴스]] 생성 시 기본적으로 존재 + +- 일부 [[인스턴스]] 유형은 스토어를 지원하지 않음. **[[t2.micro]]** +- 😀 직접 붙어있는 구조로 매우 빠른 [[I/O]]를 보장 +- 😱 [[EC2 인스턴스]]를 중지하거나 종료 시 인스턴스 스토어에 저장된 데이터 모두 손실 +- 임시적인 데이터 저장소, 장기 보존 데이터에는 부적합! \ No newline at end of file diff --git "a/_notes/AWS \354\240\225\353\246\254/\354\235\270\354\212\244\355\204\264\354\212\244.md" "b/_notes/AWS \354\240\225\353\246\254/\354\235\270\354\212\244\355\204\264\354\212\244.md" new file mode 100644 index 0000000..d929cde --- /dev/null +++ "b/_notes/AWS \354\240\225\353\246\254/\354\235\270\354\212\244\355\204\264\354\212\244.md" @@ -0,0 +1,25 @@ +> [!note] 인스턴스 +> 타사 클라우드 서비스에서 제공하는 서버 리소스 + +[[클라우드]] 제공 업체는 데이터 센터에서 하드웨어를 유지 관리하고 인스턴스라는 형태로 [[컴퓨팅]] 자원에 대한 가상 액세스를 제공한다. +인스턴스를 통해 [[컨테이너]], 데이터베이스, [[마이크로서비스]], [[가상 머신]] 등 [[컴퓨팅]] 집약적 [[워크로드]]를 실행할 수 있다. + +- 실제 가동화되고 있는 가상화 컴퓨터 +- 서버로 가동되고 있는 [[가상 서버]] + +### 인스턴스 상태 +> 어떤 행위에 최종적으로 도달하는 상태와 진행 과정에 따른 상태로 나뉠 수 있다. + +**최종적으로 도달하는 상태** +실행 중, 중지됨, 종료됨 + +**진행 과정에 따른 상태** +대기 중, 중지 중, 재부팅, 종료 중 + +### 인스턴스 수명 주기 +1. 최초 인스턴스 시작: 대기 중-> 실행 중 +2. 실행 중인 인스턴스 중지: 실행 중-> 중지 중 ->중지됨(일시적 중지 상태) +3. 중지된 인스턴스 재시작: 중지됨 -> 대기 중 -> 실행 중 +4. 중지된 인스턴스 종료: 중지됨 -> 종료 중 -> 종료됨(인스턴스 영구 삭제) +5. 실행 중인 인스턴스 종료: 실행 중 -> 종료 중 -> 종료됨(인스턴스 영구 삭제) + diff --git "a/_notes/AWS \354\240\225\353\246\254/\354\235\270\355\204\260\355\216\230\354\235\264\354\212\244.md" "b/_notes/AWS \354\240\225\353\246\254/\354\235\270\355\204\260\355\216\230\354\235\264\354\212\244.md" new file mode 100644 index 0000000..e69de29 diff --git "a/_notes/AWS \354\240\225\353\246\254/\354\236\220\353\217\231 \353\252\250\353\213\210\355\204\260\353\247\201.md" "b/_notes/AWS \354\240\225\353\246\254/\354\236\220\353\217\231 \353\252\250\353\213\210\355\204\260\353\247\201.md" new file mode 100644 index 0000000..bda154f --- /dev/null +++ "b/_notes/AWS \354\240\225\353\246\254/\354\236\220\353\217\231 \353\252\250\353\213\210\355\204\260\353\247\201.md" @@ -0,0 +1,6 @@ +> 대상 자원 지표에 대해 임계값을 정하고, 임곗값 초과 시 [[경보]]를 내리는 형태의 동적인 모니터링 방법 + +[[Amazon CloudWatch]] 경보 시스템을 사용하여 동적으로 단일 지표를 관찰하고 지정된 임곗값을 기준으로 경보 작업 수행 가능 +[[Amazon SNS]] 알림 시스템으로 관리자 이메일 호출하거나 [[EC2 인스턴스]] 자원을 동적으로 확장([[오토 스케일링]]) 가능 + + diff --git "a/_notes/AWS \354\240\225\353\246\254/\354\273\264\355\223\250\355\214\205.md" "b/_notes/AWS \354\240\225\353\246\254/\354\273\264\355\223\250\355\214\205.md" new file mode 100644 index 0000000..c360d3e --- /dev/null +++ "b/_notes/AWS \354\240\225\353\246\254/\354\273\264\355\223\250\355\214\205.md" @@ -0,0 +1,4 @@ +> [!note] 컴퓨팅 +> 어떤 것에 대해 계산하여 답을 구하고 추정하는 행위 + +컴퓨팅을 전문적으로 수행하기 위해 인간이 아닌 컴퓨팅을 목적으로 하는 특화된 장비가 있는데, [[서버]] 가 대표적이다. diff --git "a/_notes/AWS \354\240\225\353\246\254/\355\202\244 \355\216\230\354\226\264.md" "b/_notes/AWS \354\240\225\353\246\254/\355\202\244 \355\216\230\354\226\264.md" new file mode 100644 index 0000000..b6e518d --- /dev/null +++ "b/_notes/AWS \354\240\225\353\246\254/\355\202\244 \355\216\230\354\226\264.md" @@ -0,0 +1,10 @@ +> [!note] 키 페어 +> [[EC2 인스턴스]]에 연결할 때 자격을 증명하는 보안 키 + +퍼블릭 키와 프라이빗 키로 구성 +- 퍼블릭 키는 [[EC2 인스턴스]]에 저장됨 +- 프라이빗 키는 사용자 컴퓨터에 별도로 저장 + +[[EC2 인스턴스]] 생성 후 [[가상 서버]]에 접근하여 설정이 필요하면 사용자가 보관하는 프라이빗 키를 활용하여 자격을 증명, 접근 가능 + + diff --git a/_notes/Amazon CloudWatch.md b/_notes/Amazon CloudWatch.md new file mode 100644 index 0000000..e69de29 diff --git "a/_notes/Excalidraw/Amazon EC2 \353\204\244\355\212\270\354\233\214\355\202\271 \354\232\224\354\206\214.md" "b/_notes/Excalidraw/Amazon EC2 \353\204\244\355\212\270\354\233\214\355\202\271 \354\232\224\354\206\214.md" new file mode 100644 index 0000000..ab6a4e7 --- /dev/null +++ "b/_notes/Excalidraw/Amazon EC2 \353\204\244\355\212\270\354\233\214\355\202\271 \354\232\224\354\206\214.md" @@ -0,0 +1,99 @@ +--- + +excalidraw-plugin: parsed +tags: [excalidraw] + +--- +==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== You can decompress Drawing data with the command palette: 'Decompress current Excalidraw file'. For more info check in plugin settings under 'Saving' + + +# Excalidraw Data +## Text Elements +인터넷 ^KbSfItOA + +EC2 인스턴스 ^mddWQLEK + +EC2 인스턴스 ^NniLej6m + +ENI ^mauSkg9v + +ENI ^OdV7WUUK + +퍼블릭 IP ^rerX67Tc + +퍼블릭 IP ^VvfF5vJw + +프라이빗 IP ^czgkMqzF + +프라이빗 IP ^gpw5Snn7 + +%% +## Drawing +```compressed-json +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 +``` +%% \ No newline at end of file diff --git "a/_notes/Excalidraw/Amazon EC2 \353\204\244\355\212\270\354\233\214\355\202\271 \354\232\224\354\206\214.png" "b/_notes/Excalidraw/Amazon EC2 \353\204\244\355\212\270\354\233\214\355\202\271 \354\232\224\354\206\214.png" new file mode 100644 index 0000000000000000000000000000000000000000..4ece95bf0fa9d45476ecef4a33cfb56e56176ae2 GIT binary patch literal 39801 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 GGBM~4pTP48s+93pUCw+up5b1Tbz+RR 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