CloudFront 및 AWS Media Services를 사용하여 라이브 스트리밍 비디오 제공 - Amazon CloudFront

CloudFront 및 AWS Media Services를 사용하여 라이브 스트리밍 비디오 제공

AWS Media Services와 CloudFront를 사용하여 전 세계 시청자에게 라이브 콘텐츠를 제공하려면 다음 지침을 참조하세요.

AWS Elemental MediaLive를 사용하여 라이브 비디오 스트림을 실시간으로 인코딩합니다. 큰 비디오 스트림을 인코딩하는 경우 MediaLive에서 최종 사용자에게 배포할 수 있는 더 작은 버전(인코딩)으로 압축합니다.

라이브 비디오 스트림을 압축한 후 다음 두 가지 주요 방법 중 하나를 사용하여 콘텐츠를 준비하고 제공할 수 있습니다.

  • 필요한 포맷으로 콘텐츠를 변환한 후 제공 - 여러 포맷의 콘텐츠가 필요한 경우 AWS Elemental MediaPackage를 사용하여 다양한 디바이스 유형에 맞게 콘텐츠를 패키징합니다. 콘텐츠를 패키징할 때 추가 기능을 구현하고 콘텐츠의 무단 사용을 방지하도록 DRM(Digital Rights Management)을 추가할 수도 있습니다. CloudFront를 사용하여 MediaPackage가 포맷한 콘텐츠를 제공하는 방법에 대한 단계별 지침은 AWS Elemental MediaPackage를 사용하여 포맷된 라이브 비디오 제공 단원을 참조하십시오.

  • 확장 가능 오리진을 사용하여 콘텐츠를 저장하고 제공 - MediaLive에서 뷰어가 사용하는 모든 디바이스에 필요한 포맷으로 콘텐츠를 인코딩한 경우, AWS Elemental MediaStore와 같이 확장성이 우수한 오리진을 사용하여 콘텐츠를 제공할 수 있습니다. CloudFront를 사용하여 MediaStore 컨테이너에 저장된 콘텐츠를 제공하는 방법에 대한 단계별 지침은 AWS Elemental MediaStore를 오리진으로 사용하여 비디오를 제공합니다. 단원을 참조하십시오.

이러한 옵션 중 하나를 사용하여 오리진을 설정했으면 이제 CloudFront를 사용하여 최종 사용자에게 라이브 스트리밍 비디오를 배포할 수 있습니다.

작은 정보

가용성이 높은 실시간 시청 환경을 제공하기 위해 자동으로 서비스를 배포하는 AWS 솔루션에 대한 자세한 내용을 알아볼 수 있습니다. 이 솔루션을 자동으로 배포하는 절차를 보려면 라이브 스트리밍 자동 배포를 참조하십시오.

AWS Elemental MediaStore를 오리진으로 사용하여 비디오를 제공합니다.

AWS Elemental MediaStore 컨테이너에 저장된 비디오가 있으면 CloudFront 배포를 만들어 콘텐츠를 제공할 수 있습니다.

시작하려면 CloudFront에 MediaStore 컨테이너에 대한 액세스 권한을 부여합니다. 그런 다음 CloudFront 배포를 생성하고 MediaStore에서 작동하도록 구성합니다.

AWS Elemental MediaStore 컨테이너에서 콘텐츠를 제공하려면
  1. Amazon CloudFront가 AWS Elemental MediaStore 컨테이너에 액세스하도록 허용의 절차에 따라 이 단계로 돌아가서 배포를 생성합니다.

  2. 다음 설정을 사용하여 배포를 생성합니다.

    1. 오리진 도메인 - MediaStore 컨테이너에 할당된 데이터 엔드포인트. 드롭다운 목록에서 해당 라이브 비디오의 MediaStore 컨테이너를 선택합니다.

    2. 오리진 경로 - 객체가 저장되는 MediaStore 컨테이너의 폴더 구조. 자세한 내용은 오리진 경로 단원을 참조하십시오.

    3. 사용자 지정 헤더 추가 - 요청을 오리진으로 전달할 때 CloudFront에 사용자 지정 헤더를 추가하고자 하는 경우 헤더 이름과 값을 추가합니다.

    4. 뷰어 프로토콜 정책 - HTTP를 HTTPS로 리디렉션을 선택합니다. 자세한 내용은 뷰어 프로토콜 정책 단원을 참조하십시오.

    5. 캐시 정책오리진 요청 정책

      • 캐시 정책(Cache policy)에서 정책 생성(Create policy)을 선택한 그런 다음 캐시 요구 및 세그먼트 기간에 적합한 캐시 정책을 생성합니다. 정책을 생성한 후 캐시 정책의 목록을 새로 고치고 방금 생성한 정책을 선택합니다.

      • 오리진 요청 정책(Origin request policy)의 드롭다운 목록에서 CORS-CustomOrigin을 선택합니다.

    기타 설정의 경우 다른 기술 요구 사항 또는 비즈니스 요구 사항을 기반으로 특정 값을 설정할 수 있습니다. 배포에 대한 모든 옵션 목록과 설정에 대한 정보는 배포 설정 참조 단원을 참조하십시오.

  3. 미디어 플레이어 등 애플리케이션의 링크에 대해 CloudFront를 사용하여 배포한 다른 객체에 사용한 것과 같은 포맷으로 미디어 파일의 이름을 지정합니다.

