본문 바로가기
공부

AWS MediaConvert의 userMetadata 개수 제한

by 워냥 2024. 12. 6.

1. MediaConvet란?

MediaConvert는 AWS에서 제공하는 동영상 가공 서비스라고 보면 된다.

지금 운영하고 있는 서비스에서 ABR 스트리밍을 하기 위해 mp4 포맷을 HLS 포맷으로 변환하는 과정이 필요해 사용 중이다.

2. 현재 아키텍처

업로드 아키텍처

 

  1. 사용자는 동영상을 업로드하기 위해 업로드 서버의 API를 호출한다.
  2. 업로드 서버MediaConvert에 동영상 변환 작업을 요청한다.
  3. MediaConvert의 작업이 완료되면 EventBridge가 이를 감지해 Lambda 함수를 실행한다.
  4. Lambda 함수는 전달된 정보를 보고 API 서버의 적절한 API를 호출한다.

 

userMetaData를 사용해 정보 전달

 

위 아키텍처에서 업로드 서버부터 API 서버까지 정보를 전달해야 한다.

이를 위해 MediaConvert에 작업을 요청할 때 userMetaData 항목에 필요한 정보를 작성하여 전달한다.

 

3. 문제 상황

서비스가 운영되면서 요구사항이 계속해서 추가되었고, userMetaData의 항목도 늘어나게 되었다.

이번 패치를 위해 업로드 서버를 수정하는 중 다음과 같은 오류를 만나게 되었다.

 

 

에러 로그를 분석해 보면, MediaConvert에 작업을 요청할 때 userMetaData 항목이 10개를 넘어 오류가 발생했다는 내용이다.

 

4. 공식 문서 읽어보기

https://docs.aws.amazon.com/mediaconvert/latest/ug/user-metadata-tags.html

 

Using metadata tags with AWS Elemental MediaConvert jobs - MediaConvert

Unless you have existing integrations or workflows that rely on metadata (userMetadata) tags, we recommend that you use standard AWS tags for both automatic integration with AWS services and for custom integrations and workflows. For more information, see

docs.aws.amazon.com

AWS 공식 문서에 MediaConvert 작업에 대한 내용이 있다.

 

하나의 작업 당 지정 가능한 사용자 태그 수는 최대 10개라고 명시되어 있다.

5. 해결 방법

태그 수를 줄이기 위해 같은 API에 사용되는 태그는 묶어서 전송하기로 했다.

 

(좌) 발신자 기존 코드 (우) 발신자 변경 코드

 

필요한 항목을 모두 태그로 작성한 코드를 딕셔너리 형태로 묶어 하나의 태그로 줄일 수 있었다.

 

수신자 변경 코드

데이터를 수신하는 코드에서는 딕셔너리를 풀어 각 항목을 복원할 수 있다.

 

작업을 딕셔너리 형태로 전송할 경우 발생하는 오류

 

MediaConvert의 작업은 전부 텍스트로만 이뤄져야 한다.

따라서 json.dumps()json.loads()를 통해 텍스트 - 딕셔너리 형태로 변환/복원하여 전송하였다.

 

문자열로 변환되어 전송된 작업

 

댓글