에셋 업로드
에셋 업로드
개요
이 튜토리얼은 에셋을 Frame.io로 업로드하는 방법을 설명합니다. Frame.io는 비디오뿐만 아니라 스크립트, 사진, 지도, 참조 파일 등 모든 파일 유형을 처리할 수 있습니다. 더 기술적으로 설명하자면, Frame.io의 에셋은 S3에 저장된 파일과 Frame.io 내에서의 해당 파일의 컨텍스트(트랜스코딩, 사용자/팀/프로젝트 컨텍스트, 메타데이터 등)를 포괄적으로 나타내는 데이터 구조입니다. 에셋에 대한 자세한 내용은 리소스 정의를 참조하세요.
핵심 계층 구조
Frame.io가 핵심 모델들을 어떻게 구조화하는지 이해하는 것도 도움이 됩니다.
사용자가 속한 계정은 여러 개의 프로젝트를 가질 수 있으며, 각 프로젝트에는 에셋이 포함됩니다. 팀은 엔터프라이즈 계정에서만 사용할 수 있으며 논리적인 분리 단계를 하나 더 제공합니다. 에셋은 자신이 어느 팀에 속해 있는지 “알지” 못하며 오직 어느 프로젝트와 계정에 속해 있는지만 알 수 있습니다. 하지만 프로젝트는 계정이 아닌 팀에 철저하게 종속되므로, 결과적으로 팀은 에셋 업로드 프로세스의 필수적인 부분을 차지하게 됩니다.
사전 요구 사항
이 튜토리얼을 진행하려면 다음이 필요합니다.
- 개발자 토큰이 포함된 Frame.io 계정(토큰에 대한 설명은 아래 참조)
- Frame.io Python SDK
에셋 업로드
이 섹션에서는 에셋을 업로드하는 단계별 과정을 안내합니다.
- developer.frame.io에서 다음 권한을 포함하는 개발자 토큰을 생성하세요.
API 토큰 생성에 도움이 필요하신가요?
여기에서 지침을 확인하세요.
- 에셋을 업로드할 대상을 지정하세요. 최소한 에셋은 프로젝트 내에 배치되어야 합니다. 프로젝트의 루트 에셋 ID(
root_asset_id)나 특정 폴더의 에셋 ID를 가져와야만 파일 계층 구조에서 업로드할 위치를 명확히 지정할 수 있습니다.
참고:
프로젝트 ID만으로는 업로드할 수 없습니다. 프로젝트의 루트에 업로드하려면 요청에 root_asset_id를 지정해야 합니다.
일반적으로 다음 항목들을 (지정된 순서대로) 검색해야 합니다.
- 계정 ID를 검색하여 계정 선택
- 팀 ID를 검색하여 팀 선택
- 팀과 연결된 프로젝트 검색
- 작업할 프로젝트의 프로젝트 ID 확인
- 루트 에셋 ID 또는 폴더 ID 확인
root_asset_id를 사용하면 프로젝트의 루트 경로로 직접 업로드할 수 있습니다.
에셋 나열
새 에셋을 업로드할 위치를 선택하기 위해 API를 활용하여 특정 프로젝트나 폴더 내의 모든 에셋을 나열할 수 있습니다. 에셋이 folder인 경우 하위 에셋이 포함되며, 이는 파일 및 폴더일 수도 있습니다. 에셋 정보를 나열할 때는 어떤 에셋 ID든 사용할 수 있지만, 프로젝트와 관련된 모든 항목을 확인하려면 root_asset_id를 사용하세요.
python-sdk from frameioclient import FrameioClient import os
ASSET_ID = "" TOKEN = ""
client = FrameioClient(TOKEN) response_list = client.assets.get_children(ASSET_ID) assets = response_list.results
for item in assets: print(item[‘id’], item[‘name’])
반환된 에셋 목록에서 폴더에 해당하는 에셋 ID 또는 루트 에셋 ID를 사용할 수 있습니다. 이 ID를 사용하여 새 에셋을 업로드할 위치를 지정하게 됩니다.
에셋 업로드
이 예시에서는 새 파일을 업로드해 보겠습니다. 다음 정보를 포함하여 요청을 보냅니다.
에셋 URL 만료 안내
에셋 생성 API 호출에서 반환된 URL은 업로드 권한을 부여하기 위해 미리 서명된 URL이지만 24시간 후에 만료됩니다.
자체 파일 업로더 구축
최상의 성능을 위해 자체 업로더를 구축하려는 경우 청크를 병렬로 업로드하는 것을 권장합니다. 각 청크는 Frame.io API의 응답으로 제공된 Amazon S3 URL로 직접 PUT 요청을 보내야 합니다. 파일 청크는 제공된 upload_urls의 순서와 일치해야 합니다. 이는 최종적으로 병합되고 트랜스코딩된 에셋의 순서를 결정하기 때문입니다. 즉, 첫 번째 URL이 첫 번째 청크를, 두 번째 URL이 두 번째 청크를 가져가는 방식을 의미합니다.
의사 코드 예시
S3로 보내는 각 요청의 헤더에는 Frame.io API 초기 호출에서 반환된 새 에셋의 filetype과 추가적인 개인정보 보호 헤더가 반드시 정확히 포함되어야 합니다.
여기에서 이 모든 과정이 Python SDK를 통해 어떻게 처리되는지 예시를 확인할 수 있습니다.
AWS 오류는 XML 형식입니다.
이 단계에서 발생하는 모든 오류는 AWS에서 직접 전송되므로, Frame.io의 표준 JSON 오류 처리가 아닌 XML 형식으로 반환된다는 점에 유의하세요. 불완전하게 업로드된 파일(즉, 일부 청크가 누락된 파일)은 트랜스코딩에 실패하여 Frame.io에 표시되지 않으므로, 프로덕션 환경에서 사용할 때는 이러한 업로드 과정에 대해 재시도 로직을 구축하는 것을 강력히 권장합니다.
이것이 전부입니다! upload_urls에 대한 PUT` 호출을 모두 완료하면 Frame.io에 새 에셋이 추가된 것을 확인할 수 있습니다.