250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- Git
- github
- pbcopy
- 코더가 아닌 개발자
- python flask
- 야근
- CSS
- js이론
- 리팩터링
- 클론코딩
- python scrap title
- Docker
- mn나토
- 재택
- 전체지우기
- 다짐
- 5600B
- 컨테이너 지우기
- 가성비 다이버
- html/css 완강
- 1일1커밋
- python
- 떱텐
- 주우재시계
- eventsourcing
- html/css
- 손목난민
- python scrap
- 시계 줄질
- sne573
Archives
- Today
- Total
발전하는 나를 기록하기 위해
⭐️ aws 자격증 준비 [ssa], [developer] #6 본문
728x90
EC2 Instance Metadata(IMDS)
IAM role 상관없이 스스로 metadata 알 수 있다. -> http://169.254.169.254/latest/meta-data
** AWS Security Token Service (STS)의 GetSessionToken
AWS 자격 증명을 일시적으로 생성하는 데 사용되는 API.
일반적으로 AWS IAM 사용자나 역할이 기본 자격 증명(액세스 키와 시크릿 키)을 사용하여 AWS 서비스에 액세스하지만, GetSessionToken을 사용하면 임시 보안 자격 증명을 얻을 수 있다.
AWS SDK(software development kit)
CLI없이 application에서 aws바로 수행하기 위해서 제공되는 api
** 시험 : 언제 SDK 사용하냐?
** 시험 : 자세한 설정과 지역을 명시하지 않으면 us-east-1 기본 설정이 될 수 있다.
AWS limits (quotas 할당량)
API rate limits : ec2 instance가 초당 100회 제한을 갖는다, s3 GetObject가 5500회까지 get 요청이 제한된다.
Service Qoutas : 실행할 수 있는 리소스 수
Exponential Backoff(지수 백오프)
쓰로틀링 에러 발생했을 때 사용한다. -> api 요청이 엄청 많았다.
** 시험 : 언제 지수백오프를 재시도해야 하냐?
A : 5xx server error와 쓰로틀링 발생했을 때 (4xx에러는 아님)
원리 : 첫요청 실패시 다음요청까지의 대기시간을 늘리는 전략
ex) 요청 후 2초 뒤 재요청 / 4초 뒤 재요청 / 8초 뒤 재요청 / ...
CLI Credentials Provider Chain(자격 증명 공급자 및 체인)
CLI 사용하면 자격증명 우선순위
1. command line option 확인 : --region, --profile
2. 환경변수 AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN
3. CLI credentials file : aws configure
4. CLI configuration file : aws configure
5. Container credentials : ECS tasks
6. Instance profile credentials : EC2 Instance profile
AWS Credentials Chain은 AWS에서 자격 증명을 관리하고 얻는 방식의 계층적인 구조
- IAM 역할 (IAM Roles): AWS Identity and Access Management (IAM) 역할은 AWS 서비스 및 EC2 인스턴스와 같이 AWS 리소스에 할당되는 역할.
이 역할을 가지고 있는 인스턴스나 서비스는 역할에 연결된 정책에 따라 자격 증명을 동적으로 얻을 수 있다. 가장 높은 우선순위.
- AWS CLI 구성 파일 (AWS CLI Configuration Files): AWS CLI는 사용자의 로컬 환경에 AWS 자격 증명을 저장하는 구성 파일을 지원한다.
주로 ~/.aws/credentials 파일에서 프로파일을 사용하여 자격 증명을 설정하며, 이 파일은 프로그래밍적으로 또는 AWS CLI에서 직접 편집할 수 있다.
- 환경 변수 (Environment Variables): AWS_ACCESS_KEY_ID 및 AWS_SECRET_ACCESS_KEY와 같은 환경 변수를 사용하여 직접 자격 증명을 설정.
환경 변수에 설정된 자격 증명은 다른 모든 방법보다 높은 우선순위를 갖는다.
- AWS 자격 증명 공급자 (AWS Credential Providers): AWS SDK 및 언어별 SDK는 다양한 자격 증명 공급자를 제공.
예를 들어, AssumeRoleCredentialProvider를 사용하여 자격 증명을 로드하고 역할 전환을 수행.
AWS HTTP API 요청 보낼 때는 SIGNv4 필요하다.
-> SDK나 CLI 사용할 때는 대신 해줌.
s3에서 사진 url에서 보이는 거는 sign이 쿼리스트링에 들어가있어서 그렇다. (헤더에 담아보내는 방식도 있음.)
S3 고급
라이프사이클 - 설정 주기로 클래스 변경
이벤트 알림 - 알림설정 SQS, SNS, 등 받는쪽에서 SendMassage 정책 넣어줘야함
S3 성능 - 버킷의 접두사당 초당 3500개 put, 5500개 get 가능
upload
multi-part upload : 하나의 파일 쪼개서 병렬 업로드, s3가 알아서 파일하나로 합침
transfer acceleration : edge location(s3까지 private으로 통신) 둬서 public 연결을 최소화
download
byte-range fetch : 쪼개서 병렬로 받음, 부분 데이터만 사용(ex. 파일의 헤더)
S3 select
SQL 식을 사용하여 애플리케이션이 객체에서 일부 데이터만 가져올 수 있도록 하는 서비스
Glacier select
표준 SQL 문을 사용하여 Glacier 객체에 대해 직접 필터링을 수행
S3 metadata & object tags
**시험 : s3 검색하려면 DynamoDB와 같은 외부 인덱스 구축해야 할 수 있다.
모든 metadata와 tag 인덱스에 넣은다음 DynamoDB에서 검색 수행하면 S3의 객체로 추출됨.
S3 Encryption
SSE(Server-side Encryption)
SSE-S3
aws에서 key관리 한다.
AES-256 사용
default 암호화
SSE-KMS
KMS 서비스 사용해서 키 직접관리
SSE-C (Customer-Provided Keys)
CSE(Client-side Encryption)
클라이언트에서 암호화해서 업로드
default encryption 은 s3로 켜져 있지만 변경할 수 있고,
버킷 policy에서 https가 아닐 경우, 헤더에 kms나 사용자알고리즘 사용했는지 여부에 따라 deny 설정 할 수 있다.
서버 암호화 이전에 정책을 먼저 확인한다.
CORS
서버쪽에서 설정해줘야함 허락하는 origin 주소
MFA delete : 영구삭제 할 때 인증해야 됨.
Pre-Signed URL : 일시적인 접근허용 URL (s3 저장된 private Object)
Access Point
접두사를 지정해서 Read/Write grant 설정
접근포인트로 DNS name을 가진다.
- Internet Origin
- VPC Origin
버킷 정책(bucket policy)와 유사한 액세스 포인트 정책(access point policy) 연결할 수 있음.
S3 Object Lambda
S3 객체 Lambda를 통해 자체 코드를 S3 GET, HEAD, LIST 요청에 추가하여 애플리케이션으로 데이터가 반환될 때 데이터를 수정 및 처리할 수 있습니다.
사용자 지정 코드를 사용하여 행을 필터링하고 동적으로 이미지 크기를 조정하며 기밀 데이터를 교정하는 등 S3 GET 요청에서 반환한 데이터를 수정할 수 있습니다.
또한 S3 객체 Lambda를 사용해 S3 LIST 요청 출력을 수정하여 버킷에 저장된 객체를 볼 수 있는 사용자 지정 보기를 생성하거나,
S3 HEAD 요청 출력을 수정하여 객체 이름이나 크기 같은 객체 메타데이터를 변경할 수 있습니다.
AWS Lambda 함수에서 지원하는 이 기능을 사용하면 코드는 AWS의 완전관리형 인프라에서 실행되므로
데이터의 파생 사본을 생성 및 저장하거나 고가의 프록시를 실행하지 않아도 되며, 애플리케이션에 추가 요금이 발생하지 않습니다.
CloudFront(CDN Content Delivery Network)
cache, edge location
"Ingress"는 컴퓨터 네트워크 및 클라우드 컴퓨팅 용어로, 주로 네트워크 트래픽을 컨트롤하는 라우팅 및 진입 지점을 가리킵니다
OAC (Origin Access Control) 보안처리
origin(원본서버) : S3, http 서버가 될 수 있다.
vs S3 cross region replication
동적컨텐츠를 낮은 지연으로 적은 리전에 제공할 때 좋다.
서명된 URL -> 뭔소린지 잘 모르겠음.
CloudFront 서명된 URL은 일반적으로 동적으로 생성된 서명된 URL을 통해 유료 콘텐츠를 배포하는 데 사용됩니다.
S3 pre-signed 비교
키그룹생성(RSA 2048 bit)
고급개념
- pricing
- multi Origin(Origin gruop 으로 path마다 다른 origin으로 보내거나 빠르게 DR 할 수 있다.)
- field 레벨의 암호화 : public key로 암호화하고 전송하면 web server에서만 개인키로 해독할 수 있고 전달해주는 cloudfront나 alb 같은애들은 암호화된 값밖에 모름.
- real time log : kinesis를 활용해서 실시간 로그 수집할 수 있다.
수집한 로그를 lambda 이용해서 바로 처리하는 방법,
kinesis firehose 사용해서 s3나 다른곳으로 보낼 수 있다.
Cache key
캐시 객체 고유 식별자 (기본값 : hostname + resource URL)
Cache Policy (Cache Key 생성할 방법 구성)
쿼리스트링, 쿠키, 헤더 옵션가지고 cache key에 적용할지 말지 정할 수 있음.
cache policy에 따라 적용된 옵션들은 모두 origin 요청에 들어간다.
Origin Policy : origin 요청에 들어갈 때 적용할 정책도 따로 설정할 수 있다.
**시험 cache policy vs origin policy 구분해서 알아둘 것.
Cache Invalidation(캐시 무효화)
ECS, ECR, Fargate
ECS lunch type
- EC2일 때, EC2가 클러스터의 요소가 된다.
EC2 인스턴스는 반드시 ECS Agent를 실행해야 된다.
ECS Agent는 ECS Cluster에 인스턴스들 등록 시킨다.
- fargate (no instance)일 때, 서버리스로 동작한다.
EC2 인스턴스 관리할 필요가 없다.
ECS Task만 정의하면 된다.
ECS는 클러스터 안에서 작동한다.
ECS cluster 와 ECS Task 구별해볼껏
AWS에서 docker 컨테이너 실행하는 것 == ECS cluster에서 ECS task 실행하는 것
IAM role for ECS
EC2 Instance profile (EC2 only)
- ECS agent 사용한다.
- API call 사용한다.
- cloudWatch logs 보냄
- ECR에서 pull 받음
- Secret manager, SSM 사용
EC2 Task role (EC2 + Fargate 둘다)
- 각각 상세한 역할(role)을 가진다. (ex. EC2 task 하나는 S3에 연결, 다른 task는 DB 연결)
- task definition 에서 정의한다.
**시험 EC2 profile vs Task role 구분하기
EFS (File System)
EC2와 Fargate 모두 호환됨.
**시험 Task definition 당 IAM role 하나씩 정의, service에서 정의하는 게 아니다!
ECS Task 배치전략
- binback : EC2 instance에 더이상 배치할 수 없을 때 까지 진행
- Random : 무작위
- spread : 기준값가지고 분산배치
배치 제약
- distinctInstance : 같은 task는 같은 instance에 있을 수 없다.
- memberOf : 표현식을 만족해야된다. (ex. 인스턴스 유형이 t2 인 곳에만 배치가능)
패더레이션(federation) : AWS에서 "페더레이션(Federation)"은 여러 다른 신원(Identity) 공급자(Identity Provider) 또는 인증 시스템을 통합하여 사용자 및 리소스에 대한 인증 및 권한 부여을 관리하는 방법을 의미.
Beanstalk
개발자 중심의 관점을 제공
EC2, ELB, ASG, RDS, 등 다 다룬다.
서비스 자동으로 관리해준다. (auto scaling) 개발자는 코드만 짜면 됨.
내부적으로 cloudformation 사용해서 인프라 생성.
deployment option
- all at once
- rolling
- rolling with additional batches : 추가 batch를 둬서 기존 application 갯수 유지하면서 rolling update
- immutable : 아예 새로운 인프라 구성(ASG) 테스트 후 기존 ASG로 병합, 기존 application 종료
- blue green
- traffic splitting
Extension
.ebextensions/~~.config 에 설정파일 존재(.config파일이지만 yaml 형식으로 설정)
"option_settings:" 안에서 설정
CloudFormation
aws 인프라 개요를 선언.
인프라를 코드로 관리 (= template)
스택(stack) : AWS CloudFormation에서 AWS 리소스 및 기타 관련 정보를 그룹화하고 관리하는 개념
리소스(resource) : 다양한 AWS 서비스에서 사용되는 가상 머신, 데이터베이스, 스토리지, 네트워킹 등의 구성 요소
ex) Resources:
MyInstance:
Type: AWS::EC2::Instance
Properties:
AvailabilityZone: us-east-1a
ImageId: ami-a4c7edb2
InstanceType: t2.micro
output
내장함수
SQS
standard
FIFO
DLQ(dead letter queue)
SNS
Fan-out 패턴은 AWS의 SNS (Simple Notification Service)와 SQS (Simple Queue Service)를 함께 사용하여 메시지를 여러 구독자에게 전달하는 패턴
Kinesis
실시간 스트리밍데이터를 수집, 처리, 분석하기 쉽게 해줌
- kinesis Data Streams
Producer
- kinesis agent
- sdk
- KPL(kinesis producer library)
provisionedThroughputExceeded 해결방법
partition key 잘 분배하기
exponential backoff 시도
increase shard (scaling)
Consumer
- kinesis data analytics
- data firehose
- KCL(kinesis consumer library)
- Lambda
- kinesis Data Firehose
record 받아서 lambda로 데이터 가공해서 batch write -> s3, redshift, elastic search / 3rd party / http endpoint
** 시험문제 data stream vs firehose
** 시험문제 kinesis Data Streams vs SQS FIFO
- kinesis Data Analytics
- kinesis Video Streams
CloudWatch
udemy 문제 복습하기
Lambda
event source mapping : AWS Lambda 함수에서 AWS 서비스의 이벤트 소스를 트리거하기 위해 사용되는 매핑을 정의
동시성
외부종속성
cloudFormation
DynamoDB
partition key 고르는 법 : 카디널리티가 높은 값으로 정한다.
카디널리티는 데이터의 다양성을 나타내는 지표입니다. "도시"라는 열에 저장된 데이터가 있다고 상상해보세요.
만약 이 열의 카디널리티가 높다면, 이 도시 열에는 많은 다른 도시들의 이름이 들어있을 것입니다. 예를 들어, "도시" 열에 '뉴욕', '파리', '도쿄', '런던'과 같이 다양한 도시들의 이름이 포함될 수 있습니다.
이와 반대로, 만약 "도시" 열의 카디널리티가 낮다면, 중복되는 도시 이름이 많이 들어있을 수 있습니다.
API Gateway
CodeCommit = github
"leverage the codebuild agent"라는 문장은 "CodeBuild 에이전트를 활용하다"라는 뜻입니다. "Leverage"는 어떤 자원이나 기회를 최대한 활용하거나 이용하는 것을 의미합니다
CodeBuild = jenkins, CircleCICD, Travis ...
CodeDeploy = jenkins, CircleCICD, Travis ...
CodePipeline
CodeStar = 한눈에 서비스 관리할 수 있는 서비스
CodeGuru = ML 사용한 코드리뷰, 모니터링
SAM (ServerLess Application Manager)
cloudFormation을 템플릿으로 관리
CDK (cloud development kit)
javascript, python 등 c언어로 cloudFormation yml 파일 관리
Cognito
SAML (Security Assertion Markup Language)은 클라우드 서비스와 신뢰할 수 있는 식별 제공자 간에 사용자 인증 및 권한 부여 정보를 전송하기 위한 표준 프로토콜.
SAML을 사용하면 사용자가 여러 서비스 간에 단일 로그인(SSO)하여 신원을 확인하고 권한을 부여할 수 있습니다.
CUP (cognito User Pool) -> AuthN
CIP (cognito Identity Pool) -> AuthZ
ACM (aws Certificate Manager)
SSL/TLS 인증서를 손쉽게 프로비저닝, 관리, 배포 및 갱신
Step Function
AppSync
AppAmplify
STS
IAM 고급
KMS
Symmetric(대칭) : AES-256
Asymmetric(비대칭) : RSA & ECC key pair
public and private 쌍으로
CloudHSM (Hardware Security Module)
SSM (System Manager parameter Store)
SM (Secrets Manager)
ACM (강의랑 별개로 궁금해서 찾아본 것)
AWS Certificate Manager(ACM)는 AWS에서 SSL/TLS 인증서를 발급하고 관리하는 데 사용되는 서비스입니다.
이 서비스를 통해 손쉽게 고객의 웹사이트 또는 애플리케이션에 SSL/TLS 암호화를 적용
'개발 > Infra' 카테고리의 다른 글
쿠버네티스 구성요소 (0) | 2024.04.29 |
---|---|
⭐️ aws 자격증 준비 [ssa], [developer] #5 (0) | 2024.04.08 |
⭐️ aws 자격증 준비 [ssa], [developer] #4 (2) | 2024.04.07 |
⭐️ aws 자격증 준비 [ssa], [developer] #3 (0) | 2024.04.06 |
⭐️ aws 자격증 준비 [ssa], [developer] #2 (0) | 2024.04.05 |