안경잡이개발자

728x90
반응형

  AWS에서 몇몇 서비스는 의도치 않은 과금을 막기 위해 서비스 한도가 정해져 있습니다. 대표적으로 AWS SNS의 문자 메시지(SMS) 전송 서비스는 기본적으로 한 달에 1달러($) 어치만 사용할 수 있도록 제한되어 있습니다. 그래서 아무 의심 없이 AWS SMS 기능을 구현해 놓았는데, 기본 한도인 1달러를 초과하여 앱 사용자에게 문자 메시지가 가지 않아서 낭패를 보는 경우가 있습니다.

 

  이럴 때는 AWS 지원 센터에 방문해서 특정한 서비스의 한도를 증가하겠다고 요청 문서를 작성하시면 됩니다.

 

▶ AWS 지원 센터(Support Center)https://console.aws.amazon.com/support/home

 

  AWS 지원 센터에서 [Create Case] 버튼을 눌러서 요청 글을 작성할 수 있습니다.

 

 

  이후에 [Service Limit Increase] 탭을 누르고, 원하는 서비스를 선택할 수 있습니다. 저는 AWS [SMS Text Messaging] 서비스의 한도를 높이고자 합니다.

 

 

  이후에 [General Limits]를 선택한 뒤에 한계 값(Limit Value)을 설정할 수 있습니다. 일반적으로 이 값은 늘리고자 하는 수치를 의미합니다. 저는 AWS SMS를 한 달에 400 달러까지 사용할 수 있다고 적은 것입니다.

 

 

  이후에 [Case Description] 탭에서는 어떻게 서비스를 사용할 것인지, 한도를 증가시키는 이유는 무엇인지 등에 대한 정보를 적으면 됩니다.

 

 

  일반적으로 다음과 같은 형태로 영어 문장을 작성해서 보내시면 됩니다. 제가 실제로 사용했던 문장 양식입니다.

 

"We require an SMS limit increase of {금액} USD per month to make sure of the serviceability of our application ({웹 사이트 주소}) The app provides a {제공하는 서비스} service that uses SMS messaging for a one-time password verification. Users are required to submit and verify their mobile numbers upon the sign-up process. Our customers are located in worldwide countries such as Korea, United States, Singapore, India, etc. We’re expecting up to {사용량} SMS to be sent out everyday."

 

  이후에 [Contact Options] 탭에서 회신을 받을 언어 등을 설정해서 [Submit]을 진행하시면 됩니다.

 

 

(+ 추가)

 

  위 문장 양식으로 SMS 한도 증가 요청을 보냈더니 AWS 측에서 [사용하고자 하는 API 지역(Region)], [고객에게 보낼 문자 메시지 템플릿(Template)]을 추가 정보로 요청했습니다. 따라서 다음과 같은 두 가지 정보를 추가적으로 적어서 보내시면 좋을 것 같습니다.

 

1) Which AWS region will the user be calling our API/service from: Tokyo

2) Message templates for this country:

 

"Welcome to {서비스 이름}, your verification code is ({번호})."

 

  일반적으로 국내에서 AWS SMS 기능을 이용하시는 분은 Tokyo를 설정합니다. 그래서 위와 같이 추가적인 내용도 함께 보내시면 좋을 것 같습니다. 보내지 않으시면 AWS 서포트 센터 측에서 추가적인 정보를 요청하고, 이에 대해 응답하는 과정에서 5일 정도 시간이 소요될 수 있으므로 미리 보내시면 좋습니다. (AWS의 서포트 센터는 그렇게 빠르게 응답을 해주지 않습니다. 따라서, 가능하면 한 번에 끝낼 수 있도록 AWS가 필요해 할 만한 모든 정보를 기입하면 좋아요.)

 

  아무튼 AWS SMS 지출 한도 승인을 완료되었을 때는 다음과 같이 AWS에서 연락이 옵니다. (저는 400달러로 한도를 설정했습니다.)

 

 

  이후에 다음과 같이 AWS SMS 탭으로 이동하여 한도를 늘여 주시면 됩니다.

 

 

  또한 설정 이후에 문자 메시지 기능이 즉시 동작하지는 않을 수 있습니다. 저는 한 10분 이상 보내지지 않았습니다. 그 당시에 "No quota left for account"라는 로그 메시지가 출력되었다가, 시간이 지나니까 정상적으로 문자 메시지가 보내지더군요.

728x90
반응형

Comment +0

728x90
반응형

  이번 시간에는 AWS EC2에 AWS RDS를 연동하는 방법에 대해서 알아보도록 하겠습니다. 기존에 운영하는 AWS EC2 서비스가 있을 때 이에 안전한 방법으로 데이터베이스를 연결해야 하는 경우가 존재할 수 있습니다. 따라서 그럴 때를 대비하여 한 번 AWS EC2에 AWS RDS를 연동해보도록 하겠습니다.


※ AWS EC2 인스턴스의 VPC 정보 확인 ※


  일단 자신이 현재 가지고 있는 AWS EC2 정보를 먼저 파악하는 것이 중요합니다. 우리는 이 EC2에 AWS RDS 서비스를 연결할 것이기 때문에 EC2와 동일한 VPC에 AWS RDS를 설치해야 해요. 그러므로 VPC ID를 확인하는 것이 첫 번째입니다. 이후에는 [보안 그룹]을 확인합니다. 현재 제 AWS EC2 인스턴스의 보안 그룹은 launch-wizard-2입니다.



