본문 바로가기

Amazon Web Service

(106)
도커 컨테이너(docker container)를 이용해서 리액트(React) 환경 구성하기 도커 컨테이너를 이용해서 React App 개발 환경을 구성해보도록 하자. 먼저 리액트(React)는 Facebook에서 만든 Javascript 기반 프레임워크로 현재 Front-end 프레임워크에서 가장 인기가 좋은 프레임워크다. 페이스북, 넷플릭스, 슬랙 등 많은 웹 서비스 환경들이 현재 React를 통해 서비스 되고 있다. 리액트의 유지보수는 페이스북이 관리하고 있기 때문에 점점 더 많은 개발자들이 사용할 것으로 보인다. 그럼 도커를 통해 리액트 개발 환경을 구성한다. 리액트를 사용하기 위해서는 먼저 npx 라이브러리가 설치되어 있어야 한다. npm -i npx -g npx를 설치한 후에 아래 명령어를 통해 리액트를 로컬 환경에서 셋업할 수 있다. npx create-react-app movie_..
CSS flex, grid 정리 주로 사용하는 엘리먼트 div: 개행 처리(display: block) section: 개행 처리(display: block) a: 개행 X(display: inline) span: 개행 X(display: inline) display block은 크기 조절이 가능 inline은 크기 조절이 불가능 inline-block은 인라인과 블록 속성을 동시 display: flex flex는 container에 적용 flex-direction: row(기본), column flex-wrap: wrap(브라우저 스크롤에 따라 정렬) justify-content: flex-start(기본), flex-end, center, space-between, space-around (row 정렬) align-items: s..
Windows 10에서 Linux 사용하기 윈도우10 에서 Virtual Box 등 가상화 도구 없이 간단하게 리눅스를 사용할 수 있다. 로컬에서 쉘 스크립트 등 간단한 프로그래밍을 할 때 유용하다. 먼저 Microsoft Store에서 Linux를 검색한다. Linux를 검색하면 아래와 같이 Ubuntu부터 Debian 등 여러 리눅스 OS의 유틸리티 도구를 확인할 수 있다. Ubuntu 유틸리티를 설치하고 실행하면 아래와 같은 에러를 볼 수 있다. Installing, this may take a few minutes... WslRegisterDistribution failed with error: 0x8007019e The Windows Subsystem for Linux optional component is not enabled. Ple..
AWS MediaConvert(S3 event lambda) AWS MediaConvert를 이용하여 VOD mp4 파일에서 블랙화면과 함께 Audio 파일만 추출한다. 아래 AWS Github의 샘플 코드를 이용한다. aws-samples/aws-media-services-vod-automation Sample code and CloudFormation scripts for automating Video on Demand workflows on AWS - aws-samples/aws-media-services-vod-automation github.com 샘플코드는 S3에 mp4 파일이 업로드 되었을 시에 미리 생성해놓은 미디어컨버트에서 미디어 프로파일을 구성하고 청크 파일을 만들어 HLS 서비스가 가능하도록 컨버팅 하는 예제이다. 링크를 그대로 따라서 하면 적..
Amazon Transcribe 한국어 STT 변환 Amazon Transcribe은 S3에 담긴 오디오 파일의 음성을 번역해주는 프로그램이다. 현재 영어, 아랍어, 중국어, 불어, 독일어, 힌두어, 이태리어, 한국어, 포르투칼어, 러시아어, 스페인어를 지원한다. ?왜 일본어가 없지? 아무튼 2019-10-18 기준으로 Amazon Transcribe도 No Japan을 동참?하고 있다. 그리고 같은 언어가 같아도 영국, 미국 억양이 다르듯이 옵션 값을 다르게 줄 수 있다. 오디오 포맷의 종류는 WAV, MP3, MP4 및 FLAC?를 비롯한 여러 오디오 인코딩을 지원한다. 또한 실시간 번역도 가능하다. 오디오 컨텐츠는 API 호출당 컨텐츠 길이 4시간이나 2GB로 제한된다. 따라서 동영상 파일의 경우 MediaConvert를 사용해서 음성 파일만 따로 ..
Amazon SageMaker & ML(sklearn) 이번 글은 SageMaker를 활용하여 기본적인 데이터 시각화 분석과 결과 평가 방법부터, 캐글의 Bike Rental 데이터를 통해 데이터 전처리, 트레이닝, 모델 생성, 배포 일련의 작업을 다룬다. 기본 sklearn을 사용해보고 SageMaker의 high level interface의 estimators 사용 방법과 비교한다. 개인적으로 학습한 내용이라 두서 없다. 1. Introduce 1-1. np, pd, plt(plt.hist/블록, plt.scatter/분산, plt.plot/선형) 1-2. 데이터 전처리 vehicle = df['Vehicles'].fillna(0) plt.plot(vehicles, ls='-.', alpha=0.8, label='mean') fillna(0), fill..
ES6, 7, 8 정리 [1] Variables 1. Var - var는 더이상 쓰지마라. - const를 써라. 대신 const의 하위 오브젝트 제어는 가능. - let도 지양 하지만 오브젝트를 변경해야 할 일이 있을 변수에는 사용. 그래도 웬만하면 const. 2. Hoisting / Block Scope - 지겨운 호이스팅 - const, let 사용 시 호이스팅에 트랩에서 빠져 나올 수 있음 3. Block Scope - f a{ f b{}} a에서 b의 object로 접근할 수 없고, b에서 a는 가능 - 당연히 if, for 등 {} 버블 내에서는 모두 적용 4. 정리 - const, let, hoisting, block scope를 기억해라. [2] Functions 1. Arrow Functions const n..
AWS EC2 User data script sample(node.js) AWS EC2의 User data에서 yarn install/run 명령어 수행이 되지 않음.. 초기 EC2 생성 시의 User data 아래와 같이 구성하면 되고 시작 시 Linux 인스턴스에서 명령 실행 - Amazon Elastic Compute Cloud 시작 시 Linux 인스턴스에서 명령 실행 Amazon EC2에서 인스턴스를 시작할 때 사용자 데이터를 인스턴스에 전달하여 일반적인 구성 작업을 자동으로 수행하는 데 사용하도록 할 수 있고, 인스턴스가 시작된 후에 스크립트를 실행할 수도 있습니다. Amazon EC2에 shell 스크립트 및 cloud-init 명령이라는 두 가지 유형의 사용자 데이터를 전달할 수 있습니다. 시작 마법사에 이 데이터를 일반 텍스트, 파일(명령줄 도구를 사용하여 인..
Babel 6/7 후아 이틀 삽질한 내용.... 1. Error: only one instance of babel-polyfill is allowed babel을 전역변수로 단 한 번의 정의만 가능하므로, 어딘가에 너는 babel-polyfill을 import 하고 있을 것이야.. 2. ReferenceError: regeneratorRuntime is not defined async function myFunc(){} -> const myFunc = async function(){} 3. Runtime Error 문제(.babelrc) @babel/transform-runtime 플러그인 추가 { "presets": [["@babel/preset-env"]], "plugins": [["@babel/transform-ru..
AWS MediaStore 오랜만에 업데이트... 요새 딴 일을 하느라...🙏 아무툰... AWS MediaStore는 Live 스트리밍 전용으로 메모리 기반의 S3로 이해하면 된다. 그러니까 실시간 레이턴시가 중요한 Live 미디어 서비스의 MediaStore 사용을 권장한다. S3만큼 여러 기능도 없다. 그냥 easy easy... 보편적인 Live Streaming 구성 [Encoder Appliance] -> [MediaLive] -> [MediaStore] -> [CloudFront] MediaStore를 사용 시에는 MediaLive에서 endpoint에 mediastore(ssl)://mediastoreEndpoint/'path' chunk: '/path' 혹은 'path' 로 구성하면 되는데, /path로 구성했을 ..
s3 sync shell S3 cli 쓰레드 늘리는 설정(10 -> 50~80) aws configure set default.s3.max_concurrent_requests 20 (default 10) aws configure set default.s3.max_queue_size 10000 4 core / 16 Mem 기준 1 core에서 90% 이상 sync 명령어가 점유 평균 50~80MB/s Throughput 까지 성능이 나옴, 하루 5~7TB 업로드 가능 Path 별로 병렬처리 시 더 나은 성능을 뽑을 수는 있음(bandwidth 고려) #!/bin/bash while true do psCount=$(ps -ef |grep /usr/local/bin/aws) if [ "$psCount" = 2 ] then echo "..
Amazon API Gateway Signature v4(Authorization) API Gateway는 AWS의 Managed HTTP(S) Proxy 서비스로 HTTP(S) / Websocket 프로토콜을 지원하며, EC2 / Lambda / DynamoDB / 외부 HTTP(S) 통신 등 다양한 Application과 Integration 되어있다. API Gateway는 기본적으로 AWS에서 관리하는 VPC 내에 존재하기 때문에 Public 서비스로 WAF와 연동도 가능하다. 또한 End-Point(Private Link)도 지원하기 때문에 사용자의 VPC 내에서 Security Group을 통해서도 네트워크 제어가 가능하다. 그 외 Caching, Header, QueryString 조작, 요청 Threshold 관리 등 매우 다양한 기능이 있음. 이번 블로깅은 API Gat..
AWS Key Management Service(KMS) KMS는 말그대로 키 관리 시스템이다. 전반은 이해가 안 가나, 간략히 주요 기능을 추려보면 아래와 같다. 1. 양방향 암호화 지원(대칭키) 2. 별도의 물리적인 공간에 ecryption/decryption을 위한 key를 저장 3. AWS SDK 등을 사용하여, 겁나 쉽게 데이터 ecryption/decryption이 가능함 암호화 방식은 아래 링크에 잘 설명되어 있음. (https://medium.com/chequer/sqlgate-teams-%EA%B0%9C%EB%B0%9C%EA%B8%B0-1%ED%8E%B8-%EB%B6%80%EC%A0%9C-%EC%95%88%EC%A0%84%ED%95%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%95%94%ED%98%B8%ED%99%94-aws-..
OpenVPN, OpenLDAP OpenVPN / OpenLDAP 둘 다 AWS AMI 사용 OpenVPN LDAP 설정(OpenLDAP uid / ADDS sAMAccountName) Organisational Unit -> Posix Group -> User Account 기본적으로 APP -> LDAP 구성 AWS 계정 연동을 위해서는 AD Connector 필요(Microsoft / OpenLDAP) Directory Service를 이용하여 Directory 관리 가능하나, LDAP Query를 지원하는 ADFS 등은 필요
Node Callback / Promise / async&await Callback 문제 예시 const posts = [{ title: "Post One" }, { title: "Post Two" }]; function getPosts() { setTimeout(() => { let output = ""; posts.forEach((post, index) => { output += post.title + "\n"; }); console.log(output); }, 1000); } function createPost(post) { setTimeout(() => { posts.push(post); }, 2000); } getPosts(); createPost({ title: "Post Three" }); Callback 해결 const posts = [{ title: "P..
AWS Cloud9 Cloud9은 웹기반 IDE로 EC2 Docker 기반으로 구성. 현재 사용 가능한 곳은 Singapore / N.Virginia / Ohio / Ireland / Oregon. Node.js, Python, PHP, Java, Ruby, Go 등 다양한 프로그래밍 언어를 지원. AWS 관련 다양한 패키지들이 설치되어 있음. 또한 Lambda와 연동 가능하다. Lambda 코드의 경우 Lambda 화면에서 스크립트를 작성하거나, Local 환경에서 APEX와 같은 플러그인? 혹은 toolkit을 통해 Lambda 코드를 구성하고 배포했음. 또한 패키지가 필요한 경우 zip 파일을 Lambda에 업로드. 그 경우 Lambda 화면에서 코드 수정 불가했음. Cloud9을 사용할 경우 Local 환경 구성이 ..
Alibaba Cloud ECS 간단 사용기 중국 서비스 테스트를 위해 Alibaba Cloud를 이용하여 테스트용으로 VM 한 대를 사용할 계획이었으나, 결국 실패했다. Ali Cloud 사용 계획이 있는 분에겐 도움이 되기를 바라며 글을 남긴다. 내용은 기술이나 기능 뭐 그런게 아니라, 어떻게 알리클라우드를 이용해서 중국에 서비스를 할 수 있는지에 대한 설명이다. 준비할 라이센스? 아래는 Ali Cloud의 Web Console이며 지원하는 언어는 현재 영어, 중국어, 한국어가 있다. 특이점은 일본어가 없다. 반일 감정인가...리전은 있나? 항목을 보면 IaaS 이상의 여러 서비스를 제공한다. MongoDB가 있다는게 인상적이다. Web Console 및 서비스 네이밍이 직관적이다.Elastic Compute Service 선택, Ali에서는 ..
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 API는 구성되지 않음. 2. EC2 Image 백업 방법 아직 AWS에서 EC2 AMI에 대한 자동 백업 서비스는 없음. 그러나 CloudWatch Event -> Lambda(aws sdk)를 통해서 아래와 같이 구현은 가능. ec2List.json: Image를 생성할 EC2와 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..