본문 바로가기
CSP (Cloud Service Provider)/AWS

[AWS] AWS Elemental MediaStore

by BTC_류지연 2023. 7. 20.

베하 ~~~~!

안녕하세요 오늘도 서 지 타 산 입니다 !!

요즘 비가 아주 많이 내려 항상 안전에 유의하시길 바래요.

 

 

지난 시간에 이어 이번 시간에도 유용한 정보를 가져왔어요.

AWS Elemental MediaStore 이라는 서비스에 대하여 함께 알아보아요.

팔로팔로팔로미 ~~~~~


AWS ElementalMediaStore?

라이브 제작에 필요한 우수한 성능과 즉각적 일관성을 제공하는 비디오 제작 및 스토리지 서비스.

 

MediaStore를 사용하여 비디오 애셋을 컨테이너에서 객체로 관리함으로써 안전적인 클라우드 기반 미디어 워크플로를 구축할 수 있습니다.

서비스를 사용하려면 인코더나 데이터 피드와 같은 소스의 객체를, MediaStore에서 만든 컨테이너에 업로드합니다.

MediaStore는 완벽한 일관성, 최소 지연 시간의 읽기 및 쓰기, 많은 양의 동시 요청을 처리할 수 있는 능력이 요구될 때 조각화된 비디오 파일을 저장할 수 있는 훌륭한 수단입니다.

 

작동 방식


AWS Elemental MediaStore를 사용해야 하는 이유

MediaStore는 워크플로를 위한 미디어 최적화 오리진 스토어로, 클라우드에서 라이브 동영상 콘텐츠를 스트리밍하는 데 필요한 성능, 신뢰성, 확장성을 제공합니다. 

이 서비스는 미디어 애플리케이션을 위해 특별히 설계되었으며, 아주 작은 크기의 동영상 세그먼트를 스토리지에 쓰고 최신 파일을 출력하여 시청자가 증가함에 따라 수요를 확장하고 대기 시간을 극도로 최소화합니다.

 

  • 사용 사례 
    • 미디어 수집 가속화
    • 지연 시간이 짧은 스트림 생성
    • 라이브 스트리밍 플랫폼 구축

 

  1) Amazon CloudFront

      - 최종 사용자에게 데이터와 비디오를 안전하게 전송하는 글로벌 CDN(콘텐츠 전송 네트워크) 서비스입니다.                       - CloudFront를 사용하여 최고의 성능으로 콘텐츠가 제공됩니다. 

 

  2) AWS CloudFormation

      - AWS 리소스를 모델링 및 설정할 수 있는 서비스입니다.

      - 필요한 템플릿을 생성하면 AWS CloudFormation이 해당 리소스의 프로비저닝과 구성을 담당합니다.

      - AWS 리소스를 개별적으로 생성하고 구성할 필요가 없으며 어떤 것이 무엇에 의존하는지 파악할 필요도 없습니다.

      - AWS CloudFormation에서 모든 것을 처리합니다.

 

  3) AWS Cloudtrail

      - Management Console, AWS CLI 호출을 포함하여 CloudTrail API에 대한 호출을 모니터링할 수 있는 서비스입니다.

 

  4) Amazon CloudWatch

     - CloudWatch에서 컨테이너와 객체의 상태 변화를 추적하는 MediaStore 이벤트 사용.

 

  5) AWS Identity and Access Management (IAM)

     - 사용자의 AWS 리소스에 대한 액세스를 안전하게 제어하도록 지원하는 웹 서비스입니다.

 

  6) Amazon Simple Storage Service (Amazon S3)

     - 어디서나 모든 용량의 데이터를 저장 및 검색할 수 있도록 구축된 객체 스토리지입니다.

 

 

요금

다른 AWS 제품과 마찬가지로 MediaStore에도 사용 계약이나 최소 약정이 없습니다.

AWS Elemental MediaStore에서는 콘텐츠가 서비스에 도달할 때 GB당 미디어 최적화 수집 비용이 부과되고, 라이브 및 VOD 전송을 위해 서비스에 유지하는 콘텐츠에 대해 GB당 콘텐츠 스토리지 비용이 부과됩니다.

