AWS 10

AWS Service를 활용한 AMI CI/CD 환경 구성 (Packer)

AWS에서 기본적으로 제공하는 Code 시리즈 (CodeCommit, CodeBuild, CodePipeline)을 이용한 OS 이미지가 지속적이고 정기적으로 배포될 수 있는 환경을 구성해보았다. 기본적으로는 Jenkins와 같은 CI툴과 Spinnaker와 같은 CD툴을 사용해서 구현할 것으로 보이나, 그런 시스템이 구축되지 않은 소규모 환경에서는 위와 같이 AWS Native한 서비스를 사용해도 기본적인 구현은 충분히 가능할 것으로 보인다. 위에는 추가하지 않았으나, SNS를 활용한 Notification을 추가할 수도 있고, AWS Pipeline에 추가적인 스텝을 구현하는 것도 가능하여 추가적으로 확장이 가능하며, Packer를 이용한다는 점은 동일하므로 ansible과 같은 솔루션도 사용이 가능..

Devops/CI, CD 2021.06.30

Payer Account에서 Athena로 AWS Config Resource 조회하기

Payer Account에서 Linked Account의 Config 리소스를 조회하려면 Config Aggregator를 사용하는 방법이 있다. 그러나 Config Aggregator에서는 Tag 별 검색 등 검색에 제한이 있어 이를 Athena에 연동하였다. 대부분 참조로 기재해둔 Document에 내용이 명시되어 있으며 별도로 추가한 부분은 Payer S3에 일괄저장하기, Stackset 사용, Lambda 코드 일부 수정 정도이다. 목차 1. Payer Account S3 생성 Payer Account에 S3를 생성한다. S3 Policy는 아래를 참조한다. (특정 Org에서 접근할 수 있도록 전체 권한 부여) 2. Linked Account Config 설정 각 Linked Account에 Co..

Cloud/AWS 2021.06.15

AWS Console에 들어가지 않고 EC2 Instance 기동시키기

목차 개발을 위해서 EC2 위에 인스턴스를 두고 매일 Stop, Start를 하고 있는데, 이 시간이 일정치 않아 매번 AWS Console에 들어가서 서버를 수동으로 실행시켜야 하는 번거로움이 있었다. 이번에는 그런 번거로움을 해소하기 위해 AWS의 서비스인 Lambda와 API Gateway를 활용하여 EC2 기동을 자동화해보고자 한다. 1. Lambda 생성 # IAM Role 최초 Lambda 환경 생성 시 "기본 Lambda 권한을 가진 새 역할 생성"으로 역할을 생성한 후 Statement에 아래 문구를 추가해준다. { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "ec2:StartInstances", "Resource": "*" }, # La..

Cloud/AWS 2021.01.26

[python] asyncio로 boto3 실행시키기 (부제 : asyncio란?)

boto3를 비동기적으로 사용할 수 있는 방법이 있는가에 대해 열심히 찾아보았으나, 결론적으로는 Threadpool 기반의 MultiThread로 실행해야 함을 깨닫고 asyncio와 관련된 내용을 정리해놓고자 한다. 내용은 주로 "파이썬답게 코딩하기"를 참조하였으며, 이 외에는 공식 Document를 상당부분 참조하였다. 1. 비동기 논블록 방식의 시작 - concurrent.futures asyncio 이전에 개발된 멀티 스레딩/프로세싱을 고도화한 모듈이다. 비동기논블록 방식을 스레드와 프로세스로 구현하였다. 멀티 스레딩/프로세싱에서 데몬으로 작업을 실행시킨 것과 유사한 개념이라고 한다. 내부적으로 크게 Executor와 Future, 그리고 Module Functions이 있다. 1.1.1. Exe..

Programming/Python 2021.01.01

[AWS] 10분만에 읽는 AWS AppStream2.0

AppStream2.0 Appstream2.0은 AWS에서 제공하는 SaaS 솔루션 중 하나로, 애플리케이션 스트리밍 서비스를 제공해준다. 일반적으로 많이 사용하는 VDI(AWS의 경우 WorkSpace)와 매우 유사하나, 설치가 번거롭고 다양한 장치에서 접근해야 하는 경우 (예 : 설계 프로그램 등)에서의 활용도가 더 높을 것으로 보인다. ※ 최근 AWS에서는 AppStream에 Desktop Mode를 구현하였다. 기존의 Application Mode는 데스크탑 접근이 불가하여 프로그램이 죽었을 때 작업관리자를 통한 제어가 불가능하여 세션을 아예 재시작해야 하는 문제 등이 있었는데, 이러한 문제점을 보완하고자 한 것으로 보인다. 다만 보안과의 Trade-off는 고려해보아야 할 사항일 것 같다. Su..

