투케이2K

114. (Aws/Amazon) [Aws Kinesis Video Streams] Iot Core 프로비저닝 사물 인증서를 통해 디바이스 WebRTC 비디오 스트리밍 업로드 방법 본문

Aws (Amazon)

114. (Aws/Amazon) [Aws Kinesis Video Streams] Iot Core 프로비저닝 사물 인증서를 통해 디바이스 WebRTC 비디오 스트리밍 업로드 방법

투케이2K 2025. 9. 17. 22:14
728x90

[개발 환경 설정]

개발 환경 : Aws / Amazon Web Services

 

[설명 정리]

// --------------------------------------------------------------------------------------
[개발 및 환경]
// --------------------------------------------------------------------------------------

- 인프라 : Aws / Amazon Web Services


- 기술 구분 : Aws / Aws Kinesis Video Streams / Iot Core / WebRTC


- 사전) HLS 개념 설명 : 

  >> HTTP 라이브 스트리밍으로 인터넷을 통해 소비자에게 미디어 콘텐츠를 제공하는 데 사용되는 스트리밍 프로토콜입니다

  >> HLS 는 Apple 장치에서 지원하는 유일한 형식입니다

  >> 미디어는 h.264 또는 h.265 인코딩된 비디오를 포함해야 하며 AAC 인코딩된 오디오는 선택 사항입니다

  >> 미디어 타입 유효한 값의 예로는 "video/h264" 및 "video/h264,audio/aac" 가 있습니다


- 사전) WebRTC 설명 : 

  >> WebRTC 란 웹, 애플리케이션, 디바이스 간 중간자 없이 오디오나 영상 미디어를 포착하고 실시간 스트림할 뿐 아니라, 임의의 데이터도 교환할 수 있도록 하는 기술입니다

  >> WebRTC 는 간단한 API 를 통해 웹 브라우저, 모바일 애플리케이션 및 커넥티드 디바이스 간에 실시간 통신을 활성화할 수 있습니다

  >> WebRTC 주요 용어 : 

    - SDP (Session Description Protocol) : 오디오/비디오 코덱, 해상도, 포트 등 스트리밍 정보를 담은 텍스트 포맷
    - Offer / Answer	: 통신 연결을 협상하기 위한 SDP 메시지 (초기 연결 설정)
    - ICE (Interactive Connectivity Establishment) : NAT/P2P 환경에서도 연결 가능한 경로(IP, 포트 등)를 찾기 위한 기술
    - Candidate : 가능한 연결 경로 (IP + Port 조합)

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[설 명]
// --------------------------------------------------------------------------------------

1. Aws IoT Core 에서 프로비저닝 수행 및 인증서 발급 & 정책 연결

  >> KVS WebRTC SDK (C Producer SDK) 는 사물 인증서 직접 사용 가능합니다

  >> 프로세스 정리 : 
  
    - AWS IoT Core 프로비저닝 사물(Thing) 생성

    - 인증서 발급 (X.509 기반) 아래 파일들을 디바이스에 저장 :

      : device-certificate.pem.crt ------> 사물 인증서에서 내려온 crt

      : private.pem.key ------> 사물 인증서에서 내려온 key

      : AmazonRootCA1.pem (AWS 루트 CA)

    - 인증서에 정책 (Policy) Attach

      : 사물 인증서에는 WebRTC 관련 권한이 반드시 필요합니다. 
  
      : 해당 정책을 인증서에 Attach 하면 디바이스가 WebRTC 마스터로 스트리밍할 수있습니다.

      : 중요 권한 : IoT Core 연결 권한

      : 중요 권한 : KVS WebRTC 채널에서 마스터로 연결 및 시그널링 수행 권한

        {
            "Version": "2012-10-17",
            "Statement": [
                {
                "Effect": "Allow",
                "Action": [
                    "iot:Connect",
                    "iot:Publish",
                    "iot:Subscribe",
                    "iot:Receive"
                ],
                "Resource": "*"
                },
                {
                "Effect": "Allow",
                "Action": [
                    "kinesisvideo:ConnectAsMaster",
                    "kinesisvideo:GetSignalingChannelEndpoint",                    
                    "kinesisvideo:GetIceServerConfig",
                    "kinesisvideo:CreateSignalingChannel",
                    "kinesisvideo:DeleteSignalingChannel",
                    "kinesisvideo:DescribeSignalingChannel",
                    "kinesisvideo:SendAlexaOfferToMaster"
                ],
                "Resource": "arn:aws:kinesisvideo:ap-northeast-2:123456789012:channel/MyWebRTCChannel/*"
                }
            ]
        }


2. KVS 채널 생성 수행

  >> AWS Kinesis Video Streams > 시그널링 채널(Signaling Channel) 생성

  >> 정상적으로 생성 된 경우 신호 채널 ARN 정보 확인


3. 마스터 디바이스 (WebRTC Master) 스트리밍 업로드 동작 수행

  >> 채널 정보 가져오기 : DescribeSignalingChannel 호출 → 채널 ARN 확인

  >> 엔드포인트 획득 : GetSignalingChannelEndpoint 호출 → WSS (시그널링 서버용) , HTTPS (REST API용) 엔드포인트 반환

  >> ICE 서버 설정 가져오기 : GetIceServerConfig 호출 → STUN/TURN 서버 목록 획득 (P2P 연결 시 방화벽/NAT 우회 목적)

  >> 마스터로 연결 : ConnectAsMaster 호출 → 시그널링 서버에 WebSocket 연결 (이제 뷰어(Viewer)가 붙으면 SDP Offer/Answer 교환이 시작됨)

  >> SDP 교환 : 뷰어가 Offer SDP를 전송 > 마스터는 이를 받아 PeerConnection 생성 후 Answer SDP 응답

  >> 영상 업로드 : PeerConnection이 완료되면 미디어 스트림(영상/음성) 전송 시작

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

[자바스크립트 AWS WebRTC 실시간 동영상 재생 수행]

https://blog.naver.com/kkh0977/223170500993?trackingCode=blog_bloghome_searchlist


[Aws Kvs WebRTC 실시간 영상 재생 관련 구성 요소 및 용어 정리]

https://blog.naver.com/kkh0977/223858189791


[Aws KVS WebRTC 채널 생성 및 삭제에 관한 요금 정책 정리]

https://blog.naver.com/kkh0977/223995447546


[AWS] [Lambda] 런타임 Python 3.13 - boto3 모듈 사용해 특정 사물 인증서에 부여 된 policy 정책 JSON 정보 확인

https://blog.naver.com/kkh0977/223984301815?trackingCode=blog_bloghome_searchlist

// --------------------------------------------------------------------------------------
 
728x90
반응형
Comments