본문 바로가기

AWS

(16)
[AWS] API Gateway API Key 알아보기 AWS API Gateway에서 API Key를 활성화하여 서비스를 제공할 경우에는 사용자는 API키 정보를 필수로 탑재하여 사용을 해야 한다. 키 값이 일치할 경우에는 사전에 설정한 할당량과 속도에 맞게 서비스되고 그렇지 않은 경우 InvalidKeyParameter 예외가 발생한다. 아래와 같은 방식으로 구현하여 사용할 수 있다. 1. 사용자가 HEADER값에 API KEY값을 입력하여 요청. (사용자에게 API KEY값을 공유하여 사용한다.) : 사용자는 REST API 요청시 X-API-Key 헤더로서 API KEY를 함께 전달한다. (단, 이와 같이 사용하면 API KEY값이 도난당할 수 있으므로 보안에 위험이 있다.) 2. 권한 부여자가 제공한 API KEY를 사용하기. 사용자가 Token값과..
[AWS] API Gateway Lambda 권한 부여자 사용하기 API에 대한 액세스 권한을 제어하는데 Lambda 함수를 사용한다. 권한 부여자는 OAuth나 SAML 같은 보유자 토큰 인증 전략을 사용할 수 있고 헤더, 경로, 쿼리문자열, 단계 변수 또는 컨텍스트 변수 요청 파라미터 정보를 활용하여 인증을 할 수 있다. *SAML : https://ko.wikipedia.org/wiki/SAML 간단히 요약하자면 Lambda로 권한 부여하기 위한 방법은 아래와 같이 두가지로 나눌 수 있다. 1. TOKEN을 사용하여 권한 부여 2. 헤더, 쿼리 문자열, 단계 변수, 컨텍스트 변수 같은 요청 파라미터를 사용하여 권한 부여 [API와 Lambda 연결하는 방법] 1. API Gateway 콘솔로 이동후 API를 선택하고 "권한 부여자"를 선택한다. 2. "+새로운 권..
[AWS] API Gateway 엑세스 제어 (안증/ 인가 / 권한 / API KEY) API Gateway에서 리소스 및 메소드별 엑세스 제어하는 방법에는 여러가지 방법이 있다. (AWS의 서비스들은 항상 최종의 솔루션을 제공하지 않는다. 다양한 수단과 방법만 제공하고 최종 결정은 사용자의 몫으로 남겨둔다.) 1. 리소스 정책 사용 - 특정 IAM 권한이나 역할을 부여 받은 사용자가 리소스별 API 호출 여부를 제어하기 위해 사용된다. - 리소스 정책은 JSON 정책 문서를 작성하여 API에 연결하여 사용한다. - 리소스 정책은 아래와 같이 크게 3가지 형태로 제공된다. 1> 지정된 AWS 계정의 사용자 2> 지정된 원본 IP 주소 범위 또는 CIDR(사이더) 블록 3> 지정된 가상 사설 클라우드 (VPC) 또는 VPC 엔드포인트(계정 무관) *[참고 CIDR : https://ko.wi..
[AWS] 스케일링 알아보기 시스템으로의 접속수가 늘어나면 처리 능력을 키울 방법이 필요하다. 이와 같이 시스템의 처리 능력을 키우는 것을 스케일링이라고 한다. AWS는 스케일링하는 구체적인 방법으로 두가지 방법이 있다. 스케일 업(scale-up)과 스케일 아웃(scale-out)이 여기에 속한다. 스케일 업은 두가지의 커다란 제약이 있다. 하나는 단일 노드의 스펙 상한이 시스템의 처리 성능 한계가 되어버리는 것이다. 두번째는 인스턴스 용량을 변경할 때 일시적으로 중단을 해야 한다는 단점이 있다. 이에 비해 스케일 아웃은 노드 수를 늘리는 것으로 스케일링을 하기 때문에 상한선 제약 없이 동적으로 적용할 수 있다. 이와 같은 스케일 아웃 기능을 AWS에서는 제공하고 있다. 스케일 아웃을 전제로 하면 처리 능력을 확장시키는 작업을 자..
[AWS] 인스턴스 설계하기 (웹사이트) 오늘은 웹사이트 운영하는데 적합한 인스턴스 설계하는 방법을 알아보자. 웹사이트의 가정은 안정적인 응답이 요구되고 몇년 단위로 장기 이용한다는 요구사항이 있는 상태이다. 안정적으로 서비스를 운영하기 위해서는 성능이 안정된 EC2 인스턴스와 EBS를 선택해야 한다. 장기간 서비스가 될 예정이라면 장기 이용을 약정하여 할인 받을 수 있는 EC2 인스턴스가 적합하다. 1. 성능의 안정성과 관련해서는 스토리지 I/O 대역폭에 주의해야 한다. EC2인스턴스와 EBS 볼륨 사이는 다른 사용자와 공유하는 네트워크로 연결되어있다. 트래픽이 대역폭의 한계치에 이르게 되면 스토리지에서 데이터를 읽는 데 시간이 걸리고 응답도 불안정해진다. 이와 같은 이유로 EC2 인스턴스 생성시 네트워크 대역폭에 맞는 타입을 선정하는 것이 ..
[AWS] 클라우드프론트와 S3를 사용한 정적 콘텐츠 배포하기 방문자가 많은 시스템에서 이미지, 동영상, 자바스크립트, HTML, CSS 등의 정적 콘텐츠를 제공하는데는 많은 비용이 발생할 수 있다. 대량의 트래픽을 처리하려면 고성능의 웹 서버가 여러대 필요하게 된다. 그리고 EC2는 다운로드 통신량에 따라 종량 과금이 부과되므로 정적 콘텐츠의 전달이 많게 되면 비용 또한 많이 발생하게 된다. 이와 같은 상황에서 클라우드프론트와 S3를 사용하여 정적 콘텐츠 전달 비용을 줄일 수 있다. 오늘은 이와 같은 방법에 대해서 알아 보겠다. 클라우드프론트는 CDN(Content Delivery Network)의 일종으로 세계 각지에 배치된 서버에서 콘텐츠를 캐시하고 전달한다. 캐시에 히트한 경우에는 웹서버와 DB 서버에 접속하지 않게 되므로 서버의 부하를 줄이게되고 자연스레 ..
[AWS] RDS를 이용하여 DB 서버 이중화 하기. AWS에서 제공해주는 RDS를 통해 DB서버를 이중화 하는 방법을 알아보자. AWS에 RDS를 구성하는 방법은 크게 두가지이다. EC2인스턴스에 RDBMS를 설치하는 방법과, 관리형 서비스인 아마존 RDS를 이용하는 방법이다. 전자는 직접 DB서버를 설치 및 관리하는 것으로 local 서버 환경을 AWS의 가상환경으로 옮긴 것 이외에는 크게 차이점이 없다. 그러므로 OS와 RDBMS를 자유롭게 선택하고 설정할 수 있는 장점이 있다. 하지만 OS와 DB환경을 사용자가 직접 관리해줘야 하는 부담이 있다. 후자는 패치 적용과 백업이 자동화 되어 있기 때문에 운영상에 큰 도움을 받을 수 있다. 가능한 한 아마존 RDS를 사용하는 편이 설정과 운영에 들어가는 수고를 줄여줄 수 있지만 DB운영에는 제약이 있다. 무..
[AWS] ELB(Elastic Load Blancer) 개념 및 사용법 알아 보기 소프트웨어 서비스 운영에 있어 안정화는 아주 중요한 요소 중 하나이다. 많은 사람들의 눈높이가 높아진 만큼 안정적으로 고객들에게 서비스를 제공해 줄 수 있는 방법을 알아보자. AWS에 가상 서버인 EC2와 가상 저장소인 EBS를 사용하여 구축한 웹서버는 로드 밸런서[ELB]를 사용하여 다중으로 구성할 수 있다. 1. AMI [Amazon 머신 이미지] : - AWS에서 준비한 서버 이미지로 AMI를 이용하여 간편하게 EC2를 생성할 수 있지만 사용자가 운영하고 있는 EC2를 기반으로 AMI를 생성할 수 있다. - 사용자가 직접 생성한 AMI를 활용한다면 동일한 EC2 가상 서버를 손쉽게 여러대의 서버로 만들 수 있다. - 규모가 큰 시스템을 구축하거나 같은 환경을 반복해서 사용하는 경우에 작업을 간소화 ..