카테고리 없음 2020.12.01

[AWS] VPN 기본 용어/개념 정리

AWS Site-to-Site VPN 운영 시 알아야 할 기본용어 및 개념 정리, 지속 업데이트 예정 IPSec VPN 3계층(IP계층)에서 동작하는 터널링 프로토콜 - 헤더 프로토콜로 AH(Authentication Header)와 ESP(Encapsulation Security Payload)가 있음. * Transport Mode : IP 헤더는 그대로 이용하며 나머지 데이터 부분만 보호 * Tunnel Mode : IP 패킷 전체를 보호하면서 그 위에 새로운 IP 헤더를 추가 터널링 IKE (Internet Key Exchange) protocol used to set up a security association (SA) in the IPsec protocol suite. 통신에 사용할 암호화 ..

카테고리 없음 2020.11.30

Zabbix 5.0 Install With Ubuntu 20.04

Zabbix 공식홈페이지를 따라하면 무난하게 설치할 수 있다. 다만, 중간중간 막히는 부분이 있어 이 점을 메모해두고자 한다. 1. 수행 명령어 모음 # 설치 명령어 wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+focal_all.deb dpkg -i zabbix-release_5.0-1+focal_all.deb apt update; apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent # SSL MODE Disable 접근 mysql -h mysql -u user -p --port po..

Cloud/AWS 2020.11.02

AWS와 GDPR (General Data Protection Regulation)

금번에 GDPR과 AWS에서 제공해주는 내용에 관해 공부할 기회가 있어 블로그에도 해당 내용을 정리해두고자 한다. 아래 내용은 "AWS에서 GDPR 규정 준수 탐색"이라는 백서를 기반으로 작성한 글로, 백서의 내용을 요약 + 개인적으로 궁금한 사항에 대해 정리하였다. GDPR이란? 세계적으로 빅데이터, AI 등이 화두가 되면서 이것의 기초가 되는 정보, 특히 개인정보에 대한 보호가 점진적으로 강화되고 있는 것으로 보인다. 2018년도부터 시행된 EU의 GDPR(General Data Protection Regulation)은 일반 개인정보보호법이란 뜻으로, 이전의 EU 개인정보보호지침((Data Protection Directive 95/46/ EC)이 권고 수준에 그쳤다면 이번 GDPR은 유럽연합 전 ..

Cloud/AWS 2020.09.06

AWS Lambda/Kinesis Stream Best Practice

개요 Kinesis Stream을 Lambda와 연계시키기 위해서는 Event source mapping을 중간에 설정해주어야 한다. 물론 어려운 과정은 아니며, 이렇게 되면 아래와 같은 Data Flow가 구성된다. 이러한 아키텍처가 구성되었을 때, 어떻게 해야 고가용성/고성능의 아키텍처를 구현할 수 있을까에 대해 글을 써보고자 한다. Scale Out 먼저, Kinesis Stream으로 유입되는 데이터가 많아졌을 경우, 어떤 대응이 필요한지에 대해 고민해보았다. 간단히 생각해보면, Shard의 개수를 늘리면 되는데, 이 때 과연 Lambda는 어떻게 확장해주어야 하는가? 결론적으로, Kinesis Stream에서 Shard가 증가하게 되면 이것의 개수만큼 Lambda 개수가 자동으로 늘어나게 된다...

Study 2020.06.07

AWS Kinesis Stream - I

kinesis is a managed alternative to Apache Kafka. - Data is automatically replicated synchronously to 3AZ Kinesis Stream, Analytics and Firehose Kinesis Data Flow AWS Kinesis Stream Overview - Stream은 Shard와 Partitions으로 나뉨 - Data Retention is 24 hours by default(7일까지 보관 가능) - 여러 애플리케이션이 동일한 Stream을 소비할 수 있음 - 한번 Kinesis로 들어온 데이터는 삭제할 수 없음 (Immutability) Shard 샤드는 스트림에서 고유하게 식별되는 데이터 레코드 시퀀스입니다...