반응형

AWS 10

AWS Parameter Store (feat. KMS)

1. Parameter Store란? AWS Systems Manager 서비스의 기능이다. 텍스트 블록, 이름의 리스트, 비밀번호, 키 값 등을 저장할 수 있는 기능이다. 특히, 애플리케이션에서 사용되는 값들 중, 코드로 노출되면 안되는 (좋지 않은) 값들이 있다. 데이터베이스 아이디/비번, 외부 서비스에 접근하기 위한 액세스 키 등이 그런 것이다. 파라미터 스토어는 코드로 노출되어선 안되는 각종 파라미터들을 안전하게 저장하고 관리할 수 있도록 도와주는 기능이다. 대표적인 특징으로는 다음과 같은 것들이 있다. 무료 Key-Value 형식 KMS를 통해 파라미터에 암복호화 적용 가능 IAM을 통해 접근 권한 제어 가능 2. Parameter 생성 AWS Systems Manager의 파라미터 스토어로 가..

AWS/Systems Manager 2022.11.27

IAM 사용자에게 비용 권한 부여하기

계정을 운영하다보면, 비용 정보를 확인하고, 분석할 일이 있다. 그런데 기본적으로는 Root 계정에"만" 그 권한이 있는데, AWS 권장 사항에 따르면 Root 계정에 계속 접속하는 것은 보안상의 이유로 지양된다. 가이드에 따르면 Root 계정은 최초 계정 생성시에 접속하여 첫 IAM 사용자를 생성하는데 까지만 사용하고, 그 이외에는 접속하지 않는 것을 권장한다 (당연히 MFA 설정은 해야한다). 때문에 비용 정보도 IAM 사용자에게 권한을 부여해서, 해당 사용자의 계정을 통해 확인할 수 있도록 하는 것이 좋다. 본 글에서는 IAM 사용자에게 비용 관련 권한을 부여하는 방법을 소개 한다. 권한 설정은 크게 두 가지 단계로 이루어진다. Step 1. "결제 정보에 대한 IAM 사용자 및 역할 액세스" 활성..

AWS/ETC 2022.10.31

AWS KMS 개념과 응용 - 2

지난 "AWS KMS 개념과 응용 - 1"에서 KMS를 사용하는 이유와 KMS가 제공하는 기본적인 기능들에 대해서 살펴보았다. 이번에는 실제로 KMS를 이용해서 암/복호화하는 것은 어떻게 하는지 먼저 알아보고, Slack에서 KMS을 이용하여, 서로 다른 계정에서 Key를 어떻게 제어하는지 알아보자. 1. 암/복호화 API 개발 API Gateway + Lambda를 활용하여 암/복호화 API를 개발할 수 있다. API Gateway를 통해 요청이 들어오면, Lambda 내에서 KMS API를 이용하여 Data key를 생성하여 암/복호화를 수행한다. Lambda에 작성되는 코드를 세부적으로 살펴보면 다음과 같이 나눌 수 있다. (1) 라이브러리와 변수 초기화 import base64 import bot..

AWS/KMS 2022.10.14

AWS KMS 개념과 응용 - 1

이 글에서는 AWS KMS의 기본 개념에 대해서 알아본다. 바로 응용편 부터 보고싶다면 "AWS KMS 개념과 응용 - 2"를 보자. 1. 배경 암호화를 적용하는 개발자들은 항상 두 가지 문제를 신경써야 한다. 데이터를 암호화 하는데, 어떻게 정확하게 키를 생성하고 사용할 것인가. 사용 후, 키를 안전하게 보호하는 방법은 무엇인가. 첫 번째의 경우 제공되는 SDK 등을 통해서 해결이 가능하다. 두 번째의 경우 다음과 같은 조건으로 관리될 수 있어야 한다. (1) 데이터를 암호화한 키가 노출되지 않도록 해야 한다. 이 때, 데이터를 암호화한 키는 데이터베이스에 저장하지 말아야 한다. 그리고 복호화는 할 수 있어야 하므로, 복호화 할 수 있는 키는 어딘가에 보관해야 한다. (2) 최악의 경우 복호화 관련 키..

AWS/KMS 2022.10.13

60분만에 이해하는 DynamoDB 모델링: DynamoDB Modeling

