일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- Java
- node.js ec2
- AWS SDK for JavaScript v3
- npm 글로벌 설치 삭제 했는데 실행됨
- node.js ec2 ip접속
- npm 전역 설치 삭제
- 스트레스툴
- aws sdk v3
- HTML
- Foreign Key (외래 키)
- COALESCE함수
- Apache Benchmark
- Primary key(기본 키)
- sql 데이터 삽입
- node.js ec2 배포
- 자바
- sns 샌드박스 종료
- node.js
- ab 벤치마크
- filezilla
- sms 샌드박스
- sql 데이터 추가
- SMS sandbox
- EC2
- html tag
- 이것이 자바다
- sms 휴대폰 인증
- PostgreSQL CAST
- HTML 태그
- Apache ab
- Today
- Total
망각에 재주 있는 나를 위해 기록하는 곳.
[AWS SNS] 휴대폰 sms 인증 구현 및 SNS 샌드박스 종료 (AWS SDK for JavaScript v3) 본문
AWS SNS를 활용하여 회원가입 시 휴대폰 인증을 할 수 있는 기능을 만들어 보려고 한다.
먼저 구글링으로 한 번 훑어보고 기능을 구현하는데, 대부분 sdk v2로 만들어져 있었다.
나는 v3로 만들고 싶었다.
먼저 테스트를 해보자.
sns를 검색해서 들어오면 이런 첫 페이지가 등장하는데, 주제생성에서 주제이름을 입력하고 테스트할 주제를 생성한다.
(근데 주의할 점이 있는데, sns의 sms기능은 서울리전에서 사용 불가하다. https://docs.aws.amazon.com/ko_kr/sns/latest/dg/sns-supported-regions-countries.html이곳에서 sms기능을 사용할 수 있는 리전의 목록이 있으니 참고하면된다. 나는 도쿄리전을 선택해서 주제를 생성했다.)
유형은 표준으로 하고 나머지를 그냥 기본값으로 두고 주제를 생성한다.
주제가 생성 완료되면 아래 구독에서 구독생성을 클릭한다.
주제ARN은 방금 만든 주제(토픽)을 선택하고 프로토콜은 SMS를 선택한다.
(만약 목록에 sms가 없다면 해당 리전은 sms지원이 안되는거니까 리전 선택을 잘 했나 다시 확인해봐야 한다.)
SMS를 선택하면 엔드포인트로 휴대폰 번호를 입력해야하는데, 처음에는 샌드박스에서 진행된다.
(처음에 이 개념을 잘 몰라서 테스트하는데 애를 많이 먹었다.)
샌드박스라는게 찾아보면 대강 아래와 같다.
한마디로 AWS SMS기능을 함부로 불특정 인원에게 사용하지 못하게 하려는 의도 같다.
(링크: https://docs.aws.amazon.com/ko_kr/sns/latest/dg/sns-sms-sandbox.html)
어쨰든 다시 돌아와서 전화번호를 추가한다.
그럼 아래와 같이 확인 문자가 간다. 받은 확인 코드를 입력한다.
전화번호 확인이 되었으면 엔드포인트 목록에 방금 인증한 전화번호가 있을테니 선택한다. 그리고 구독생성을 진행.
구독생성이 완료되었다.
구독 탭에 보면 인증한 번호가 구독되어 있는데 샌드박스 환경에서 여기는 사실 필요가 없다.
문자 메시지(SMS)탭에 들어가본다.
문자 메시지(SMS)탭에 들어오면 샌드박스 대상 전화번호가 있는데, 여기에 등록된 번호만 SMS기능을 이용할 수 있다.
알기론 최대 10개까지 번호를 등록할 수 있고, 한번 등록되면 24시간 후에 삭제 가능하다.
(나는 이걸 몰라서 구독에서 번호 추가 삭제만 종일하며 삽질을 했다.)
이제 sns권한을 사용할 수 있게 iam설정을 할 차례이다. iam으로 이동한다.
사용자 그룹에서 그룹을 하나 생성한다.
(바로 사용자에서 생성해도된다. 근데 나는 이미 이렇게 해버렸다.)
그룹이름을 정하고 SNS정책을 연결해서 그룹을 생성한다.
사용자 탭에서 사용자 생성에서 사용자를 생성한다.
권한은 아까만든 sns권한을 가진 그룹에 연결해서 사용자 생성을 한다.
사용자 그룹에서 가서 보면 그룹에 사용자가 잘 추가 되었다. 방금 추가된 사용자 이름을 클릭한다.
엑세스키를 만들어야 한다. 요약에서 엑세스 키 만들기를 클릭.
나는 기타를 선택
(여기서 어떤거를 선택해야하는지 아직 확실히 모르겠다...)
엑세스 키 태그 쓸거면 설정하고(안써도 되고), 엑세스 키 만들기를 클릭하면
이런 화면이 나온다. *여기서 비밀 엑세스 키는 노출되지 않는 곳에 잘 보관해야한다.
*비밀 엑세스 키는 이 페이지를 벗어나면 다시는 볼 수 없다. 다 되었으면 완료 클릭.
이제 sdk를 사용해서 휴대폰에 문자를 보내본다. 아래에 npm으로 설치한다.
@aws-sdk/client-sns
dotenv
sdk v3와 관련해서 @aws-sdk/client-sns의 기능들은 https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sns/여기에서 자세히 찾아 볼 수 있다.
여기서 PublishCommand를 사용해 문자를 보낼 것이다.
.env파일에 엑세스 키, 비밀 엑세스키를 설정.
테스트할 파일을 만들어서 아래와 같이 작성하고 실행하면
이렇게 문자가 온다.
여기까지 테스트가 잘 되었다. 그러나 한 가지 문제가 있다.
이 모든 SMS기능은 SNS샌드박스에 등록된 전화번호만 가능하다.
이제 SNS샌드박스를 탈출 해야한다.
관련 문서는 ( https://docs.aws.amazon.com/sns/latest/dg/sns-sms-sandbox-moving-to-production.html) 에 잘 나와있다.
여기서 시키는 대로만 하면 된다. 내가 했던 과정은 아래와 같다.
계정 정보에 SNS 샌드박스 종료라는게 있다. 여기로 들어간다.
SNS샌드박스를 종료하기 위해 아래와 같은 항목들은 작성해야하는데
선택사항이라도 내 생각에 왠만하면 다 적어주는게 좋은거 같다.
(다른 글들 보면 한글로 적어도 되는거 같은데, 당시 난 잘 몰라서 영어 번역기 도움 받아서 작성했다.)
위와 같이 서비스 할당량 증가 사례를 생성하여 보내 놓으면 며칠뒤에 aws에서 답장을 해준다.
조건이 만족한다면 샌드박스가 해제되어 아래와 같이 샌드박스가 사라진다.
이제 모든 휴대폰 번호로 문자 메세지를 보낼 수 있다.
문자 메세지를 사용하는 지출 한도도 다시 체크해서 필요 이상으로 과금되지 않게 잘 설정해주면 된다.
만약 조건이 충분치 않다면 어떤게 충분하지 않은지 알려주니까 알려준대로 다시 하면된다.
끝.
'AWS' 카테고리의 다른 글
[AWS] Node.js 프로젝트 ec2에 배포하기ver.2 (0) | 2024.07.02 |
---|---|
[EC2] Apache Benchmark(ab) 부하 테스트 (0) | 2024.03.22 |
[AWS] Node.js 프로젝트 ec2에 배포하기 후기 - ec2가 자꾸 죽을때 (0) | 2024.03.04 |
[AWS] Node.js 프로젝트 ec2에 배포하기 후기 - mongoDB에러 (0) | 2024.03.04 |
[AWS] Node.js 프로젝트 ec2에 배포하기 4 (0) | 2024.03.04 |