[AWS] Amazon 통합결제와 대량구매할인 서비스

이미지
AWS의 모든 요금체계는 기본적으로 사용한 만큼 비용을 지불하는 종량제 서비스 입니다. 하지만 충성고객 유치를 위하여 대량의 서비스사용 고객을  대상으로 요금을 할인해 주는 계층 서비스 요금 을 동시에 적용하고 있습니다. S3 서비스가  그 대표적인 예 입니다 아래 그림과 같이 최초 50TB 사용시 에 과금 금액과 이후 50TB 초과 사용시 의 금액이 서로 상이 함을 확인 할 수 있습니다. 이처럼 계층형 서비스 요금 은 단일 사용자가 다량의 서비스를 이용할 경우 가격인하 혜택의 적용을 받을수 있습니다. 하지만 기업의 부서별로 별도의 계정 을 관리하고 있거나 서비스 별로 별도의 계정 을 사용하는 경우는 어떨까요?  AWS 의 요금결제는 계정을 기준으로 이루어 각 계정간 서비스 사용량이 분산되어 요금 할인이 적용되지 않게 됩니다. 이런 경우에 사용할수 있는 서비스가  AWS Organizations의 통합 결제 기능  입니다. 통합결제 서비스는 아래와 같이 결제를 위한 Master Account 를 설정하고 하위에 Member Account 를 연결하여  Master Account 를 통해 모든 비용결제가 이루어 집니다. 또한 Master Account 에 연결된 Member Account 의 비용보고서도 한번에 확인이 가능합니다.   이때, Member Account의  서비스 이용량을 통합하여 대량할인 적용 이 이루어 집니다. AWS 에서 설명하고 있는 통합결제 계정의 장점 입니다. 통합결제의 장점  1. 하나의 청구서 – 여러 계정에 대해 하나의 청구서를 받습니다. 2. 추적 용이    – 각 계정의 요금을 간편하게 추적하고 비용 데이터를 CSV 형식으로 다운로드할 수 있습니다. 3. 사용량 통합    – 현재 여러 계정을 보유한 경우 AWS가 조직 내 모든 계정의 사용량을 통합하여 대량 구매 요금 할인 자격을 부여하므로 요금이 줄어들 수 있습니다. AWS 에서 설명하고 있는

[AWS] Amazon Polly 한국어 서비스 지원

이미지
지난 포스팅에서  Naver Clova Speech Synthesis (CSS) 를 통한 Text To Speech 서비스에 대해 간략하게 알아보았습니다. http://devstory.ibksplatform.com/2017/11/naver-clova-speech-synthesiscss-api.html AWS 에서는 아직 한국어 서비스가 지원되지 않고 있었는데 16일부터 Amazon Polly 서비스가 한국어 읽기 서비스를  지원한하고 합니다. Amazon Polly 는 AWS의 딥러닝 기반 TTS 서비스 로 2016년 처음 선을 보인 이후로 드디어  한국어 서비스를 지원하고 있습니다. AWS 콘솔을 통해 Amazon Polly 에 접속해 보면 현재 Seoyeon (서연) 이라는 이름의 여성 음성 한가지를 지원 중입니다. Naver 서비스와 조금 다른점은 API 콘솔을 통해서 바로 음성듣기 기능 테스트가 가능합니다. 첫인상은 네이버 CSS 서비스 보다 조금 더 자연스러운 느낌입니다. 스트리밍 방식을 사용하기 때문에 긴 텍스트를 한번에 입력해도 바로 음성재생 가능하다고 합니다. 추가적으로 SSML ( Speech Synthesis Markup Language (SSML) Version 1.1, W3C Recommendation ) 에 정의된 SSML 마크업 태그를 지원합니다. 지원되는 SSML 태그 형식을 활용하여 좀더 자연스럽운 말투나 효과 적용이 가능합니니다. <speak>   // SSML태그 루트 <break>   // 스피치에서 일시 중지 <lang>    // 특정단어 및 구 <mark>    // 텍스트 내에 사용자 정의 태그 배치 <p>       // 텍스트 단락 <phoneme> // 음성발음 지정 <prosody> // 텍스트의 볼륨, 속도 및 음색을 제어 <s>       // 

scp명령어를 이용하여 리눅스 서버 간 파일 이동하기

