본문 바로가기

전체 글

(119)
AWS VPC Peering를 활용하여 VPN 허브 구성 1. 현재 VPN 구성OpenVPN 사용, 계정 2개, 계정당 VPC 2개, 총 4개의 OpenVPN 사용Google OTP 용도나 불편한 작업은 Script를 이용해서 사용 -> 그러나 불편함계정 생성 시 노가다 작업을 4번... KEY도 서버 들락날락 사용자에게 보내주고.... 2. VPN 구성 변경 제안 3. VPN 구성 4. VPN 구성 테스트AWS MarketPlace: https://aws.amazon.com/marketplace/pp/B01DE7GEPK Manual: https://docs.openvpn.net/getting-started/amazon-web-services-ec2-tiered-appliance-quick-start-guide/ 5. To Do List OpenVPN Acce..
Amazon SageMaker 샘플 비교 Amazon SageMaker는 ML을 위한 AWS의 PaaS. (Forecast의 경우는 SaaS) DB 지식이 있어야 RDS를 사용할 수 있듯, 적어도 SageMaker를 사용하기 위해서는 기본적으로 ML 지식이 있어야 하며, Tensorflow나 MXNet 등 프레임워크를 숙지하고 있어야 한다. 즉 SageMaker는 ML 서비스를 위한 일련의 작업을 도와주는 도구로 손쉽게 Notebook을 구성하고, Model을 만들고 관리할 수 있으며, API Endpoint까지 사용할 수 있도록 도와주는 서비스다. 위 내용에 대한 자료는 구글링만해도 넘치기 때문에 해당 블로그나 영상을 참고하기 바란다. 이번 글은 Tensorflow on VM vs SageMaker (학습, 모델, 배포) 비교 글이다. 나 역..
Amazon Forecast 먼저 AWS 서비스 중 앞에 붙는 Amazon/AWS 별칭을 이해하자. Amazon의 경우는 단독으로 사용 가능한 서비스며, AWS의 경우는 다른 Amazon, AWS의 서비스들과 연계해야 하는 서비스임.(예 Amazon EC2 / AWS Lambda 등) 그러므로 Amazon Forecast는 단독으로 사용할 수 있는 AWS의 시계열 데이터 기반 ML 서비스다. 기타 서비스처럼 Amazon.com에 적용한 ML 경험을 토대로 만든 서비스. Forecast를 이용하면 ML 지식 없이도 ML을 사용할 수 있다. 본인은 간단한 데이터만 tensorflow/jupyter 끄적여봄. Forecast는 AWS에서 미리 정의해놓은 1.Case템플릿과 2.알고리즘을 사용하는데, 미리 정의한 템플릿은 아래와 같음. P..
Python locust load test tool 보통 벤치마크는 간단히 ApacheBenchmark를 통해 Req 임계치, Latency 정도를 확인하거나, (ab -n 100 -c 5 -C "somecookie=rawr" http://google.com/) Jmeter, nGrinder(Java)와 같은 프로그램을 통해 더 많은 정보를 확인하거나(nGrinder는 안 써봄), 장점 1. GUI 환경 2. 필요 시 플러그인 사용 단점 1. GUI 환경 2. 필요 시 플러그인 사용 3. 환경 구성이 짜증남 4. 메모리 소모가 매우 큼 구성해놓은 Jmeter 클러스터 VM들은 다시 start 하기도 싫음... 뭔가 버벅이는 느낌.. 그러던 중 Python locust를 발견 Installation — Locust 0.12.2 documentation On..
AWS DynamoDB 소개 AWS DynamoDB(NoSQL PaaS, Key/Value Store) 정확한 그림은 아니라지만, 뭐 대충 요런 포지션이 DynamoDB NoSQL의 사용 이유(RDBMS 한계?) Row->Document 성 데이터 이동 Scale-up의 한계 -> Scale-out 가능 비정형 데이터의 최적화 DynamoDB Index는 Local, Global(Optional) Secondary Index 두 Index를 지원(일종의 View로 물리적으로도 저장) LSI: Hash Key는 기본 테이블 키와 동일, Rang(sort) Key는 선택 제약: 최대 5개, 테이블 생성 시점만 가능, 10GiB 제한(같은 파티션 내 생성되기 때문?) GSI: Hash Key, Range(sort) 자유롭게 구성 가능 제..
AWS EBS AMI 백업 1. EBS 백업 방법 1-1. Data Lifecycle Manager EBS 태그를 기반 12 또는 24 시간 기준으로 EBS의 Snapshot을 수행한다. 또한 Snapshot의 갯수를 조절할 수 있다. (예시 최근 7개) 1-2. CloudWatch Event - EC2 CreateSnapshot API call CloudWatch Event를 통해서도 Snapshot이 가능하다. 그러나 문제는 아직 Delete Option은 존재하지 않는다. 일해라! 아마존! 2. EC2 Image 백업 방법 아직 AWS에서 EC2 AMI에 대한 자동 백업 서비스는 없음. 그러나 CloudWatch Event -> Lambda(aws sdk)를 통해서 아래와 같이 구현은 가능. ec2List.json: AMI로..
AWS ELB Backend Connection Errors 오픈 준비중인 서비스에서 ELB에서 Backend Connection Errors 및 Surge Queue Length 발생. Request가 없으나 Backend Connection Errors가 일정하게 발생되며, Surge Queue Length가 쌓이기 시작. Surge Queue Length는 ELB의 Backend EC2에서 처리하지 못한 Request가 버퍼에 쌓이는 것, Backend Connection Errors는 Backend EC2와 세션 과정에서 문제가 발생되는 것을 의미. 주로 Backend 가용성 문제로 인해 발생되는 메트릭으로 준비중인 서비스에서 발생되는게 이상함.. 업무는 아니지만.. 확인해봄 Application, EC2 OS, log 상에서도 특이점은 확인되지 않음. 또..
AWS Elemental MediaConevert 1. 개요 VOD 컨텐츠에 대한 AWS의 Media 트랜스코더(Live는 MediaLive) 2. 기능 브로드캐스트 - 오버레이, 콘텐츠 보호(DRM), 다국어 오디오, 자막, 광고(SCTE-35) 등 여러 옵션 존재 입출력 - MPEG-2/HEVC 코덱 지원, 색상 샘플링(Color Space), Adaptive packaging(HLS, DASH ISO), 4K Resoultion, HDR 자동화 - API를 통해 자동화가 가능하며, Managed Service(확장/축소, 장애처리, 최적화, 모니터링 등) 안정성 - AZ를 통해 이중화 되어있음 3. Elastic Transcoder(ETS)와 차이점 - Elastic Transcoder는 Video, Audio에 대한 스트림 Preset / Wat..
AWS Machine Learning 분류 Amazon SageMaker ML을 위한 PaaS로 Jupyter 노트북, 최적화 된 알고리즘(linear_learner 등), 커스텀 알고리즘 그리고 MXNet, TensorFlow 프레임워크가 구성된 관리형 서비스데이터 저장소는 S3를 이용하며 데이터 트레이닝을 위한 EC2가 단일 또는 클러스터로 구성(EC2 Type, 갯수는 사용자 정의)되며, 학습된 모델은 S3에 저장기존 MXNet, TensorFlow 라이브러리 스크립트 사용 가능(인프라 구성 json 형태의 Config만 추가 필요). TensorFlow 는 Estimator API 사용 필요.MXNet, TensorFlow 외 다른 플랫폼 사용 시에는 Docker Image가 필요딥 러닝 모델 배포 환경도 AWS API 호출만으로 생성 가..
AWS NLB(Network Load Balancer) AWS NLB는 AWS Load Balancer에 Elastic IP(고정)을 부여할 수 있는 현재까진 유일한 Load Balancer 이다. TCP 레이어를 지원한다. 따라서 http cookie 방식의 sticky는 지원하지 않으며, tcp 세션을 350초 유지한다고 한다. NLB의 장점은 클라이언트의 요청에 대해서 낮은 대기 시간으로 높은 처리가 가능하다는 것이다. 따라서 기존 ELB 사용 시에는 짧은 시간 내 스파크성 트래픽 발생에 대한 대응이 어려웠으나 NLB를 사용함으로 ELB의 단점을 해소할 수 있을 것이다. 또한 이벤트 등으로 사이트의 유입이 늘어날 것을 대비해 ELB의 Prewarm을 준비하곤 했으나, NLB를 사용함으로 ELB의 단점을 해소할 수 있을 것이다. NLB와 묶일 수 있는 대..
Amazon CloudFront 장애 발생 시 필요 정보 1. CF Resolver DNS Query 2. curl 등 다운로드 테스트 3. Traceroute 정보 log 확인 명령어 aws s3 cp s3://'path'/ . --recursive --exclude "*" --include "EXXXXX.2018-07-11*.gz" [Case Open 시 AWS에서 필요 정보 요청] 1) What latency do you expect 2) Please provide the Request ID of a request that appears to experience high latency 3) Do "dig resolver-identity.cloudfront.net"; or "nslookup resolver-identity.cloudfront.net" 4) ..
AWS CloudFront Apache 원본 연동(mod_security2) SecRule &REQUEST_HEADERS_NAMES:origin-token "@eq 0" \ "id:52,log,deny,status:403,t:lowercase,msg:'CloudFront Auth failed origin-token'" cf origin-token 값을 통한 apache 원본 제어(헤더 Key 기준)
HTTP 헤더 모니터링 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114'use strict'const AWS = require('aws-sdk')AWS.config.region = 'ap-northeast-2'const CronJob = require('cron').CronJobconst sns = new AWS.SNS();const waterfall = req..
AWS Elemental MediaLive AWS에서 Live Encoder가 출시되었다. 기존 Elastic Transcoder의 경우 S3 내의 VOD 파일을 단순히 Transcoding 해준 서비스였다면, 이번 AWS Elemental MediaLive는 여러 input Live stream에 대해 인코딩/트랜스코딩이 가능하다. 기존 Elastic Transcoder와 대비되는 서비스는 MediaConvert AWS Elemental MediaLive - AWS의 Encoder 서비스로 Live 비디오 스트림을 실시간으로 인코딩하고 배포하는 서비스 1) 주요 특징 - 두 개의 가용 영역에 리소스 분산 - 스트림에 따라 리소스를 자동적으로 관리하여 고가용성을 제공 - Input Stream은 RTP, RTMP(push), RTMP(pull),..
AWS ElasticBeanstalk Root 경로 /var/app/current//var/www/html/ .extensinos sample files: "/etc/httpd/conf.d/vhost.conf": mode: "000644" owner: root group: root encoding: plain content: | NameVirtualHost *:80 DocumentRoot "/var/app/current/" Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted ServerName www.jschoi.net DocumentRoot "/var/app/current/jschoi" Options Indexes FollowSymLinks MultiViews A..
AWS VPC FLOW LOGS AWS VPC Flow Logs는 VPC 내의 로그를 수집할 수 있게 해주는 기능 VPC 흐름 로그 - Amazon Virtual Private Cloud VPC 흐름 로그 VPC 흐름 로그는 VPC의 네트워크 인터페이스에서 전송되고 수신되는 IP 트래픽에 대한 정보를 수집할 수 있는 기능입니다. 플로우 로그 데이터를 Amazon CloudWatch Logs 및 Amazon S3로 게시할 수 있습니다. 플로우 로그를 생성한 다음 선택된 대상의 데이터를 가져와 확인할 수 있습니다. 흐름 로그는 다음과 같은 여러 작업에 도움이 될 수 있습니다. 지나치게 제한적인 보안 그룹 규칙 진단 인스턴스에 도달하는 트래픽 docs.aws.amazon.com 각 VM의 네트워크 인터페이스 별로 통신하는 로그를 확인할 수 ..
AWS WAF&Shield 소개 AWS WAF&Shield 소개 AWS Shield 작동 방식 - AWS WAF, AWS Firewall Manager 및 AWS Shield Advanced AWS Shield 작동 방식 DDoS(분산 서비스 거부)공격은 여러 개의 손상된 시스템이 네트워크 또는 웹 애플리케이션과 같은 대상에 많은 양의 트래픽으로 대상에 서비스 장애를 일으키려고 시도하는 공격입니다. DDoS 공격은 합법적 사용자의 서비스 액세스를 방해할 수 있으며 과도한 트래픽 볼륨으로 인해 시스템에 충돌이 발생할 수 있습니다. AWS는 DDoS 공격에 대해 AWS Shield Standard 및 AWS Shield Advanced라는 두 가 docs.aws.amazon.com AWS는 Document 정리가 잘 되어 있어서 좋다. 너..
AWS Lambda 활용 태깅 없는 EC2 Instance 정지 Sample Code(Python boto3) import boto3 def lambda_handler(event, context): no_tag_instances = [] ec2 = boto3.client('ec2') instances = [i for i in boto3.resource('ec2', region_name='ap-northeast-2').instances.all()] # Print instance_id of instances that do not have a Tag of Key='Foo' for i in instances: if i.tags is None: no_tag_instances.append(i.instance_id); response = ec2.stop_instances( Ins..
ffmpeg 활용 영상 모니터링 ffmpeg 체크 ./ffmpeg -i $URL -codec copy -t 0 -f null /dev/null FFmpeg Converting video and audio has never been so easy. $ ffmpeg -i input.mp4 output.avi News October 5th, 2019, Bright Lights FFmpeg has added a realtime bright flash removal filter to libavfilter. Note that this filter is not FDA approved, nor are we me www.ffmpeg.org 블랙 / 화이트 영상 감지 ./ffmpeg -i $URL -vframes 1 -an -s 720*400 -f mj..
AWS Storage Gateway(File gateway) 성능 AWS Storage Gateway는 IDC 혹은 AWS EC2 간 스토리지(EBS)를 S3와 연동하여 하이브리드 형태로 사용할 수 있는 서비스입니다. 지원되는 프로토콜은 NFS(파일게이트웨이), iSCSI(볼륨 게이트웨이), VTL(테이프 게이트웨이)가 있습니다. 데이터 백업 및 데이터 S3 이전 용도로 사용합니다. 구성은 document에 설명이 잘 되어있습니다. Web Console을 통해 Cache 디스크 및 권한 관리 등을 설정할 수 있습니다. (Document - https://d0.awsstatic.com/whitepapers/aws-storage-gateway-file-gateway-for-hybrid-architectures.pdf)File Gateway(EC2) 내 OS는 직접 접근할 ..
Wowza 설정 관련 Wowza 가이드 문서http://www.wowza.cn/WowzaStreamingEngine_UsersGuide.pdf https://www.wowza.com/docs/how-to-configure-a-wowza-server-as-an-http-caching-originUI -> Edge 모드 적용 후 -> 아래 Config 설정(청크가 시퀀스하게) httpOriginMode on String Request 헤더에 따라 Response 헤더 변경(모듈을 만들지 않는 이상, 커스텀 헤더 조작은 메뉴얼하게만 가능) StreamNameAlias AddOnhttps://www.wowza.com/docs/how-to-get-the-streamnamealias-addon
AWS ElasticSearch를 이용한 CloudFront 로그 분석(Amazon Linux/ES) ElasticSearch 설치ElasticSearch: 5.4https://www.elastic.co/guide/en/beats/libbeat/current/getting-started.html EC2 Discovery Plugin(Cluster)https://www.elastic.co/guide/en/elasticsearch/plugins/current/discovery-ec2.html elasticsearch-head Plugin(5.x site plugin 지원하지 않음)https://github.com/mobz/elasticsearch-head Limitvim /etc/security/limits.confec2-user soft memlock unlimitedec2-user hard memlock..
AWS Lambda 활용 EIP 변경 방화벽 문제 등이나 기타 이유로 Elastic IP를 사용하는 서비스를 운영할 때 SPOF 발생 (과거 NAT Gateway가 생기기 전에 NAT Instance 단일 장애 지점 문제와 같은...ELB는 아직 EIP를 지원하지 않음) 1. 필요한 Policy { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1491964068000", "Effect": "Allow", "Action": [ "ec2:AssociateAddress", "ec2:DescribeAddresses" ], "Resource": [ "*" ] } ] } 2. Role 생성(Trust relationsships) { "Version": "2012-10-17", "Statement": ..
AWS CloudFront RTMP 재생 URL rtmp://'CF주소'/cfx/st/'확장자':'컨텐츠명'rtmp://s10jz6xbjmb33x.cloudfront.net/cfx/st/mp4:toystory.mp4 https://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/Streaming_CrossDomain.htmlRTMP의 경우 crossdomain.xml 을 제한할 수 없다. RTMP는 쓰지말자.
AWS EC2 EIP 사용 시 HA 구성 외부 서비스와 API 통신 시에 외부 업체에서 보안을 이유상으로 고정 IP 몇 개 허용해 줄 때가 있다. 기존 IDC에서는 VIP를 통해 HA 구성을 했지만, Cloud에서 외부 API 서비스를 이용하기 위해 NAT 구성은 위험성이 있다. (NAT의 비용 및 네트워크 문제) 그 경우 보통 AWS 클라우드에서는 Elastic IP를 이용해서 사용하는데, 그 경우 해당 EC2는 SOPF(Single Of Point Failure) 상태가 된다. 그래서 나노 사이즈의 작은 EC2 Instance를 사용하여 2대의 EC2 Instance에 Health Check를 배치잡을 이용하여 Master 서버에 문제가 발생할 경우 Slave 서버로 EIP를 교체할 수 있다. 아래 간단한 샘플코드를 첨부한다. var AWS..
Amazon S3-CloudFront Redirect(IDC Content S3로 이관 시) [리소스] AWS S3 원본: leedoing2.s3-website-ap-northeast-1.amazonaws.com IDC 원본(가정): leedoing.s3-website.ap-northeast-2.amazonaws.com CF: d1e5lqevy0hhfg.cloudfront.net 사용자 Request: d1e5lqevy0hhfg.cloudfront.net/test.jpg S3 원본에는 test.jpg 파일 없음 IDC 원본에는 test.jpg 파일 존재 [시나리오] 사용자 요청 -> CloudFront -> S3(원본) S3(원본)에서는 404/403에 대해 IDC 원본으로 Redirect 302 Response CF에서는 S3(원본)의 302 Redirect Reponse를 사용자에게 bypa..
AWS Windows2008 R2 Client NFS 설정 1. NFS Client 구성1-1. Server Manager -> Roles -> Add Roles -> File Services -> Services for Network FS1-2. Windows Firewall -> Inbound Rules -> File and Printer Sharing(모든 Name) -> Enable Rule 2. UID/GID regedit 설정2-1. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default2-2. 두 DWORD 값을 추가 AnonymousUid, AnonymousGid2-3. 이 값을 공유 Linux 디렉토리의 소유자 UID/GID로 설정2-4. NFS 용 클라이언트 서비스를 ..
AWS CloudWatch 알람 생성 스크립트 전체 구성된 EC2 Instance에 CPU 70% 이상 알람 생성(사전 CloudWatch Role 필요)123456789101112131415161718192021222324252627282930313233343536373839#!/bin/bash#CREATE SNS TOPIC##name에 사용할 SNS 이름 등록$(aws sns create-topic --name xxxx-topic) #CREATE SUBSCRIBE##topic-arn에 생성한 accountID:topic이름설정 / e-mail 등록 다수 등록 시 아래 명령어 추가$(aws sns subscribe --topic-arn arn:aws:sns:ap-northeast-2:5576xxxx:xxxx-topic --protocol email..
Amazon ElasticSearch 이모저모 AWS ElasticSearch는 간단하게 ElasticSearch를 AWS 내에서 제공하는 서비스 구성은 간단히 Web Console에서 Name(Master), Data Node 구성 가능, 자동 백업이 가능사용 방법은 http://mykumi.tistory.com/entry/AWS-ElasticSearchKibanaFluentd-1-AWS-ElasticSearch-%EC%83%9D%EC%84%B1 에서 확인 가능 문제는 ElasticSearch는 VPC 내의 Private 서비스가 아닌 Public 구간의 서비스.따라서 접근 제어는 Public IP 혹은 ARN과 Signature 구성을 통해 가능. 접근 제어 변경 시 약 5분에서 길게는 20분까지 반영되는데 시간이 걸림 Signature 구성 방..
AWS CloudFront SignedURL/Cookie 사용 AWS CloudFront로 비공개 컨텐츠 혹은 유료 컨텐츠를 서빙할 때는 Signed URL/Cookie 라는 토큰 기반의 인증 옵션을 사용한다. 1. 구성은 뭐 인증 API 서버가 필요할테고 일반적인 인증 구성 2. CloudFront Signed URL/Cookie를 위한 Key Pair 생성 [Root 계정 로그인] > [우측 계정명] > [My Security Credentials] > [CloudFront Key Pairs] > [Create New Key Pair] Private, Public Key 그리고 Key Pair ID를 저장 3. CloudFront Signed URL/Cookie 미리 준비된 정책 vs 사용자 정책 서명된 URL 사용 - Amazon CloudFront 서명된 U..