AWS Elemental MediaPackage를 사용하여 포맷된 라이브 비디오 제공

AWS Elemental MediaPackage를 사용하여 라이브 스트림을 포맷한 경우 CloudFront 배포를 만들고 라이브 스트림을 제공하도록 캐시 동작을 구성하면 됩니다. 다음 프로세스에서는 이미 MediaPackage를 사용하여 라이브 비디오를 위한 채널을 만들었고 엔드포인트를 추가했다는 전제하에 설명을 진행합니다.

MediaPackage용 CloudFront 배포를 수동으로 생성하려면 다음 단계를 수행하십시오.

1단계: CloudFront 배포 생성 및 구성

MediaPackage를 사용하여 생성한 라이브 비디오 채널을 위한 CloudFront 배포를 설정하려면 다음 절차를 완료합니다.

라이브 비디오 채널을 위한 배포를 만들려면
  1. AWS Management Console에 로그인한 다음 https://console.aws.amazon.com/cloudfront/v4/home에서 CloudFront 콘솔을 엽니다.

  2. 배포 생성을 선택합니다.

  3. 다음과 같이 배포를 위한 설정을 선택합니다.

    오리진 도메인

    MediaPackage 라이브 비디오 채널과 엔드포인트가 있는 오리진입니다. 텍스트 필드를 선택한 다음 드롭다운 목록에서 해당 라이브 비디오의 MediaPackage 오리진 도메인을 선택합니다. 한 개의 도메인을 여러 오리진 엔드포인트에 매핑할 수 있습니다.

    다른 AWS 계정을 사용하여 오리진 도메인을 만든 경우 필드에 해당 오리진 URL 값을 입력합니다. 오리진은 HTTPS URL이어야 합니다.

    예를 들어 https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.m3u8과 같은 HLS 엔드포인트의 경우, 오리진 도메인은 3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com입니다.

    자세한 내용은 오리진 도메인 단원을 참조하십시오.

    오리진 경로

    콘텐츠가 제공되는 MediaPackage 엔드포인트의 경로입니다.

    원본 경로 필드는 자동으로 채워지지 않습니다. 올바른 원본 경로를 수동으로 입력해야 합니다.

    오리진 경로의 작동 방식에 대한 자세한 내용은 오리진 경로 단원을 참조하세요.

    중요

    CloudFront 배포의 어딘가로 라우팅하려면 와일드카드 경로 *가 필요합니다. 명시적 경로와 일치하지 않는 요청이 실제 오리진으로 라우팅되지 않도록 하려면 해당 와일드카드 경로에 대해 '더미' 오리진을 만듭니다.

    예 : '더미' 오리진 생성

    다음 예에서는 엔드포인트 abc123 및 def456가 '실제' 오리진으로 라우팅되지만 다른 엔드포인트의 비디오 콘텐츠에 대한 요청은 적절한 하위 도메인 없이 mediapackage.us-west-2.amazonaws.com으로 라우팅되어 HTTP 404 오류가 발생합니다.

    MediaPackage 엔드포인트:

    https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.m3u8 https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/def456/index.m3u8

    CloudFront 오리진 A:

    Domain: 3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com Path: None

    CloudFront 오리진 B:

    Domain: mediapackage.us-west-2.amazonaws.com Path: None

    CloudFront 캐시 동작:

    1. Path: /out/v1/abc123/* forward to Origin A 2. Path: /out/v1/def456/* forward to Origin A 3. Path: * forward to Origin B

    그밖의 배포 설정에 대해, 다른 기술 요구 사항 또는 비즈니스 요구 사항을 기반으로 특정 값을 설정합니다. 배포에 대한 모든 옵션 목록과 설정에 대한 정보는 배포 설정 참조 단원을 참조하십시오.

    다른 배포 설정 선택을 마치면 배포 생성(Create Distribution)을 선택합니다.

  4. 방금 생성한 배포를 선택한 다음 동작(Behaviors)을 선택합니다.

  5. 기본 캐시 동작을 선택한 다음 편집(Edit)을 선택합니다. 오리진에 대해 선택한 채널에 적합한 캐시 동작 설정을 지정합니다. 나중에 한 개 이상의 오리진을 추가한 후 그에 대한 캐시 동작 설정을 편집해 보겠습니다.

  6. CloudFront 배포(CloudFront distributions) 페이지로 이동합니다.

  7. 배포의 마지막 수정(Last modified) 열 값이 배포 중(Deploying)에서 날짜 및 시간으로 바뀔 때까지 기다립니다. 이렇게 상태가 바뀌면 CloudFront에서 배포를 생성한 것입니다.

2단계: MediaPackage 엔드포인트의 도메인에 오리진 추가

다음 단계를 반복하여 각 MediaPackage 채널 엔드포인트를 배포에 추가합니다. '더미' 오리진을 만들어야 한다는 점에 유의하세요.

다른 엔드포인트를 오리진으로 추가하려면
  1. CloudFront 콘솔에서 채널에 대해 생성한 배포를 선택합니다.

  2. 오리진(Origins)을 선택한 다음 오리진 생성(Create origin)을 선택합니다.

  3. 오리진 도메인(Origin domain)의 드롭다운 목록에서 해당 채널의 MediaPackage 엔드포인트를 선택합니다.

  4. 그밖의 설정에 대해, 다른 기술 요구 사항 또는 비즈니스 요구 사항을 기반으로 값을 설정합니다. 자세한 내용은 오리진 설정 단원을 참조하십시오.

  5. 오리진 생성(Create Origin)을 선택합니다.

3단계: 모든 엔드포인트에 대한 캐시 동작 구성

각 엔드포인트에 대해 요청을 올바르게 라우팅하는 경로 패턴을 추가하도록 캐시 동작을 구성해야 합니다. 지정하는 경로 패턴은 제공하는 비디오 포맷에 따라 다릅니다. 다음 절차에는 Apple HLS, CMAF, DASH, Microsoft Smooth Streaming 포맷에 대해 사용할 경로 패턴 정보가 나와 있습니다.

일반적으로 각 엔드포인트에 대해 두 개의 캐시 동작을 설정합니다.

  • 패턴 매니페스트(해당 파일에 대한 인덱스)

  • 세그먼트(비디오 콘텐츠의 파일)

엔드포인트에 대한 캐시 동작을 만들려면
  1. CloudFront 콘솔에서 채널에 대해 생성한 배포를 선택합니다.

  2. 동작(Behaviors)을 선택한 다음 동작 만들기(Create behavior)를 선택합니다.

  3. 경로 패턴에서 특정 MediaPackage OriginEndpoint GUID를 경로 접두사로 사용합니다.

    경로 패턴

    https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.m3u8과 같은 HLS 엔드포인트의 경우, 다음 두 가지 캐시 동작을 만듭니다.

    • 상위 및 하위 매니페스트에 대해 /out/v1/abc123/*.m3u8을 사용합니다.

    • 콘텐츠 세그먼트에 대해 /out/v1/abc123/*.ts를 사용합니다.

    https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.m3u8과 같은 CMAF 엔드포인트의 경우, 다음 두 가지 캐시 동작을 만듭니다.

    • 상위 및 하위 매니페스트에 대해 /out/v1/abc123/*.m3u8을 사용합니다.

    • 콘텐츠 세그먼트에 대해 /out/v1/abc123/*.mp4를 사용합니다.

    https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.mpd와 같은 DASH 엔드포인트의 경우, 다음 두 가지 캐시 동작을 만듭니다.

    • 상위 매니페스트에 대해 /out/v1/abc123/*.mpd를 사용합니다.

    • 콘텐츠 세그먼트에 대해 /out/v1/abc123/*.mp4를 사용합니다.

    https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.ism과 같은 Microsoft Smooth Streaming 엔드포인트의 경우, 한 개의 매니페스트만 제공되므로 캐시 동작을 out/v1/abc123/index.ism/* 하나만 만듭니다.

  4. 각 캐시 동작에 대해 다음 설정의 값을 지정합니다.

    뷰어 프로토콜 정책

    Redirect HTTP to HTTPS(HTTP를 HTTPS로 재지정)를 선택합니다.

    캐시 정책 및 오리진 요청 정책

    캐시 정책(Cache policy)에서 정책 생성(Create policy)을 선택합니다. 새 캐시 정책에 대해 다음 설정을 지정합니다.

    Minimum TTL

    5초 미만으로 설정하면 부실한 콘텐츠 서비스 방지에 도움이 됩니다.

    쿼리 문자열

    쿼리 문자열(Query strings)(캐시 키 설정(Cache key settings)에 있음)에서 지정된 쿼리 문자열 포함(Include specified query strings)을 선택합니다. 허용(Allow)에서 다음 값을 입력하고 항목 추가(Add item)를 선택하여 값을 추가합니다.

    • CloudFront가 캐시 기반으로 사용할 쿼리 문자열 파라미터로 m을 추가합니다. MediaPackage 응답에는 항상 ?m=### 태그가 포함되어 엔드포인트의 수정 시간을 캡처합니다. 이 태그에 대해 다른 값을 사용하여 이미 콘텐츠가 캐싱된 경우 CloudFront는 캐싱된 버전을 제공하는 대신 새로운 매니페스트를 요청합니다.

    • MediaPackage에서 시간 이동 보기 기능을 사용하려는 경우, 매니페스트 요청(start, end*.m3u8)에 대한 캐시 동작에 *.mpdindex.ism/*를 추가 쿼리 문자열 파라미터로 지정합니다. 이렇게 하면 매니페스트 요청에서 요청된 시간 기간에 해당하는 콘텐츠가 제공됩니다. 시간 이동 보기 및 콘텐츠 시작/종료 요청 파라미터 포맷에 대한 자세한 내용은 AWS Elemental MediaPackage 사용 설명서시간 이동 보기를 참조하세요.

    • MediaPackage에서 매니페스트 필터링 기능을 사용하는 경우, 매니페스트 요청(*.m3u8, *.mpd, index.ism/*)에 대한 캐시 동작에 사용할 캐시 정책에 aws.manifestfilter를 추가 쿼리 문자열 파라미터로 지정합니다. 이렇게 하면 매니페스트 필터링 기능이 작동하는 데 필요한 MediaPackage 오리진에 aws.manifestfilter 쿼리 문자열을 전달하도록 배포가 구성됩니다. 자세한 내용은 AWS Elemental MediaPackage 사용 설명서매니페스트 필터링을 참조하세요.

    • 지연 시간이 짧은 HLS(LL-HLS)를 사용하는 경우 매니페스트 요청(*.m3u8)의 캐시 동작과 함께 사용하는 캐시 정책에 대한 추가 쿼리 문자열 파라미터로 _HLS_msn 및 _HLS_part를 지정합니다. 이렇게 하면 LL-HLS 차단 재생 목록 기능이 작동하는 데 필요한 MediaPackage 오리진에 _HLS_msn 및 _HLS_part 쿼리 문자열을 전달하도록 배포가 구성됩니다.

  5. 생성(Create)을 선택합니다.

  6. 캐시 정책을 만든 후 캐시 동작 생성 워크플로로 돌아갑니다. 캐시 정책의 목록을 새로 고치고 방금 생성한 정책을 선택합니다.

  7. 동작 만들기(Create behavior)를 선택합니다.

  8. 엔드포인트가 Microsoft Smooth Streaming 엔드포인트가 아닌 경우 이 단계를 반복하여 두 번째 캐시 동작을 만듭니다.

4단계: 헤더 기반 MediaPackage CDN 승인 활성화

MediaPackage 엔드포인트와 CloudFront 배포 간에 헤더 기반 미디어 패키지 CDN 승인을 활성화하는 것이 좋습니다. 자세한 내용은 AWS Elemental MediaPackage 사용 설명서의 MediaPackage에서 CDN 승인 활성화를 참조하세요.

5단계: CloudFront를 사용하여 라이브 스트림 채널 제공

배포를 생성하고 오리진을 추가하고 헤더 기반 CDN 승인을 활성화한 후 캐시 동작을 생성하면 CloudFront를 사용하여 라이브 스트림 채널을 제공할 수 있습니다. CloudFront는 캐시 동작에 대해 구성한 설정에 따라 최종 사용자의 요청을 올바른 MediaPackage 엔드포인트로 라우팅합니다.

애플리케이션(예: 미디어 플레이어)의 링크로, CloudFront URL에 독립형 포맷의 미디어 파일의 URL을 지정합니다. 자세한 내용은 CloudFront에서 파일에 대한 URL 형식 사용자 지정 단원을 참조하십시오.