React-Native/[AWS] KVS(Kinesis Video Streaming)

[Trouble Shooting] AccessDeniedException: User: arn:aws:iam::#########:user/OOOO is not authorized to perform: kinesisvideo:DescribeSignalingChannel on resource: OOOO

신달수 2024. 5. 6. 16:58

문제 발생 배경

 

아기 양육 모니터링 구현을 위해 채널 신호를 생성하는 과정이 필요했다.

이를 AWS 에서 제공하는 KVS(Kinesis Video Stream) 를 이용하여 

클라이언트 생성과 시그널링 채널 생성을 구현중이었다.

 

캡스톤을 위해 따로 만든 AWS IAM 사용자( 에러 코드에서 OOOO 부분)의

key를 key.js 파일로 따로 설정해주고,

 

이를 이용하여 signaling channel ARN을 가져오던중 다음과 같은 에러메세지를 맞닥뜨렸다.

 

Possible Unhandled Promise Rejection (id: 0):
AccessDeniedException: User: arn:aws:iam::############:user/OOOO 
is not authorized to perform: kinesisvideo:DescribeSignalingChannel on resource: OOOO

문제 해결 과정

 

에러 로그를 봤을때에는, 권한 거부 문제인거같아서 열심히 구글링 한 결과

다음의 공식문서와 접근법을 찾을 수 있었다.

 

https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/security_iam_troubleshoot.html

 

IAM 문제 해결 - Amazon EKS

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

 

즉 , 내가 사용하고있는 IAM 사용자에게 KVS API를 호출할 권한이 없다는 것이었다.

 

그래서 IAM 사용자에게 KVS 관련 권한을 모조리 부여하면 되겠구나! 라는 생각이 들었다.

 

1.

AWS IAM 대시보드 접속

> 'IAM 리소스' 탭의 '사용자' 클릭

> KVS를 사용하고자하는 사용자 클릭(여기서는 OOOO)

 

2. 

'권한 정책' 탭의 '권한 추가' 클릭

 

3. 

'직접 정책 연결' 클릭

> 검색란에 'kinesis' 나 'kinesis video'쳐서 뜨는 관련 정책들

전부 클릭

> 오른쪽 하단의 '다음'버튼 클릭

 

4. 

그 다음 페이지에서 '권한 추가' 버튼 클릭

 

5.

다시 AWS KVS의 API를 호출하여

success 응답이 오는지 보기


느낀 점

 

구글링도 구글링이지만

공식문서를 잘 읽어보고, 거기서 힌트라도 얻어내자! 라는 생각이.. 들었다.