안녕하세요. 남산돈가스입니다. 리눅스 서버를 운영 중에 서버와 서버 또는 서버와 로컬 간의 파일을 복사하기 위하여 scp 명령어를 자주 사용합니다. 오늘은 scp 명령어 사용법에 대해서 포스팅 해보겠습니다. scp 명령어의 기본 사용법은 다음과 같습니다. $ scp < 옵션 > < 원본 경로 및 파일 > < 복사 받을 곳 경로 및 파일 > 1. 로컬에서 서버로 파일 복사하기 첫번 째로 로컬에서 서버로 파일을 복사하기 위해서 test 파일을 하나 생성합니다. $ touch scpTest $ ls -al scpTest -rw-r--r-- 1 gimseongsin staff 0B 11 21 16:40 scpTest 테스트로 생성한 scpTest라는 파일을 remote 서버로 복사해보겠습니다. $ scp scpTest ubuntu@13.124.XXX.XXX:/home/ubuntu scpTest 100% 0 0.0KB/s 00:00 $ scp <복사할 로컬파일 경로> <계정>@<호스트주소>:<복사 될 경로> 위와 같은 명령어를 통해 로컬에서 Remote 서버로 파일을 복사한 것을 확인 할 수 있습니다. 2. 서버에서 로컬로 파일 복사하기 두번 째로는 Remote서버에 있는 파일을 로컬환경으로 가져오는 방법입니다. 먼저 Remote 서버에서 로컬로 전송할 파일을 생성합니다. $ touch remoteToLocal $ ls -al remoteToLocal -rw-rw-r-- 1 ubuntu ubuntu 0 Nov 21 16:58 remoteToLocal 파일을 생성한 뒤 로컬 터미널 창에서 다음과 같이 입력합니다. $ scp ubuntu@13.124.XXX.XXX:/home/ubuntu/remoteToLocal /User

android 뒤로가기 두번으로 앱종료 하기

