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가 MediaStore 컨테이너에 액세스하도록 허용의 절차에 따라 이 단계로 돌아가서 배포를 생성합니다.

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

    오리진 도메인 이름

    MediaStore 컨테이너에 할당된 데이터 엔드포인트. 드롭다운 목록에서 해당 라이브 비디오의 MediaStore 컨테이너를 선택합니다. MediaStore 오리진의 포맷은 Container-OriginEndpointURL입니다. 예를 들면 mymediastore.data.mediastore.us-east-1.amazonaws.com과 같습니다. 자세한 내용은 Origin Domain Name 섹션을 참조하세요.

    오리진 경로

    객체가 저장되는 MediaStore 컨테이너의 폴더 구조. 자세한 내용은 Origin Path 섹션을 참조하세요.

    오리진 사용자 지정 헤더

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

    Viewer Protocol Policy

    Redirect HTTP to HTTPS(HTTP를 HTTPS로 재지정)를 선택합니다. 자세한 내용은 Viewer Protocol Policy 섹션을 참조하세요.

    Object Caching

    사용하는 인코더가 모든 객체의 캐시 제어를 설정할 수 없는 경우 Customize(사용자 지정)를 선택합니다. 인코더가 모든 객체의 캐시 제어를 설정할 수 있는 경우 Origin Cache Headers(오리진 캐시 헤더)를 선택합니다.

    최소 TTL, 최대 TTL 및 기본 TTL

    캐시 수요 및 세그먼트 기간에 따라 적절하게 설정합니다.

    Error Caching Minimum TTL

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

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

  3. CloudFront에서 배포를 프로비저닝한 후 캐시 동작을 편집하여 오리진에 대한 CORS(Cross-Origin Resource Sharing)를 설정합니다.

    1. 배포를 선택한 후 Distribution Settings(배포 설정)를 선택합니다.

    2. 동작을 선택하고, 오리진을 선택한 다음 편집을 선택합니다.

    3. 선택한 요청 헤더 기반의 캐시에서 Whitelist(화이트리스트)를 선택하고, 화이트리스트 헤더에서 오리진을 선택합니다.

    CORS에 대한 자세한 내용은 요청 헤더 기반의 콘텐츠 캐싱CORS(Cross-Origin Resource Sharing) 설정을 준수하도록 CloudFront 구성을 참조하십시오.

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

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

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

참고

다음 프로세스를 사용하는 대신 MediaPackage에 채널을 저장할 때 CloudFront 배포를 자동으로 생성하도록 선택할 수 있습니다. 자세한 내용은 AWS Elemental MediaPackage 사용 설명서AWS Elemental MediaPackage에서 배포 생성을 참조하십시오.

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

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

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

라이브 비디오 채널을 위한 배포를 만들려면

  1. AWS Management Console에 로그인한 다음 https://console.aws.amazon.com/cloudfront/v3/home에서 CloudFront 콘솔을 엽니다.

  2. [Create Distribution]을 선택합니다.

  3. [Select a delivery method for your content]의 [Web] 섹션에서 [Get Started]를 선택합니다.

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

    오리진 도메인 이름

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

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

    자세한 내용은 Origin Domain Name배포를 만들거나 업데이트할 때 지정하는 값 단원을 참조하십시오.

    오리진 경로

    콘텐츠가 제공되는 MediaPackage 엔드포인트의 경로입니다. 오리진 도메인 이름을 선택하면 CloudFront에서 오리진 경로를 채웁니다.

    오리진 도메인 이름에 다른 AWS 계정의 채널을 사용한 경우에는 오리진 경로 필드가 자동으로 채워지지 않습니다. 다른 계정에서 올바른 오리진 경로를 확인하여 직접 입력해야 합니다.

    오리진 경로의 작동 방식에 대한 자세한 내용은 Origin Path배포를 만들거나 업데이트할 때 지정하는 값 단원을 참조하십시오.

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

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

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

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

  7. CloudFront Distributions(CloudFront 배포) 페이지로 이동합니다.

  8. 배포의 상태 열 값이 진행 중에서 배포 완료로 바뀔 때까지 기다립니다. 이렇게 상태가 바뀌면 CloudFront에서 배포를 생성한 것입니다.