사실 이 제목은 내가 지은 것은 아니고, AWS re:invent에서 발표될때, "Data modeling with Amazon DynamoDB in 60 minutes" 라는 제목으로 소개가 되서 따라 적어보았다; 도입. 어쨌든 이번 포스트에서 소개하고자 하는 내용은 "어떻게 하면 더 효율적으로 DynamoDB를 모델링 할 수 있을까"에 관한 것이다. RDBMS를 다루면서, 테이블들의 관계를 나타내고 모델링 하는 것은 많이들 경험을 해봤거나, 들어봤을 것이다. 그러나 NoSQL 기술에 해당하는 DynamoDB는 어떻게 모델링하는 것이 좋을까. 게다가 엄밀히는, (MongoDB 같은) 기존에 잘 알려진 NoSQL과는 좀 다른 특성을 가진 DynamoDB는 어떻게 모델링하는 것이 좋은지 살펴보자. Dyna..

AWS/DynamoDB 2020.06.24

Lambda를 활용한 저비용 분산 캐시

올 2월, USENIX에서 발표된 아주 따끈따끈한 논문을 하나 소개하고자 한다. 제목은 "InfiniCache: Exploiting Ephemeral Serverless Functions to Build a Cost-Effective Memory Cache" 뭐 어려운 말로 적혀있는 것 같지만, 요약하면, "Lambda를 활용한 저비용 분산 캐시" 쯤 될 것 같다. Lambda를 왜 활용하는 걸까. 무슨 이득이 있을까. AWS에서 (분산) 캐시를 사용하는 가장 간단한 방법은 Managed Service인 ElastiCache를 사용하는 것이다. 클라이언트는 ElastiCache를 쓰기 위해서 특별한 노력이 필요하지 않고, 그저 인스턴스를 생성해서, 만들어진 Endpoint를 통해 명령을 보내고 결과를 받..

AWS/Lambda 2020.04.06

AWS Lambda Troubleshooting 3: Error handling

Lambda에서 Exception이 발생했을 떈 어떻게 될까 특히 Lambda와 Lambda 간의 통신일 땐(, Lambda 1이 Lambda 2에게로 요청을 보냈다고 했을 때), 만약에 Lambda 2에서 에러가 발생하면, Lambda 1은 Retry를 시도한다. Retry는 최대 두 번까지 일어나고, 결과적으로 총 최대 3번의 Request가 들어가게 된다. 만약 이것이 의도된 Retry가 아니라면 비용적으로 문제가 된다. 왜냐면, Lambda는 요청 건 수 당 비용이 발생하는 과금 정책을 가지고 있고, 때문에 의도하지 않은 요청이 두번/세번 더 들어가면, 비용이 불필요하게 두배/세배 늘어날 수 있으니까. 현업에서는 이런 문제를 해결하기 위해서, Exception 객체를 Lambda 밖으로 나가지 않..

AWS/Lambda 2020.03.08

AWS Lambda Troubleshooting 1: Cold Start, 콜드 스타트

현업에서 AWS Lambda를 사용하면서 경험했던 바에 따르면, Lambda를 사용하는 것에 있어 가장 큰 단점이자 어려움은 Cold start인 것 같다. Lambda의 근간이 되는 기술인 Container라는 개념은 Scaling하는데 있어 혁신적인 기술이라고 여겨진다. 왜냐하면, Scale-out하는 상황에서, AWS EC2와 같이, 가상OS가 새로 생성되는 방식이기 아닌, OS 위에 돌아가는 독립적인 하나의 프로그램을 생성하는 개념이기 때문이다. 다시말해, 우리가 꺼져있는 컴퓨터를 키는 것이 아니라, 켜져있는 컴퓨터에 프로그램을 하나 키는 것이다. 때문에 당연히 훨씬 가볍다. 때문에 Lambda를 쓰게 되면, 가장 낮은 사양으로 셋팅하더라도, 부하가 생기는 순간에, Container가 빨리 빨리 ..

AWS/Lambda 2020.03.05

Serverless, 서버리스란?

Serverless? 서버가 없다? 우리가 서버를 구축한다고 하면 보통 실물 서버를 구축하는 것을 말한다. 용산에 가서 컴퓨터를 한대 사와서, 거기에 OS를 깔고, 톰캣을 깔고.. 혹은 누군가 실물 서버를 잔뜩 사놓고 빌려줄 수도 있다. AWS 같은 회사가 엄청 나게 많은 컴퓨터를 사서, 한곳에 모아놓고 IDC를 구축하고, 부분 부분을 온라인을 통해 빌려주는거지. 심지어 OS도 미리 설치해주고. 그렇게 되면, 우리가 직접 용산에 가서 발품팔고, 힘들게 들고와서 선 연결하고, USB 꽂아서 OS설치할 필요가 없을 것이다. 전보다는 확실히 편해지긴 했지만, 나는 개발만 하고싶은 개발자인데, 움직이는 것은 너무나도 싫은일인데 저거 누군가가 좀 다 해줬으면 좋겠다. 나는 코드만 올리고 싶다. 그래서 나온 것이 ..

AWS/Lambda 2020.02.26
반응형