=> 서비스에 콘텐츠가 제공될 때 GB당 수집 요금이 청구되고, 서비스에 저장하는 콘텐츠에 대해 GB당 월 요금이 청구됩니다.

 

*리전 : 아시아 태평양(서울)

  - 수집 최적화 : GB당 0.035 USD

  - 스토리지(Standard) : GB당 0.025 USD

  - 스토리지(Infrequent Access) : GB당 0.018 USD


라이브 비디오를 AWS Elemental MediaStore로 보내는 방법

라이브 HLS 스트림을 AWS Elemental MediaStore로 보내는 방법

 

개요

1. AWS Elemental MediaStore 컨테이너 생성
  1-1. 컨테이너 만들기
  1-2. 새 컨테이너에 대한 컨테이너 정책 설정
  1-3. HTML HLS 또는 HTML Dash 비디오 플레이어를 통해 스트림을 재생하려면 선택적 CORS 정책을 추가하십시오.
2. AWS Elemental MediaLive 설정
  2-1. MediaLive 채널용 RTMP 입력 생성
  2-2. MediaLive 채널 만들기
3. 휴대폰, 데스크톱 또는 카메라를 사용하여 MediaLive로 스트리밍
  3-1. OBS를 사용하여 MediaLive로 스트리밍


1부: AWS Elemental MediaStore 컨테이너 생성

1단계: 컨테이너 만들기

AWS 콘솔에서 AWS Elemental MediaStore를 검색합니다. 

"컨테이너 만들기"를 클릭하고 MediaStore 컨테이너의 이름을 선택합니다. 컨테이너 생성이 완료되면 다음 단계로 이동합니다.

2단계: 컨테이너 정책 설정

컨테이너를 만든 후 누구나 라이브 스트림을 볼 수 있도록 허용하는 다음 정책을 추가합니다. 

이 정책을 업데이트하면 라이브 스트림을 잠그고 액세스를 제한할 수 있지만 이 예에서는 단순성을 위해 누구나 라이브 스트림을 볼 수 있도록 정책을 만듭니다.

 

새로 생성된 컨테이너를 선택한 후 “컨테이너 정책” 버튼을 클릭합니다. 

다음 JSON 컨테이너 정책을 "컨테이너 정책"이라고 표시된 상자에 복사하고 AWS_ACCOUNT_NUMBER 및 CONTAINER_NAME을 컨테이너 이름 및 AWS 계정 번호(AWS 콘솔의 오른쪽 상단에 있음)로 바꾸십시오.

 

컨테이너 정책

{
	"Version":"2012-10-17",
	"Statement":[ 
		{
			"Sid":"PublicReadOverHttpOrHttps", 
			"Effect":"Allow", 
			"Principal":"*", 
			"Action":[ 
				"mediastore:GetObject", 
				"mediastore:DescribeObject" 
			], 
			"Resource":"arn:aws:mediastore:us-west-2:AWS_ACCOUNT_NUMBER:container/CONTAINER_NAME/*", 
			"Condition":{ 
				"Bool":{ 
					"aws:SecureTransport":[ 
						"true", 
						"false" 
					] 
				} 
			} 
		} 
	] 
}
JSON

3단계: 선택적으로 CORS 정책 설정

CORS는 Cross-Origin Resource Sharing의 약자입니다. 

CORS 정책은 요청이 다른 출처의 서버에서 온 경우 선택한 리소스에 액세스할 수 있는 권한을 부여하는 데 사용됩니다.

 

HLS JS 비디오 플레이어 데모 페이지에서 라이브 스트림을 보려면 컨테이너에 CORS 정책을 추가해야 합니다. 

이렇게 하려면 "CORS 정책 편집" 버튼을 클릭합니다. 

CORS 정책이 없으면 VLC 또는 Quicktime과 같은 데스크톱 플레이어에서 라이브 스트림을 계속 볼 수 있습니다.

 

아래의 CORS 정책은 모든 헤더가 통과하고 모든 원본이 비디오를 볼 수 있도록 허용합니다. 라이브 스트림의 보안을 강화하려면 "AllowedOrigins" 목록의 "*"를 비디오를 표시하는 웹사이트의 도메인 이름으로 바꾸십시오.

 