2단계: 다른 엔드포인트를 오리진으로 추가

다음 단계를 반복하여 각 MediaPackage 채널 엔드포인트를 배포에 추가합니다.

다른 엔드포인트를 오리진으로 추가하려면

  1. CloudFront 콘솔에서 채널에 대해 생성한 배포를 선택합니다.

  2. Origins and Origin Groups(오리진 및 오리진 그룹) 탭에서 Create Origin(오리진 생성)을 선택합니다.

  3. Origin Domain Name(오리진 도메인 이름)의 드롭다운 목록에서 해당 채널의 MediaPackage 엔드포인트를 선택합니다. CloudFront는 오리진 경로 필드를 자동으로 완성합니다.

  4. 그밖의 설정에 대해, 다른 기술 요구 사항 또는 비즈니스 요구 사항을 기반으로 값을 설정합니다. 자세한 내용은 오리진 설정배포를 만들거나 업데이트할 때 지정하는 값 단원을 참조하십시오.

  5. Create를 선택합니다.

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

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

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

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

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

엔드포인트에 대한 캐시 동작을 만들려면

  1. CloudFront 콘솔에서 채널에 대해 생성한 배포를 선택합니다.

  2. Behaviors(동작) 탭에서 Create Behavior(동작 만들기)를 선택합니다.

  3. Cache Behavior Settings(캐시 동작 설정) 섹션에서 각 엔드포인트 유형에 대한 다음 지침에 나온 첫 번째 패턴으로 Path Pattern(경로 패턴)을 채웁니다. 예를 들어 DASH 엔드포인트의 경우 Path Pattern(경로 패턴)*.mpd를 입력합니다.

    경로 패턴

    HLS 엔드포인트의 경우, 다음 두 가지 캐시 동작을 만듭니다.

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

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

    CMAF 엔드포인트의 경우, 다음 두 가지 캐시 동작을 만듭니다.

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

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

    DASH 엔드포인트의 경우, 다음 두 가지 캐시 동작을 만듭니다.

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

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

    Microsoft Smooth Streaming 엔드포인트의 경우, 한 개의 매니페스트만 제공되므로 캐시 동작을 index.ism/* 하나만 만듭니다.

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

    Viewer Protocol Policy

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

    선택한 요청 헤더 기반의 캐시

    None (improves caching)(없음(캐싱 향상))을 선택합니다.

    캐싱 향상에 대한 자세한 내용은 CloudFront 캐시에서 직접 처리되는 요청의 비율 증가(캐시 적중률) 단원을 참조하십시오.

    Object Caching

    MediaPackage는 정확한 재생 동작을 보장하기 위해 기본 Cache-Control 헤더를 설정합니다. 이러한 값을 사용하려면 Use Origin Cache Headers(오리진 캐시 헤더 사용)를 선택합니다. 하지만 비디오 세그먼트의 캐시 시간이 증가할 수 있습니다. 객체가 CloudFront 캐시에 유지되는 시간을 사용자 지정하는 방법은 Object Caching배포를 만들거나 업데이트할 때 지정하는 값 단원을 참조하십시오.

    Minimum TTL

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

    Query String Forwarding and Caching

    Forward all, cache based on whitelist(모두 전달, 화이트리스트 기반으로 캐싱)을 선택합니다.

    Query String Whitelist

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

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

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

  5. Create를 선택합니다.

  6. 엔드포인트가 Microsoft Smooth Streaming 엔드포인트가 아닌 경우 Create Behavior(동작 만들기)를 선택한 후 이 단계를 반복하여 두 번째 캐시 동작을 만듭니다.

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

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

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