본문 바로가기

전체 글

(145)
AWS Batch 사용법 AWS Batch 서비스는 말 그대로 Batch 프로세스 관련 서비스다. S3의 오브젝트 파일 프로세싱이나 로그 전처리 등 배치성 일을 처리할 때, AWS Batch를 사용할 수 있다. Tutorial은 S3 Bucket에 업로드 되는 오브젝트의 네임을 인덱싱하여, DynamoDB에 적재하는 예제를 진행한다. AWS Batch는 EC2로 서비스 되나요? 아니면 Lambda와 같은 서버리스? AWS Batch는 Amazon ECS와 연동된다. Batch에 수행되는 VM은 컨테이너 기반으로 동작하기 때문에 도커 이미지를 미리 생성해놔야 한다. Batch는 AMI를 사용하나요? 레파지토리는 어떻게 구성하죠? Batch는 사용자가 만든 AMI를 이용할 수도 있고, Amazon의 AMI를 사용할 수도 있다. 또한..
AWS Lambda Edge를 이용한 이미지 리사이징 먼저 기본 내용은 아래 AWS Blog를 통해 확인하자. Resizing Images with Amazon CloudFront & Lambda@Edge | AWS CDN Blog | Amazon Web Services Do you have lots of images that need to be modified before delivery? No problem with Amazon CloudFront and Lambda@Edge. Read more on how you can use our services to modify image dimensions, apply watermarks, or optimize formats based on browser support all aws.amazon.com 중요 키..
알리바바 클라우드(Alibaba cloud) CDN 분석 알리바바 클라우드 CDN에 대한 Basic Architecture 구성 가능 여부 및 AWS 와의 기능 비교 검토를 진행했다. - Basic Architecture Test 가장 일반적으로 사용되는 이미지, 비디오 스티리밍, 실시간 비디오 스트리밍 CDN에 대한 기본적인 기능을 알리클라우드 환경에서 검증을 진행했다. - Detailed Function Test 알리바바 클라우드 CDN에서 제공하는 기능들에 대해서 기술 검토를 진행했고, AWS CloudFront와의 비교 검증을 진행했다. 1. 이미지 캐싱 캐싱을 위한 가장 단순한 구성으로 CDN과 Storage 구성이다. 알리바바 환경에서는 아래와 같이 대체 구성이 가능하다. AWS CloudFront -> Alibaba Cloud CDN AWS S3 ..
도커컴포즈로 node.js 환경 구성하기 VScode를 이용해서 간단한 node 샘플 app.js을 생성한다. 먼저 node init을 통해 package.json을 생성한다. 사용하는 lib는 express, nodemon 이다. { "name": "nodeindocker", "version": "1.0.0", "description": "node express app in docker", "main": "app.js", "dependencies": {}, "devDependencies": { "express": "^4.17.1", "nodemon": "^1.19.4" }, "scripts": { "start": "node app.js" }, "author": "leedoing", "license": "ISC" } 샘플 node 서버 스크립트..
도커컴포즈로 워드프레스 구성하기 도커 컴포즈를 이용하여 워드프레스를 쉽게 구성할 수 있다. 먼저 환경변수를 생성한다. .env 파일 MYSQL_ROOT_PASSWORD=mysql_root MYSQL_USER=wp_user MYSQL_PASSWORD=wp_password 그리고 도커 컴포즈를 생성한다. docker-compose.yml version: '3.3' services: db: image: mysql:latest env_file: .env environment: - MYSQL_DATABASE=wordpress volumes: - dbdata:/var/lib/mysql command: --default-authentication-plugin=mysql_native_password wordpress: depends_on: - db ..
도커컴포즈로 Apache, PHP, MySQL 환경 구성하기 도커 컨테이너를 이용하여 로컬 APM 개발 환경을 구성해보자. /php/web_dev 경로에 Dockerfile을 저장한다. (파일명 Dockerfile) Dockerfile은 단순히 도커 컨테이너 이미지를 빌드해주는 파일이다. docker-compose의 경우 도커 컨테이너를 정의해주는 파일이다. 아래와 같이 Dockerfile은 php:7.3.3-apche 이미지를 빌드한다. FROM: 도커 이미지 선택 RUN: 도커 컨테이너 내에서 실행하는 커맨드 EXPOSE: 포트 바인딩 FROM php:7.3.3-apache RUN apt-get update && apt-get upgrade -y RUN docker-php-ext-install mysqli EXPOSE 80 docker-compose의 경우 아..
AWS Managed VPN Service 구성 AWS Managed VPN Service를 이용하여 On-premise와 IPsec VPN을 구성하는 방법을 설명한다. 아래 항목을 순차적으로 구성하도록 하겠다. 1) AWS Managed VPN Service 개요 2) Customer Gateway 생성 3) Virtual Private Gateway 생성 및 VPC 연결 4) Site-to-Site Connection 생성 5) VPN Routing 설정 6) Tunnel 상태 확인 7) considerations 8) Appendix - IPsec Tunneling 지원 (GRE 등 다른 Tunneling 은 지원하지 않음, 2019년 08월 현재 기준) - Static Routing과 Dynamic Routing(BGP)을 제공 - 고가용성을 ..
Amazon Athena의 SQL 정리 Amazon Athena의 SQL 기초를 정리한다. 이번 내용에는 Amazon Athena의 기본 사용 방법을 익히고, 활용하여 S3에 업로드 된 CloudTrail 로그들을 이용해서 MFA 없이 AWS Web Console에 접근하는 사용자를 찾아보도록 하자. Amazon Athena의 기본적인 구성은 아래와 같다. S3 Location 확인 분석하기 위한 로그 파일들이 S3 버킷에 업로드 되었다는 가정하에 진행한다. 따라서 사전에 각종 로그 파일들을 S3에 업로드 해놓도록 하자. DDL Create Query(테이블 생성) 기본적으로 Athena 쿼리 엔진의 DDL은 Hive DDL을 기반으로 한다. Create Syntax는 아래와 같다. CREATE Syntax CREATE [EXTERNAL] T..
AD FS 이용해서 AWS SAML 2.0 연동하기 AD FS를 이용하여 AWS SAML 2.0 연동에 대해 설명한다. AD FS 구성이 되어 있다는 전제로 진행한다. 개요 - AD FS를 이용해 AD의 계정을 AWS Web Console 또는 CLI에서도 사용 가능하도록 설정한다. - AD FS에서 AD의 인증을 통해 AD의 c.value인 Group 값과 AWS IAM Role의 Name 값을 비교하여 1:1 매핑(Mapping) 시켜 동작한다. - 동작은 AD User Group의 접두사(AWS-) 뒤의 Name과 AWS IAM Role의 접두사(ADFS-) 뒤의 Name을 비교하여 동작한다. - AD FS는 AD 인증 후 User의 E-mail Address를 AWS Web Console에 전달한다. - AWS Web Console은 ADFS에서 ..
AWS WAF Rate-based Rules 사용하기(Brute force) WAF Rate Rules은 공격자의 악의적인 요청(Reqeust)에 대해 일정 임계치(Threshold)를 통해 공격자의 요청을 블록킹(Blocking)하는 기능이다. (e.g 5분 간 100개가 넘는 요청들이 왔을 때, 공격자의 IP를 차단) 설정 방법은 매우 간단하다. 먼저 AWS 웹 콘솔(Web Console)에서 WAF 구성 항목으로 들어간다. 그리고 Rules 페이지에서 Craete Rule을 선택한다. (AWS WebConsole -> WAF -> Rules) 위 그림과 같이 각 항목을 입력한다. Rate limit의 경우 현재 최소 100개의 요청까지 임계치 구성을 할 수 있다. 그리고 WAF ACLs 페이지에서 Create web ACL을 선택한다. 위 그림과 같이 각 항목들을 채워준다...
AWS Spot Instance 이해하기 AWS 스팟 인스턴스는 사전 약정 없이 On-demand 요금보다 70~90% 절감된 비용으로 사용할 수 있는 EC2 Instance(VM)이다. 시작하려는 인스턴스에 대해 현재 시간에 유효한 가격만 지불하면 된다. 주로 Batch Job 등 용도로 사용하는 서버에 잘 어울린다. 장점은 세 가지로 나열할 수 있다. 첫 번째, 용량 활용 EC2 스페어 용량의 수요와 공급량에 따라 가격이 결정되기 때문에 시장 중심의 낮은 가격으로 Amazon EC2의 안정성, 보안성, 성능, 제어 및 탄력성을 제공 받을 수 있다. 두 번째, 운영비용 절감 On-demand Instance와 비교하여 최대 70~90%의 운영 비용을 절감할 수 있다. 세 번째, 처리량 향상 상태 비저장 웹 서비스, 이미지 랜더링, 빅데이터 분..
AWS SSO와 Directory Service 연동하기 기존에는 Microsoft의 AD를 이용하여 계정 관리를 했다. 그러나 AWS를 사용하게 되어 계정 관리를 분리해서 사용했고, 관리하기가 너무 어렵고 귀찮다. 그래서 Microsoft AD와 AWS Directory Service를 이용하여 AWS SSO 연동을 통해 계정 관리를 추천한다. AWS Oraganizations을 이용하여 AWS Directory Service 계정으로 AWS Console을 로그인하는 방법을 알아보겠다. 먼저, 아래 그림과 같이 AWS Organizations에서 아래 그림과 같이 AWS SSO와 Directory Service를 활성화 한다. AWS Organizations 활성화 [AWS Web Console] -> [AWS Organizations] AWS Direct..
AWS와 GCP 클라우드 상품 비교 클라우드란 기존 서버를 구입하고 IDC에 상면을 임차하여 IT 서비스를 하던 방식과 달리 Google, Amazon, MS 그리고 국내 NAVER 등 밴더 업체를 통해 웹 콘솔로 서버를 빌려서 사용하고 사용한 시간만큼만 비용을 지불하는 방식을 말한다. 클라우드 시장의 지속적인 성장으로 인해 많은 관심을 받고 있다. 그래서 클라우드 사업자 1위인 AWS와 후발주자인 Google Cloud를 비교해본다. 현재 클라우드 시장에서 1위는 단연 Amazon의 AWS 다. 그 이유는 아래 그림을 통해 알 수 있다. AWS의 경우 고객의 요구사항을 충실하게 서비스에 반영하고 있으며 매우 많은 옵션들이 있다. 반면 GCP는 빅쿼리 등을 앞세워 빅데이터, ML 등 특화된 영역을 앞세워 시장에 대응하고 있다. 실제로 고객..
도커컴포즈로 리액트 환경 구성하기 도커 컨테이너를 이용해서 React App 개발 환경을 구성해보도록 하자. 리액트를 사용하기 위해서는 먼저 npx 라이브러리가 설치되어 있어야 한다. npm -i npx -g npx를 설치한 후에 아래 명령어를 통해 리액트를 로컬 환경에서 셋업할 수 있다. npx create-react-app movie_app 로컬 개발 환경을 구성했다면, 이제 Docker-compose.yml과 Dockerfile를 통해 도커 환경을 구성하자. 아래와 같이 Docker-compose.yml 파일을 생성한다. 마지막 CHOKIDAR_USEPOLLING=ture은 App이 수정되었을 경우 Reload이 가능하도록 하는 설정이다. 이거 찾느라 2시간을 삽질했다. version: '3.7' services: movie_app..
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..
XGBoost 파라미터 정리 XGboost 파라미터 정리 objective(default는 reg:linear) reg:linear: 시계열데이터 binary:logistic: 이진 분류 데이터 multi:softmax: Multi-class Classfication에 유리(e.g Iris) multi:softprob: softmax와 같지만 각 클래스에 대한 예상 확률을 반환 num_roud: 트레이닝 루프 early_stopping_rounds=10(오버피팅 발생 시 참고) Stopping. Best iteration: [36] validation_0-logloss:0.363641 validation_1-logloss:0.485134 High Bias의 경우 언더피팅 발생 High Variance의 경우 오버피팅 발생
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), filln..
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/main 입력 시 main.m3u8으로 매니페스트 파일이 생성된다. 그럼 언제 MediaStore를 ..
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..
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 ..