
1. MediaConvet란?
MediaConvert는 AWS에서 제공하는 동영상 가공 서비스라고 보면 된다.
지금 운영하고 있는 서비스에서 ABR 스트리밍을 하기 위해 mp4 포맷을 HLS 포맷으로 변환하는 과정이 필요해 사용 중이다.
2. 현재 아키텍처

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

위 아키텍처에서 업로드 서버부터 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()를 통해 텍스트 - 딕셔너리 형태로 변환/복원하여 전송하였다.

'공부' 카테고리의 다른 글
FastAPI에서 StreamingResponse 활용 시 DB 세션 관리 (0) | 2025.03.30 |
---|---|
Triton Inference Server와 비동기 gRPC로 통신하기 (0) | 2025.02.11 |
FastAPI의 페이지네이션 성능 개선기 (0) | 2025.01.30 |
DB 암호화 방식 (0) | 2025.01.18 |
브라우저의 요청이 서버까지 가는 과정 (DNS 요청 과정) (0) | 2024.12.13 |
댓글