V4 웹훅
V4 웹훅
웹훅이란 무엇인가요?
웹훅은 계정에서 흥미로운 이벤트가 발생하자마자(예: 새 파일 트랜스코딩 완료, 코멘트 추가, 프로젝트 생성 등) Frame.io가 즉시 실행하는 푸시 방식의 HTTP 콜백입니다.
API를 폴링하는 대신 공개 HTTPS URL을 제공하면, Frame.io가 해당 URL로 JSON 페이로드를 실시간 전송하여 다음 작업을 수행할 수 있습니다.
웹훅의 개념과 기능에 대한 자세한 내용은 https://docs.webhook.site/를 참조하세요.
엔드포인트 개요
인증 — 모든 V4 엔드포인트는 Adobe Developer Console을 통해 발급받은 OAuth 2.0 액세스 토큰이 필요합니다. 이전 개발자 토큰 및 JWT는 허용되지 않습니다.
Frame V4의 변경 및 업데이트 사항
이전에서 생성된 웹훅은 다음 변경 사항이 적용되어 V4로 이전됩니다.
- 페이로드 구조: 페이로드에 Account ID가 추가되었습니다.
- 엔드포인트 변경:
team_id는 더 이상 JSON 페이로드로 제공되지 않으며, 대신 URL의 경로 매개변수로 포함됩니다:https://api.frame.io/v4/accounts/:account_id/workspaces/:workspace_id/webhooks - API 연동: API 구조, 엔드포인트 및 인증 방식의 변경으로 인해, 리소스 확인 및 추가 정보를 얻기 위해 Frame.io API로 후속 호출을 수행하는 기존 수신 웹훅 코드의 경우 반드시 업데이트가 필요합니다.
- 이벤트 유형: 에셋 웹훅이 파일과 폴더 이벤트로 분리되었습니다 - 이전에서 에셋 이벤트와 함께 수신되는 모든 웹훅은 적절한 파일 및 폴더 이벤트로 업데이트되어야 합니다.
마이그레이션 후 웹훅 상태 — 계정이 Frame.io V4로 마이그레이션되면 이전 버전의 기존 웹훅은 자동으로 비활성화됩니다. 이를 통해 웹훅을 다시 활성화하기 전에, V4의 업데이트에 맞춰 웹훅 엔드포인트 및 연동 로직을 수정할 수 있습니다. V4 호환성을 위해 업데이트되지 않은 웹훅을 적절한 수정 없이 활성화할 경우 오류가 발생합니다. API를 통해 is_active 필드를 검사하거나, 웹훅 설정을 다시 켜기 전에 웹훅 설정을 검토하여 어떤 웹훅이 비활성 상태인지 확인할 수 있습니다.
웹훅 이벤트 구독
웹훅을 생성하고 업데이트할 때 수신할 이벤트를 지정합니다. 원하는 만큼 이벤트를 선택할 수 있지만, 더 적은 수의 이벤트를 구독하고 명명 체계와 엔드포인트가 서로 다른 웹훅으로 논리적으로 분할하는 것이 더 나은 환경을 제공합니다. 이렇게 하면 수신 측에서 비즈니스 로직을 모델링하여 공유 함수에서의 필터링 및 라우팅 작업을 줄일 수 있습니다.
이벤트 권한 — 모든 이벤트는 웹훅 생성 시 제공된 Workspace로 범위가 지정됩니다. 즉, 해당 Workspace 내의 모든 프로젝트에서 수행된 작업에 대해 이벤트가 전송됩니다.
프로젝트
파일
폴더
코멘트
메타데이터
컬렉션
사용자 지정 필드
공유
웹훅 메시지 페이로드
모든 웹훅 페이로드에는 발생한 이벤트를 나타내는 type 필드와 resource 오브젝트가 포함되어 있습니다. resource 오브젝트에는 해당 이벤트와 관련된 Frame.io 리소스의 type과 ID가 포함되어 있습니다.
페이로드 예시
위의 file.created 이벤트 예시에서 resource.id는 새로 생성된 파일의 ID를 나타냅니다. 또한 workspace, project, user 오브젝트가 포함되며, 각 오브젝트에는 연관된 workspace.id, project.id, user.id가 포함되어 있습니다. 이러한 값을 사용하여 수신 이벤트를 필터링하거나 캐시된 데이터를 로컬에서 조회함으로써 API 호출을 줄일 수 있습니다.
저희는 구독된 리소스에 대해 리소스 ID 이외의 추가 정보를 포함하지 않습니다.
애플리케이션에 추가 정보나 컨텍스트가 필요한 경우, 참조된 리소스에 대해 API 호출을 수행하여 자세한 정보를 조회하는 것을 권장합니다.
보안
기본적으로 모든 웹훅에는 서명 키가 있습니다. 변경 불가능한 이 서명 시크릿을 사용하여 요청이 Frame.io에서 전송되었음을 확인할 수 있습니다.
구성한 웹훅의 응답 페이로드에는 해당 웹훅에 특정된 서명 시크릿이 포함되어 있습니다. 이 시크릿은 이 초기 웹훅 생성 응답에서만 제공되므로, 시크릿 스토리지나 환경 변수 등 안전한 곳에 보관하세요. 이 시크릿을 나중에 사용하여 웹훅이 저희 서버에서 직접 전송되었으며, 중간에 가로채거나 조작되지 않았는지 확인하세요.
웹훅 서명 확인
중간자 공격 및 재전송 공격으로부터 연동 환경을 보호하려면 웹훅 페이로드의 서명을 확인하는 것이 필수적입니다. 이 확인 과정을 통해 웹훅 페이로드가 실제로 Frame.io에서 전송되었는지, 그리고 전송 중에 페이로드 콘텐츠가 수정되지 않았는지를 보장할 수 있습니다.
POST 요청에는 다음 HTTP 헤더가 포함됩니다.
타임스탬프는 아웃바운드 웹훅이 전송될 때 Frame.io 시스템의 시스템 시간입니다. 이는 재전송 공격을 방지하는 데 사용할 수 있습니다. 이 시간이 현지 시간 기준 5분 이내인지 확인하는 것이 좋습니다. 서명은 웹훅이 최초 생성될 때 제공된 서명 키를 사용하는 HMAC SHA256 해시입니다. 서명을 확인하려면 다음 단계를 따르세요.
제공된 서명은 v0= 접두사로 시작합니다. 현재 Frame.io에는 요청 서명을 위한 버전이 이 한 가지뿐입니다. 계산된 서명 앞에 이 접두사가 추가되었는지 확인하세요.
재시도 및 로깅
-
총 5회 시도(초기 + 4회 재시도)
-
15초부터 시작하는 지수 백오프(+ 지터)
-
2xx가 아닌 상태 또는 5초 초과 시 재시도 트리거
Frame.io는 webhook_id, account_id, event_type, resource_id, user_id를 포함한 실패 로그를 보관합니다.
웹훅 튜토리얼
1단계: 수신 엔드포인트 설정(URL을 알 수 있도록 가장 먼저 수행)
여기서는 페이로드를 검사하고, 실제 비즈니스 로직 없이 기본 응답을 보낼 수 있는 일회용 웹훅 수신기를 쉽게 생성할 수 있도록 해주는 webhook.site를 사용합니다. https://webhook.site로 처음 이동하면, 고유한 웹훅 엔드포인트가 생성되어 즉시 복사하여 사용할 수 있습니다.
이 URL은 귀하의 세션에 고유합니다.

2단계: 구독할 이벤트 선택
이 튜토리얼에서는 간단하게 진행하기 위해, 방금 생성한 웹훅이 file.created 이벤트만 구독하도록 설정하겠습니다. 웹훅 생성에 사용할 JSON 페이로드는 다음과 같습니다.
3단계: Postman을 사용하여 웹훅 리소스 생성
Postman을 사용하여 웹훅 리소스를 생성하는 API 호출을 수행하고, 페이로드에 webhook.site 엔드포인트를 제공하세요.
4단계: 테스트!
웹훅 구독을 생성하고 웹훅을 수신할 엔드포인트 설정을 완료했으므로, 이제 첫 번째 웹훅이 실행되도록 적절한 작업을 수행하여 테스트해 볼 시간입니다!
우리의 샘플은 file.created 트리거에서 작동하도록 설정되었으므로, 해당 웹훅이 설정된 계정 및 작업 영역 내의 아무 프로젝트에나 새 에셋을 업로드하겠습니다.