※ DB 보안 그룹 설정하기 ※


  따라서 [보안 그룹] 탭으로 이동해보도록 합시다. 그러면 아까 확인했던 launch-wizard-2라는 이름의 보안 그룹이 눈에 보입니다. 이 보안 그룹의 ID 값을 기록하세요. 우리는 이 보안 그룹에서만 DB에 접근할 수 있도록 설정할 것입니다. 이후에 [보안 그룹 생성] 버튼을 눌러보도록 합시다. 



  이제 DB Security Group이라는 이름으로 우리가 만들 DB가 들어갈 보안 그룹을 만들어 주시면 됩니다. 이 때 [인바운드] 보안 그룹 규칙으로 방금 우리가 확인했던 EC2의 보안 그룹에서만 접근할 수 있도록 설정해주시면 됩니다. 이 때 저는 MySQL DB를 사용할 것이므로 MySQL 포트인 3306으로 설정했습니다.



※ DB 서브넷 그룹 설정하기 ※


  이제 AWS RDS의 [서브넷 그룹] 탭으로 이동하여 [DB 서브넷 그룹 생성] 버튼을 눌러서 서브넷 그룹을 만들어 보도록 하겠습니다.



  다음과 같이 DB Subnet Group이라는 이름으로 서브넷 그룹을 만든 이후에 EC2와 동일한 VPC를 선택합니다.  그리고 [이 VPC와 관련된 모든 서브넷 추가] 버튼을 누르시면 됩니다.




  결과적으로 DB 서브넷 그룹을 생성해주시면 됩니다. 그러면 다음과 같이 하나의 서브넷 그룹 생성이 완료됩니다.



※ DB 한글 설정을 위한 파라미터 그룹 설정하기 ※


  MySQL 데이터베이스는 기본적으로 한글을 지원하지 않습니다. 그래서 [파라미터 그룹] 탭으로 이동하여 한글 지원을 위한 [파라미터 그룹 생성]을 진행하셔야 합니다.



  다음과 같이 MySQL 5.6 버전의 파라미터 그룹을 만들어 줍시다.



  이제 만들어진 파라미터 그룹으로 들어가 편집을 수행합니다.



  가장 먼저 [char]를 검색하여 모든 캐릭터 인코딩 관련 값을 UTF8으로 변경해주세요.



  이후에 [collation]을 검색하여 모든 값을 utf8_general_ci로 변경해 주시면 됩니다.




  이후에는 꼭 [변경 사항 저장] 버튼을 눌러서 저장해 주시면 됩니다.



※ AWS RDS 데이터베이스 생성하기 ※


  이제 실질적으로 MySQL 데이터베이스를 생성해보도록 하겠습니다. 그리고 AWS EC2에서만 접속이 가능하도록 설정할 것입니다.



  다음과 같이 MySQL 엔진을 선택하여 [RDS 프리 티어에 적용되는 옵션만 사용]을 체크해주세요. 무료로 이용하는 편이 좋을 거예요.



  결과적으로 다음과 같이 MySQL 5.6을 선택하여 만들어 주시면 됩니다.




  다만 고급 설정 구성을 하실 때에는 서브넷 그룹으로는 우리가 만들었던 DB Subnet Group을 선택한 뒤에, 보안 그룹도 마찬가지로 우리가 만들었던 DB Security Group을 선택하시면 됩니다. 그리고 [퍼블릭 액세스 가능성]아니요로 선택해주셔야 VPC 내부의 EC2에서만 접근이 가능합니다.



  결과적으로 데이터베이스 옵션으로는 아까 만들었던 한글 전용 파라미터 그룹을 선택하시고, 나머지는 기본 설정으로 데이터베이스를 생성해주시면 됩니다.




  결과적으로 다음과 같이 DB 인스턴스가 생성되었습니다.



※ AWS RDS에 연결하기 ※


  이제 만들어진 데이터베이스의 정보를 확인해보도록 합시다.



  다음과 같이 [연결] 탭에서 엔드포인트를 확인하시면 됩니다. 이 엔드포인트 주소로 접속할 수 있어요.



  이제 한 번 접속을 해봅시다.


  ▶ MySQL 접속 명령어: mysql -u empo -p --host empo.crtzcfwok2ed.ap-northeast-2.rds.amazonaws.com


  다음과 같이 외부 IP에서 해당 MySQL에 접속하려고 하면 연결 오류 메시지가 출력됩니다. 보안 그룹이 우리를 지켜주고 있는 거예요.



  하지만 같은 VPC 내에 있는 EC2에서 접근을 시도하면 다음과 같이 성공적으로 연결이 이루어지는 것을 확인할 수 있습니다.



  따라서 성공적으로 AWS EC2에 AWS RDS를 연동하게 된 것입니다.

728x90
반응형

Comment +2

  • CNOO 2019.09.17 16:55

    정말 감사드립니다. 덕분에 잘 해결해서 RDS서비스 사용하게 되었습니다!
    제 블로그에 참고하여 메모용 글 작성해도 될까요?
    출처는 당연히 남깁니다!

  • jpjpjp 2020.03.27 18:33

    putty를 통해서 ec2로 접근하는데 ERROR 1045 (28000): Access denied for user ..... 이런 오류가 뜹니다 ㅜㅜ 패스워드가 맞아도 뜨고 안맞아도 뜨네요 이유가 뭘까요..?