Asset Compute Service HTTP API asset-compute-http-api
API의 사용은 개발 목적으로 제한됩니다. API는 사용자 정의 애플리케이션을 개발할 때 컨텍스트로 제공됩니다. Adobe Experience Manager as a Cloud Service은(는) API를 사용하여 처리 정보를 사용자 지정 응용 프로그램에 전달합니다. 자세한 내용은 자산 마이크로서비스 및 처리 프로필 사용을 참조하세요.
Asset Compute Service HTTP API의 모든 클라이언트는 다음 높은 수준의 흐름을 따라야 합니다.
-
클라이언트가 IMS 조직에서 Adobe Developer Console 프로젝트로 프로비저닝되었습니다. 각 개별 클라이언트(시스템 또는 환경)에는 이벤트 데이터 흐름을 분리하기 위한 별도의 자체 프로젝트가 필요합니다.
-
클라이언트는 JWT(서비스 계정) 인증을 사용하여 기술 계정에 대한 액세스 토큰을 생성합니다.
-
클라이언트가
/register
을(를) 한 번만 호출하여 저널 URL을 검색합니다. -
클라이언트는 렌디션을 생성할 각 에셋에 대해
/process
을(를) 호출합니다. 호출은 비동기적으로 수행됩니다. -
클라이언트가 이벤트를 받기하도록 저널을 정기적으로 폴링합니다. 렌디션이 성공적으로 처리되거나(
rendition_created
이벤트 유형) 오류가 있는 경우(rendition_failed
이벤트 유형) 요청된 각 렌디션에 대한 이벤트를 받습니다.
adobe-asset-compute-client 모듈을 사용하면 Node.js 코드에서 API를 쉽게 사용할 수 있습니다.
인증 및 권한 부여 authentication-and-authorization
모든 API에는 액세스 토큰 인증이 필요합니다. 요청은 다음 헤더를 설정해야 합니다.
범위 scopes
액세스 토큰에 대해 다음 범위를 확인하십시오.
openid
AdobeID
asset_compute
read_organizations
event_receiver
event_receiver_api
adobeio_api
additional_info.roles
additional_info.projectedProductContext
이 범위를 사용하려면 Adobe Developer Console 프로젝트를 Asset Compute
, I/O Events
및 I/O Management API
서비스에 구독해야 합니다. 개별 범위의 분류는 다음과 같습니다.
-
기본
- 범위:
openid,AdobeID
- 범위:
-
Asset compute
- metascope:
asset_compute_meta
- 범위:
asset_compute,read_organizations
- metascope:
-
Adobe
I/O Events
- metascope:
event_receiver_api
- 범위:
event_receiver,event_receiver_api
- metascope:
-
Adobe
I/O Management API
- metascope:
ent_adobeio_sdk
- 범위:
adobeio_api,additional_info.roles,additional_info.projectedProductContext
- metascope:
등록 register
서비스를 구독한 고유한 Adobe Developer Console 프로젝트인 Asset Compute service의 각 클라이언트는 처리 요청을 수행하기 전에 등록해야 합니다. 등록 단계에서는 렌디션 처리에서 비동기 이벤트를 검색하는 데 필요한 고유한 이벤트 저널을 반환합니다.
라이프사이클이 끝나면 클라이언트는 등록 취소할 수 있습니다.
요청 등록 register-request
이 API 호출은 Asset Compute 클라이언트를 설정하고 이벤트 저널 URL을 제공합니다. 이 프로세스는 멱등 연산이며 각 클라이언트에 대해 한 번만 호출하면 됩니다. 저널 URL을 검색하기 위해 다시 호출할 수 있습니다.
POST
/register
Authorization
x-request-id
응답 등록 register-response
application/json
X-Request-Id
X-Request-Id
요청 헤더와 동일하거나 고유하게 생성된 헤더입니다. 시스템 간 요청 식별, 지원 요청 또는 둘 다에 사용합니다.journal
, ok
또는 requestId
필드가 있는 JSON 개체입니다.HTTP 상태 코드는 다음과 같습니다.
-
200 Success: 요청이 성공적으로 수행된 때입니다.
journal
URL은/process
을(를) 통해 시작된 비동기 처리 결과에 대한 알림을 받습니다. 완료 시rendition_created
개의 이벤트를 알려주거나 프로세스가 실패하면rendition_failed
개의 이벤트를 알려줍니다.code language-json { "ok": true, "journal": "https://api.adobe.io/events/organizations/xxxxx/integrations/xxxx/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "requestId": "1234567890" }
-
401 권한 없음: 요청에 유효한 인증이 없는 경우 발생합니다. 예를 들어 잘못된 액세스 토큰 또는 잘못된 API 키가 있을 수 있습니다.
-
403 사용할 수 없음: 요청에 유효한 권한 부여가 없는 경우 발생합니다. 올바른 액세스 토큰이 예이지만 Adobe Developer Console 프로젝트(기술 계정)가 모든 필수 서비스를 구독하는 것은 아닙니다.
-
429 요청이 너무 많음: 이 클라이언트가 시스템을 오버로드할 때 발생합니다. 클라이언트는 지수 백오프를 사용하여 다시 시도해야 합니다. 시체가 비어 있습니다.
-
4xx 오류: 다른 클라이언트 오류가 발생하여 등록하지 못했습니다. 모든 오류에 대해 보장되지는 않지만 일반적으로 다음과 같은 JSON 응답이 반환됩니다.
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
-
5xx 오류: 다른 서버측 오류가 있고 등록하지 못한 경우 발생합니다. 모든 오류에 대해 보장되지는 않지만 일반적으로 다음과 같은 JSON 응답이 반환됩니다.
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
요청 등록 해제 unregister-request
이 API 호출은 Asset Compute 클라이언트의 등록을 취소합니다. 이 등록 취소가 발생하면 더 이상 /process
을(를) 호출할 수 없습니다. 등록되지 않은 클라이언트 또는 아직 등록되지 않은 클라이언트에 대해 API 호출을 사용하면 404
오류가 반환됩니다.
POST
/unregister
Authorization
x-request-id
응답 등록 해제 unregister-response
application/json
X-Request-Id
X-Request-Id
요청 헤더와 동일하거나 고유하게 생성된 헤더입니다. 시스템 또는 지원 요청에서 요청을 식별하는 데 사용합니다.ok
및 requestId
필드가 있는 JSON 개체입니다.상태 코드는 다음과 같습니다.
-
200 Success: 등록 및 저널이 검색되고 제거될 때 발생합니다.
code language-json { "ok": true, "requestId": "1234567890" }
-
401 권한 없음: 요청에 유효한 인증이 없는 경우 발생합니다. 예를 들어 잘못된 액세스 토큰 또는 잘못된 API 키가 있을 수 있습니다.
-
403 사용할 수 없음: 요청에 유효한 권한 부여가 없는 경우 발생합니다. 올바른 액세스 토큰이 예이지만 Adobe Developer Console 프로젝트(기술 계정)가 모든 필수 서비스를 구독하는 것은 아닙니다.
-
404 찾을 수 없음: 제공된 자격 증명이 등록 취소되었거나 잘못된 경우 이 상태가 나타납니다.
code language-json { "ok": true, "requestId": "1234567890" }
-
429 요청이 너무 많음: 시스템이 오버로드될 때 발생합니다. 클라이언트는 지수 백오프를 사용하여 다시 시도해야 합니다. 시체가 비어 있습니다.
-
4xx 오류: 다른 클라이언트 오류가 발생하여 등록을 취소하지 못했습니다. 모든 오류에 대해 보장되지는 않지만 일반적으로 다음과 같은 JSON 응답이 반환됩니다.
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
-
5xx 오류: 다른 서버측 오류가 있고 등록하지 못한 경우 발생합니다. 모든 오류에 대해 보장되지는 않지만 일반적으로 다음과 같은 JSON 응답이 반환됩니다.
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
요청 처리 process-request
process
작업은 요청의 지침에 따라 소스 에셋을 여러 표현물로 변환하는 작업을 제출합니다. 완료 성공(이벤트 유형 rendition_created
) 또는 오류(이벤트 유형 rendition_failed
)에 대한 알림이 이벤트 저널로 전송되며, 이벤트 저널은 /process
개의 요청을 수행하기 전에 /register
을(를) 사용하여 한 번 검색해야 합니다. 형식이 잘못된 요청은 즉시 실패하고 400 오류 코드가 표시됩니다.
바이너리는 Amazon AWS S3 사전 서명된 URL 또는 Azure Blob Storage SAS URL과 같은 URL을 사용하여 참조됩니다. source
자산(GET
URL)을 읽고 렌디션(PUT
URL)을 쓰는 데 모두 사용됩니다. 클라이언트는 이러한 사전 서명된 URL을 생성할 책임이 있습니다.
POST
/process
application/json
Authorization
x-request-id
프로세스 요청 JSON process-request-json
/process
의 요청 본문은 다음과 같은 높은 수준의 스키마를 가진 JSON 개체입니다.
{
"source": "",
"renditions" : []
}
사용 가능한 필드는 다음과 같습니다.
source
string
fmt=zip
)을 기반으로 합니다."http://example.com/image.jpg"
source
object
fmt=zip
).{"url": "http://example.com/image.jpg", "mimeType": "image/jpeg" }
renditions
array
[{ "target": "https://....", "fmt": "png" }]
source
은(는) URL로 보이는 <string>
이거나 추가 필드가 있는 <object>
일 수 있습니다. 다음 변형은 유사합니다.
"source": "http://example.com/image.jpg"
"source": {
"url": "http://example.com/image.jpg"
}
Source 개체 필드 source-object-fields
url
string
"http://example.com/image.jpg"
name
string
content-disposition
헤더에 있는 파일 이름보다 우선 순위가 높습니다. 기본값은 "file"입니다."image.jpg"
size
number
content-length
헤더보다 우선합니다.10234
mimetype
string
content-type
헤더보다 우선합니다."image/jpeg"
전체 process
요청 예 complete-process-request-example
{
"source": "https://www.adobe.com/content/dam/acom/en/lobby/lobby-bg-bts2017-logged-out-1440x860.jpg",
"renditions" : [{
"name": "image.48x48.png",
"target": "https://some-presigned-put-url-for-image.48x48.png",
"fmt": "png",
"width": 48,
"height": 48
},{
"name": "image.200x200.jpg",
"target": "https://some-presigned-put-url-for-image.200x200.jpg",
"fmt": "jpg",
"width": 200,
"height": 200
},{
"name": "cqdam.xmp.xml",
"target": "https://some-presigned-put-url-for-cqdam.xmp.xml",
"fmt": "xmp"
},{
"name": "cqdam.text.txt",
"target": "https://some-presigned-put-url-for-cqdam.text.txt",
"fmt": "text"
}]
}
프로세스 응답 process-response
/process
요청은 기본 요청 유효성 검사에 따라 성공 또는 실패로 즉시 반환됩니다. 실제 자산 처리는 비동기적으로 발생합니다.
application/json
X-Request-Id
X-Request-Id
요청 헤더와 동일하거나 고유하게 생성된 헤더입니다. 시스템 또는 지원 요청에서 요청을 식별하는 데 사용합니다.ok
및 requestId
필드가 있는 JSON 개체입니다.상태 코드:
-
200 성공: 요청이 성공적으로 제출된 경우. 응답 JSON에
"ok": true
이(가) 포함되어 있습니다.code language-json { "ok": true, "requestId": "1234567890" }
-
400 잘못된 요청: 요청이 잘못 구성된 경우(예: JSON 페이로드의 필수 필드가 부족한 경우). 응답 JSON에
"ok": false
이(가) 포함되어 있습니다.code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
-
401 권한 없음: 요청에 유효한 인증이 없는 경우. 예를 들어 잘못된 액세스 토큰 또는 잘못된 API 키가 있을 수 있습니다.
-
403 사용할 수 없음: 요청에 유효한 권한 부여가 없는 경우. 올바른 액세스 토큰이 예이지만 Adobe Developer Console 프로젝트(기술 계정)가 모든 필수 서비스를 구독하는 것은 아닙니다.
-
429 요청이 너무 많음: 이 특정 클라이언트 또는 전체 수요로 인해 시스템이 초과될 때 발생합니다. 클라이언트는 지수 백오프를 사용하여 다시 시도할 수 있습니다. 시체가 비어 있습니다.
-
4xx 오류: 다른 클라이언트 오류가 있는 경우입니다. 모든 오류에 대해 보장되지는 않지만 일반적으로 다음과 같은 JSON 응답이 반환됩니다.
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
-
5xx 오류: 다른 서버 측 오류가 있는 경우. 모든 오류에 대해 보장되지는 않지만 일반적으로 다음과 같은 JSON 응답이 반환됩니다.
code language-json { "ok": false, "requestId": "1234567890", "message": "error message" }
대부분의 클라이언트는 401 또는 403과 같은 제외 구성 문제 또는 400과 같은 잘못된 요청에 대해 지수 백오프로 동일한 요청을 다시 시도할 수 있습니다. 429 응답을 통한 일반적인 속도 제한과 별도로, 일시적인 서비스 중단 또는 제한으로 인해 5xx 오류가 발생할 수 있습니다. 그런 다음 일정 시간 후 다시 시도하는 것이 좋습니다.
모든 JSON 응답(있는 경우)에는 X-Request-Id
헤더와 동일한 값인 requestId
이(가) 포함됩니다. Adobe 헤더는 항상 존재하므로 헤더에서 읽는 것이 좋습니다. requestId
은(는) 처리 요청과 관련된 모든 이벤트에서도 requestId
(으)로 반환됩니다. 클라이언트는 이 문자열의 형식을 가정해서는 안 됩니다. 불투명 문자열 식별자입니다.
후 처리 옵트인 opt-in-to-post-processing
Asset compute SDK은(는) 기본 이미지 후처리 옵션 집합을 지원합니다. 사용자 지정 작업자는 렌디션 개체의 postProcess
필드를 true
(으)로 설정하여 사후 처리를 명시적으로 옵트인할 수 있습니다.
지원되는 사용 사례는 다음과 같습니다.
- Crop은 crop.w, crop.h, crop.x 및 crop.y별 제한이 정의된 사각형에 대한 렌디션입니다. 변환 개체의
instructions.crop
필드에 자르기 세부 정보가 지정되어 있습니다. - 폭, 높이 또는 둘 다를 사용하여 이미지 크기를 조정합니다.
instructions.width
및instructions.height
은(는) 렌디션 개체에서 이를 정의합니다. 폭 또는 높이만 사용하여 크기를 조정하려면 값을 하나만 설정합니다. 컴퓨팅 서비스는 종횡비를 유지합니다. - JPEG 이미지에 대한 품질을 설정합니다.
instructions.quality
은(는) 렌디션 개체에 정의합니다. 품질 레벨 100은 가장 높은 품질을 나타내고 낮은 숫자는 품질 감소를 나타냅니다. - 인터레이스 이미지를 만듭니다.
instructions.interlace
은(는) 렌디션 개체에 정의합니다. - DPI를 설정하여 픽셀에 적용된 비율을 조정하여 데스크탑 게시용으로 렌더링된 크기를 조정합니다.
instructions.dpi
은(는) dpi 해상도를 변경하기 위해 렌디션 개체에 정의합니다. 그러나 이미지의 크기를 다른 해상도로 같은 크기로 조정하려면convertToDpi
지침을 사용하십시오. - 렌더링된 폭 또는 높이가 지정된 대상 해상도(DPI)에서 원본과 동일하게 유지되도록 이미지의 크기를 조정합니다.
instructions.convertToDpi
은(는) 렌디션 개체에 정의합니다.
자산에 워터마크 추가 add-watermark
Asset compute SDK에서는 PNG, JPEG, TIFF 및 GIF 이미지 파일에 워터마크를 추가할 수 있습니다. 변환의 watermark
개체에 있는 변환 지침에 따라 워터마크가 추가됩니다.
워터마크는 렌디션 후처리 중에 수행됩니다. 에셋에 워터마크를 지정하려면 사용자 지정 작업자 은(는) 렌디션 개체의 필드 postProcess
을(를) true
(으)로 설정하여 사후 처리를 옵트인합니다. 작업자가 옵트인하지 않으면 워터마크 객체가 요청의 렌디션 객체에 설정되어 있더라도 워터마크가 적용되지 않습니다.
렌디션 지침 rendition-instructions
/process
의 renditions
배열에 사용할 수 있는 옵션은 다음과 같습니다.
공통 필드 common-fields
worker
string
https://
URL이어야 합니다. 이 필드가 있으면 사용자 정의 응용 프로그램에서 렌디션을 만듭니다. 그런 다음 사용자 정의 애플리케이션에서 다른 모든 렌디션 설정 필드를 사용합니다."https://1234.adobeioruntime.net
/api/v1/web
/example-custom-worker-master/worker"
target
string
http://w.com/img.jpg
target
object
생성된 렌디션에 대한 다중 부분 사전 서명된 URL 업로드 정보입니다. 이 정보는 이 다중 부분 업로드 동작을 사용하는 AEM/Oak 다이렉트 이진 업로드에 대한 것입니다.
필드:
urls
: 사전 서명된 각 부분 URL에 대해 하나씩 문자열 배열minPartSize
: 한 부분에 사용할 최소 크기 = urlmaxPartSize
: 한 부분에 사용할 최대 크기 = url
{ "urls": [ "https://part1...", "https://part2..." ], "minPartSize": 10000, "maxPartSize": 100000 }
userData
object
{ ... }
렌디션별 필드 rendition-specific-fields
현재 지원되는 파일 형식 목록은 지원되는 파일 형식을 참조하십시오.
embedBinaryLimit
number
바이트embedBinaryLimit
제한보다 큰 경우 클라우드 저장소의 위치에 표시되고 이벤트에 포함되지 않습니다.3276
width
number
200
height
number
200
종횡비는 다음과 같은 경우 항상 유지됩니다.
width
과(와)height
을(를) 모두 지정한 다음 종횡비를 유지하면서 이미지가 크기에 맞게 조정됩니다.width
또는height
만 지정된 경우 결과 이미지는 종횡비를 유지하면서 해당 차원을 사용합니다width
또는height
을(를) 지정하지 않으면 원본 이미지 픽셀 크기가 사용됩니다. 소스 유형에 따라 다릅니다. PDF 파일과 같은 일부 형식의 경우 기본 크기가 사용됩니다. 최대 크기 제한이 있을 수 있습니다.
quality
number
1
에서 100
사이의 jpeg 품질을 지정하십시오. 이미지 표현물에만 적용됩니다.90
xmp
string
interlace
bool
true
(으)로 설정하여 만듭니다. 다른 파일 형식에는 영향을 주지 않습니다.jpegSize
number
quality
설정을 재정의합니다. 다른 형식에는 영향을 주지 않습니다.dpi
number
또는 object
96
또는 { xdpi: 96, ydpi: 96 }
convertToDpi
number
또는 object
96
또는 { xdpi: 96, ydpi: 96 }
files
array
ZIP 보관 파일(fmt=zip
)에 포함할 파일 목록입니다. 각 항목은 URL 문자열이거나 필드가 있는 객체일 수 있습니다.
url
: 파일을 다운로드할 URLpath
: ZIP에서 이 경로에 파일을 저장합니다.
[{ "url": "https://host/asset.jpg", "path": "folder/location/asset.jpg" }]
duplicate
string
fmt=zip
)에 대한 중복 처리입니다. 기본적으로 ZIP의 동일한 경로에 저장된 여러 파일은 오류를 생성합니다. duplicate
을(를) ignore
(으)로 설정하면 첫 번째 자산만 저장되고 나머지 자산은 무시됩니다.ignore
워터마크별 필드 watermark-specific-fields
PNG 형식은 워터마크로 사용됩니다.
scale
number
0.0
에서 1.0
사이)입니다. 1.0
은(는) 워터마크의 원래 크기(1:1)를 나타내며 값이 낮을수록 워터마크 크기가 감소함을 의미합니다.0.5
값은 원래 크기의 절반을 의미합니다.image
url
비동기 이벤트 asynchronous-events
렌디션 처리가 완료되거나 오류가 발생하면 Adobe I/O Events Journal
(으)로 이벤트가 전송됩니다. 클라이언트는 /register
을(를) 통해 제공된 저널 URL을 수신해야 합니다. 저널 응답에는 각 이벤트에 대해 하나의 개체로 구성된 event
배열이 포함되며, 그 중 event
필드에는 실제 이벤트 페이로드가 포함됩니다.
Asset Compute Service의 모든 이벤트에 대한 Adobe I/O Events
형식은 asset_compute
입니다. 저널은 이 이벤트 유형만 자동으로 구독되며 Adobe Developer 이벤트 유형을 기준으로 필터링할 추가 요구 사항은 없습니다. 서비스별 이벤트 유형은 이벤트의 type
속성에서 사용할 수 있습니다.
이벤트 유형 event-types
rendition_created
rendition_failed
이벤트 속성 event-attributes
requestId
string
*
X-Request-Id
헤더와 동일한 /process
에 대한 원래 요청의 요청 ID입니다.source
object
*
/process
요청의 source
.userData
object
*
/process
요청의 userData
렌디션입니다.rendition
object
rendition_*
/process
에서 전달된 해당 렌디션 개체입니다.errorMessage
string
rendition_failed
메타데이터 metadata
repo:size
repo:sha1
dc:format
repo:encoding
tiff:ImageWidth
tiff:ImageLength
오류 이유 error-reasons
RenditionFormatUnsupported
SourceUnsupported
SourceCorrupt
RenditionTooLarge
target
에 제공된 사전 서명된 URL을 사용하여 렌디션을 업로드할 수 없습니다. 실제 렌디션 크기는 repo:size
에서 메타데이터로 사용할 수 있으며, 클라이언트가 올바른 수의 사전 서명된 URL로 이 렌디션을 재처리하는 데 사용됩니다.GenericError