CORS 정책

[  
   {  
      "AllowedHeaders":[  
         "*"
      ],
      "AllowedMethods":[  
         "GET"
      ],
      "AllowedOrigins":[  
         "*"
      ],
      "ExposeHeaders":[  
         "*"
      ],
      "MaxAgeSeconds":3000
   }
]
JSON

 

2부: 라이브 인코더 설정

라이브 스트리밍 요구 사항을 위해 방송급 라이브 비디오 처리 서비스인 AWS Elemental MediaLive를 사용할 것입니다. 

이를 통해 연결된 TV, 태블릿, 스마트폰 및 셋톱 박스와 같은 방송 TV 및 인터넷 연결 멀티스크린 장치에 제공할 고품질 비디오 스트림을 생성할 수 있습니다. 

 

OBS(Open Broadcaster Solution)를 사용하여 RTMP를 AWS Elemental MediaLive로 보내고 다른 옵션에 연결하는 방법을 설명하겠습니다.

1단계: RTMP 입력 만들기

  • AWS 콘솔에서 AWS Elemental MediaLive 검색
  • "채널 만들기"를 클릭합니다.
  • 왼쪽에서 "입력"을 클릭하고 새 입력을 만듭니다. 내 입력을 "RTMP_Input"이라고 불렀습니다.

푸시 입력의 경우 입력 보안 그룹을 정의해야 합니다. 기본 0.0.0.0/0 보안 그룹을 사용했습니다. 

이렇게 하면 모든 IP 주소가 RTMP 스트림을 채널로 보낼 수 있습니다. 보안을 강화하기 위해 IP 주소로 잠글 수 있습니다.

  • 다음으로 대상 A와 대상 B의 애플리케이션 이름을 생성했습니다. "stream1"과 "stream2"를 선택했습니다.
  • 그런 다음 응용 프로그램 인스턴스에 "a"와 "b"라는 이름을 입력합니다.
  • 마지막으로 '만들기' 버튼 클릭

2단계: AWS Elemental MediaLive 채널 생성

  • MediaLive 채널의 이름을 추가합니다. (내 이름은 "LiveChannel"입니다.)

 

 

  • IAM 역할에서 이전에 역할을 생성하지 않은 경우 "템플릿에서 역할 생성"을 선택하거나 이미 생성한 경우 MediaLiveAccess 역할을 선택합니다. 이 역할은 MediaStore 컨테이너에 대한 PUT 액세스와 MediaLive 채널에 필요한 기타 권한을 제공합니다.

  • 채널 입력 아래 드롭다운 상자에서 RTMP 입력을 선택합니다.

  • 해상도, 비트 전송률 및 기타 인코딩 매개 변수와 같은 비디오 설정을 구성하여 출력을 사용자 지정할 수 있지만 이 예에서는 "라이브 이벤트" 채널 템플릿을 사용했습니다.
    다음 단계에서는 AWS Elemental MediaStore 콘솔 페이지에서 컨테이너를 클릭할 때 찾을 수 있는 컨테이너의 데이터 엔드포인트가 필요합니다.
  • 왼쪽 상단에서 출력 그룹 아래의 HD(HLS) 탭을 클릭합니다. HLS 그룹 대상 A와 HLS 그룹 대상 B가 표시됩니다. 각 출력에 대해 MediaStore 컨테이너의 엔드포인트에 "mediastoressl://container_data_endpoint/path/main"을 입력합니다. 이 예에서는 출력 A만 사용합니다. (각 출력은 고유한 경로여야 합니다.)
  • 이제 큰 주황색 "채널 만들기" 버튼을 클릭합니다.

 

3부: RTMP를 라이브 인코더로 스트리밍

AWS Elemental MediaLive에 콘텐츠를 보내는 방법에는 여러 가지가 있습니다. OBS를 사용하여 RTMP를 전송하는 방법을 단계별로 설명하겠습니다.

 

다른 방법으로 MediaLive에 보내는 방법에 대한 지침은 다른 옵션을 자세히 설명하는 일련의 블로그 게시물이 있습니다.