이미지
android의 특징중 하나인 뒤로가기 버튼이 있습니다. 뒤로가기 버튼을 통해 대부분의 앱을 종료 하기 때문에 android사용자들은 앱을 종료 하기 위해서 뒤로가기를 연속적으로 누르는 행동을 많이 합니다. 그렇기 때문에 종료의 의사가 아니고 뒤로가기를 눌렀는데 앱이 종료되는 경우가 종종 생기는데요. 이런 경우에 대비해서 국내 앱들은 뒤로가기를 두번연속으로 누른경우에만 앱을 종료 시키는 방법을 많이 사용 합니다. 해외 앱들은 굳이 이런기능들을 사용하지 않는 경우가 많은걸 보면 국가별 사용하는 방식의 차이가 있나보다란 생각도 하게 됩니다. 뒤로가기 두번연속으로 눌렀을때 종료하는 방법은 쉽게 구현 할수 있습니다. 우선 activity에서 뒤로가기 이벤트를 제어 해야 합니다. @Override public void onBackPressed() { super . onBackPressed ( ) ; } onBackPressed 함수를 오버라이드 해줍니다. private final long FINISH_INTERVAL_TIME = 2000 ; private long backPressedTime = 0 ; 우선 누르는 이벤트사이의 시간 간격을 위해 FINISH_INTERVAL_TIME을 지정해 줍니다. 설정된 시간 이내에 연속적으로 뒤로가기가 이벤트가 일어났을때만 종료 되는 것 입니다. 설정해 놓은 시간이 지나면 다시 두번 눌러야 종료되는 상태로 초기화 됩니다. backPressedTime을 통해 첫번째 뒤로가기 이벤트가 일어난 시간을 알고 있어야 합니다. @Override public void onBackPressed() { long tempTime = System . currentTimeMillis ( ) ; long intervalTime = tempTime - backPressedTime ; if ( 0 < = int

android Webivew에서 새창 띄우기

Webview를 연동시 일반적인 페이지 이동이 아닌 새창이 띄워져야 하는데 아무동작이 없어 당황 스러울때가 있습니다. android에서는 새창으로 띄워지는 동작은 따로 처리가 필요합니다. 기본적으로는 위와같이 새창이 띄워져야 하는경우 WebChromeClien의 onCreateWindow함수가 호출 됩니다. 함수가 호출 되면 새창과 관련 동작을 추가 해주면 아무동작이 없어 당황스러운 상황은 쉽게 해결 됩니다. webview = ( WebView ) findViewById ( R . id . webview ) ; WebSettings settings = webview . getSettings ( ) ; settings . setJavaScriptEnabled ( true ) ; settings . setSupportMultipleWindows ( true ) ; settings . setJavaScriptCanOpenWindowsAutomatically ( true ) ; 웹뷰셋팅을 해줍니다. webview.setWebChromeClient(new WebChromeClient() { @ Override public boolean onCreateWindow ( final WebView view , boolean dialog ,                                                                       boolean userGesture , Message resultMsg ) { WebView newWebView = new WebView ( MainActivity . this ) ; WebView . WebViewTransport transport                 

AWS API Gateway - HTTP 사용자 지정 통합을 사용하여 API 생성

이미지
안녕하세요. 남산돈가스입니다. API Server를 운영하면서 백엔드에 대한 클라이언트 요청 데이터를 변환하거나 백엔드 응답 데이터를 변환하하는 경우에 AWS API Gateway에서 제공하는 HTTP 사용자 지정 통합을 사용하여 효과적으로 API 를 관리 할 수 있습니다. 또한 API를 API Gateway에 연결함으로써 해당 API에 대한 권한 및 스테이지 관리 등을 간편하게 관리할 수 있다는 점에서 API Gateway를 사용하는 이유를 설명할 수 있습니다. 예전 Lambda function을 등록하고 해당 Lambda를 API Gateway에 연결하여 API로 연동하는 포스팅에 이어 이번 포스팅에서는 HTTP 프록시를 API Gateway에 연결하는 작업을 진행해보려고 합니다. 먼저 AWS에 접속하고 새로운 API Gateway에 접속합니다. API Gateway를 생성하면 위와 같이 /에 대한 매서드만 생성되어있는 상태를 확인하실 수 있습니다. 작업탭에서 리소스 생성 버튼을 선택합니다. 여기서 각각의 API에 대한 리소스와 매서드를 설정하려고한다면, 사용되는 path주소를 입력하여 리소스를 생성합니다.  ( ex. pet에 대한 API를 생성하고자 한다면 /pet 와 같은 리소스를 생성하고 pet에 대한 메서드를 등록하여 사용할 수 있습니다.) 이번 포스팅에서는 해당 API URL에 대한 모든 리소스를 통합하여 관리하려고 하므로 '프록시 리소스로 구성'을 체크하고 리소스 경로에 {proxy+} 를 입력합니다. 프록시 리소스로 구성될 경우 이어서 설정할 API URL하위에 있는 리소스에 모든 경로를 해당 API 설정으로 처리함을 의미합니다. 또한 프록시 설정으로 리소스를 생성할 경우 ANY메서드로 자동 생성되는데 이 또한 리소스에 대한 'POST', 'GET', 'PUT', 'DELETE' 등 모든 메서드를 통합으로 관

[ xcode Tip] 하드용량 확보하기

이미지
맥으로 ios 개발을 하다보면, 용량 부족이라는 문제를 맞이하게 됩니다. 프로젝트를 여러개 진행하면서, xcode가 업데이트되면서 저역시 256G 용량의 하드가 10G 남는 초유의 사태가 벌어졌는데요. 처음에는 정크파일을 없애고, 필요없는 파일들을 지워봤지만, 눈에 띄게 용량이 늘어나지 않았습니다. 바로 문제는 xcode에 있었습니다. xcode에서 아카이브를 만들때 원본파일이 저장되고, 새로운 버전의 시뮬레이터가 업데이트 될때마다 용량은 늘어났습니다. 또한, DerivedData 에 빌드에 대한 정보가 저장되는데, 이폴더 역시 다 지워도 프로젝트 빌드시 문제가 되지 않습니다. 지금 바로, ios 개발을 하시는 분들은 맥북 용량이 부족하다면, 필요없는 파일을 없애, 쾌적한 개발을 하시길 바랍니다. 1. ~/Library/Developer/Xcode/DerivedData   지우기 2.  ~/Library/Developer/Xcode/Archives  지우기 3. ~/Library/Developer/Xcode/iOS Device Logs 지우기 4. ~/Library/Developer/Xcode/ iOS DeviceSupport 필요 없는 시뮬레이터 지우기