AWS Elemental Live 인코더 사용
RTP와 함께 FFMPEG
사용 FFMPEG RTMP
사용 RTP와 함께 VLC
사용 OBS 사용

OBS에서 AWS Elemental MediaLive로 스트리밍

  • OBS( Open Broadcaster Software ) 다운로드 및 설치
  • 설정 메뉴에서 OBS를 연 후 "사용자 지정 스트리밍 서버"를 선택하고 2부의 2단계에서 "입력 대상"을 사용합니다. 이것은 RTMP 스트림의 대상입니다.

  • OBS 인코더를 설정한 후 생성한 MediaLive 채널로 돌아가 주황색 "스트림 시작" 버튼을 클릭합니다.
  • MediaLive 채널이 시작에서 실행 중 상태로 변경된 후 OBS 프로그램에서 "스트리밍 시작"을 클릭합니다.

  • 이제 MediaStore 콘솔 페이지로 이동하여 컨테이너를 확인할 수 있습니다. 컨테이너에 개체가 표시되어야 합니다.

HLS 라이브 스트림을 테스트하기 위해 액세스하는 데 사용할 URL입니다.

 

http://container_data_endpoint/livea/main.m3u8

 

해당 링크를 VLC 플레이어의 네트워크 입력에 붙여넣거나 Mac을 사용하는 경우 Quicktime을 사용하거나 Safari URL 표시줄에 붙여넣을 수 있습니다.

 

MediaStore를 오리진으로 사용하는 Amazon CloudFront 엔드포인트를 생성하는 방법에 대한 지침은 이 블로그 게시물 을 참조하십시오 .

 


AWS Managed Services의 MediaStore FAQ

Q: 내 AMS 계정에서 MediaStore에 대한 액세스를 요청하려면 어떻게 해야 합니까?

관리 | AWS 서비스 | 자체 프로비저닝 서비스 | (ct-1w8z66n899dct) 변경 유형을 추가합니다. 

이 RFC는 계정에 다음 IAM 역할을 프로비저닝합니다 customer_mediastore_author_role

이 RFC의 일부로 두 번째 역할이 계정에 배포됩니다. 

MediaStoreAccessLogs 해당 기능을 활성화하도록 선택한 경우 CloudWatch에서 활동을 기록하기 위해 MediaStore 서비스에서 사용하는 역할입니다. 

계정에서 프로비저닝된 후 페더레이션 솔루션에서 역할을 온보딩해야 합니다.

이때 AMS Operations는 계정에 이 서비스 역할도 배포합니다. aws_code_pipeline_service_role_policy.
===


Q: 내 AMS 계정에서 MediaStore를 사용하는 데 어떤 제한이 있습니까?

AMS에서 MediaStore 사용에 대한 제한은 없습니다.
===


Q: 내 AMS 계정에서 MediaStore를 사용하기 위한 전제 조건 또는 종속성은 무엇입니까?

AMS 계정에서 MediaStore를 사용하기 위한 전제 조건이나 종속성은 없습니다.

===

 

 

Reference :

[1] AWS Elemental MediaStore 요금 : 

https://aws.amazon.com/ko/mediastore/pricing/

[2] 시작하기 : 

https://docs.aws.amazon.com/ko_kr/mediastore/latest/ug/getting-started.html

[3] 라이브 비디오를 AWS Elemental MediaStore로 보내는 방법 : 

https://aws.amazon.com/ko/blogs/media/part1-how-to-send-live-video-to-aws-elemental-mediastore/

[4] AWS Managed Services의 MediaStore FAQ : 

https://docs.aws.amazon.com/ko_kr/managedservices/latest/userguide/elemental-media-store.html

 


여기까지 AWS Elemental MediaStore에 대하여 알아보았어요.

스트림을 사용하며 Cloud를 접목시키는 일이 많으니 우선 알아두면 유용하겠죠?

 

 

다음 시간에도 유용한 정보로 돌아올게요.

그럼 다음 시간도 서지타산과 함께해요.

제에에에바아아아아아알 ~~~~~

댓글