Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

리소스의 완료된 실행 목록(List Executions Resource) (V2)

함수나 자동화 등 리소스의 완료된 실행을 최근 항목부터 조회합니다. 성공한 실행과 실패한 실행을 포함하며 진행 중인 실행은 반환하지 않습니다. 시간 조건은 완료 시각이 아니라 시작 시각에 적용합니다.

startTime 이상, endTime 미만인 범위를 사용합니다. 두 값을 모두 생략하면 최근 24시간을 조회하며 각 필드의 기본값은 24시간 전과 현재 시각입니다. 과거의 특정 기간을 조회할 때는 시작과 끝을 모두 명시합니다.

이 엔드포인트는 미리보기 기능이며 언제든 변경되거나 제거될 수 있습니다. 사용하려면 preview=true를 지정합니다.

HTTP 요청

POST /api/v2/observability/resources/{resourceRid}/listExecutions

작업 식별자는 v2.listExecutionsResource입니다. OAuth2로 호출하는 타사 애플리케이션에는 api:observability-read 권한 범위가 필요합니다. 각 요청에 Authorization: Bearer <접근 토큰>을 전달합니다.

경로 매개변수

이름자료형필수 여부의미와 조건예시 값
resourceRidstring필수Foundry 리소스의 RID입니다.ri.function-registry.main.function.c26f11c8-cdb3-4f44-9f5d-9816ea1c82da

쿼리 매개변수

이름자료형필수 여부의미와 조건예시 값
previewboolean선택미리보기 기능 사용을 활성화합니다.true

요청 본문

본문 형식은 ListExecutionsResourceRequest이며 필수입니다.

이름자료형필수 여부의미와 조건예시 값
startTimestring (date-time)선택이 시각 이후에 시작한 실행을 반환하며 이 시각도 포함합니다. 기본값은 24시간 전입니다.
endTimestring (date-time)선택이 시각 전에 시작한 실행을 반환하며 이 시각은 제외합니다. 기본값은 현재 시각입니다.
whereunion<not, or, in, and, isNull, gte, eq, lte>선택실행 결과의 범위를 좁힐 필터입니다.
pageSizeinteger선택페이지마다 반환할 실행 수의 상한입니다. 최대값은 100입니다.
pageTokenstring선택이전 응답에서 받은 다음 페이지 조회 토큰입니다.

where의 구조

필터의 8가지 분기와 속성별 허용 연산자는 실행 필터를 따릅니다.

다음은 2024년 9월 25일 UTC 기간의 첫 페이지를 조회하는 가상 예시입니다.

{
  "startTime": "2024-09-25T00:00:00Z",
  "endTime": "2024-09-26T00:00:00Z",
  "pageSize": 100
}

응답

응답 형식은 ListExecutionsResponse이며 data와 nextPageToken은 선택 필드입니다. 다음 페이지가 있으면 반환한 토큰을 요청 본문의 pageToken에 전달합니다.

로그를 찾을 때는 foundryTraceId와 traceOwningRid를 함께 사용합니다. 추적 ID 하나만으로 로그 위치를 결정하지 않습니다.

이름자료형필수 여부의미와 조건예시 값
datalist<Execution>선택질의 조건과 일치한 실행 목록입니다.
nextPageTokenstring선택다음 페이지를 요청할 때 pageToken에 전달할 토큰입니다. 다음 토큰이 없으면 마지막 페이지입니다.

data의 구조

배열 항목은 Execution이며 자료형은 object입니다.

함수 호출 한 번이나 자동화 실행 한 번과 같은 Foundry 계산 리소스의 개별 실행입니다.

이름자료형필수 여부의미와 조건예시 값
traceOwningRidstring필수이 실행의 추적 문맥을 소유하는 리소스 RID입니다. 실행 로그를 찾을 때 foundryTraceId와 함께 사용합니다.ri.object-sentinel.main.monitor.f7c14421-54f4-4e9f-b6f2-1971b79d612b
foundryTraceIdstring필수이 실행의 Foundry 추적 ID입니다. 추적을 고유하게 식별하지만 이것만으로 로그를 찾기에는 충분하지 않습니다. traceOwningRid와 함께 사용합니다.1f168a0f-8f5a-648c-8ce4-21d9f1ce17c2
resourceRidstring필수이 실행을 생성한 리소스의 RID입니다.ri.function-registry.main.function.c26f11c8-cdb3-4f44-9f5d-9816ea1c82da
resourceVersionstring필수실행 당시 리소스 버전입니다.1.2.0
statusenum필수실행의 성공 또는 실패 상태입니다. 허용값: SUCCEEDED, FAILED.SUCCEEDED
failureReasonstring선택실패한 경우의 분류 문자열입니다. invalid_parameter, timeout 같은 분류값이며 자유 형식 설명이 아닙니다.timeout
startTimestring (date-time)필수실행을 시작한 시각입니다.2024-09-25T17:29:35.974Z
durationobject필수전체 실행 시간입니다.응답 예시 참조
callerRidstring선택이 실행을 시작한 호출자의 RID입니다. Workshop 앱이나 자동화가 호출자가 될 수 있습니다.ri.workshop.main.module.f1e2d3c4-b5a6-7890-1234-567890abcdef
duration의 구조
이름자료형필수 여부의미와 조건예시 값
valueinteger필수기간의 수치입니다.30
unitenum필수기간의 단위입니다. 허용값: MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS.SECONDS

가상 함수 실행 목록의 응답 예시입니다.

{
  "data": [
    {
      "duration": {
        "unit": "SECONDS",
        "value": 30
      },
      "foundryTraceId": "1f168a0f-8f5a-648c-8ce4-21d9f1ce17c2",
      "resourceVersion": "1.2.0",
      "failureReason": "timeout",
      "traceOwningRid": "ri.object-sentinel.main.monitor.f7c14421-54f4-4e9f-b6f2-1971b79d612b",
      "resourceRid": "ri.function-registry.main.function.c26f11c8-cdb3-4f44-9f5d-9816ea1c82da",
      "startTime": "2024-09-25T17:29:35.974Z",
      "callerRid": "ri.workshop.main.module.f1e2d3c4-b5a6-7890-1234-567890abcdef",
      "status": "FAILED"
    }
  ],
  "nextPageToken": "v1.QnVpbGQgdGhlIEZ1dHVyZTogaHR0cHM6Ly93d3cucGFsYW50aXIuY29tL2NhcmVlcnMvP2xldmVyLXNvdXJjZSU1YiU1ZD1BUElEb2NzI29wZW4tcG9zaXRpb25z"
}

개별 오류

오류 이름오류 코드HTTP의미와 조건추가 매개변수
InvalidExecutionFilterINVALID_ARGUMENT400실행 필터가 올바르지 않습니다. 필수 필드 누락이나 잘못된 필터 매개변수 등이 원인일 수 있습니다.
ListExecutionsPermissionDeniedPERMISSION_DENIED403토큰에 이 리소스의 실행을 조회할 권한이 없습니다.resourceRid
ListExecutionsResourcePermissionDeniedPERMISSION_DENIED403이 리소스의 실행을 조회할 권한이 없습니다.resourceRid
ResourceNotFoundNOT_FOUND404지정한 리소스를 찾을 수 없습니다.resourceRid

요청 예제

FOUNDRY_HOST에는 https://를 제외한 Foundry 호스트를, FOUNDRY_TOKEN에는 유효한 토큰을 환경 변수로 제공합니다.

가상 함수 RID와 2024년 9월 25일 UTC 기간을 사용하는 첫 페이지 예제입니다. 실제 리소스와 조회 기간으로 바꿉니다. 첫 페이지에는 pageToken을 넣지 않으며 이후 페이지에만 받은 토큰을 사용합니다.

cURL

curl -X POST \
	-H "Content-type: application/json" \
	-H "Authorization: Bearer ${FOUNDRY_TOKEN}" \
	"https://${FOUNDRY_HOST}/api/v2/observability/resources/ri.function-registry.main.function.c26f11c8-cdb3-4f44-9f5d-9816ea1c82da/listExecutions?preview=true" \
	-d '{"startTime":"2024-09-25T00:00:00Z","endTime":"2024-09-26T00:00:00Z","pageSize":100}'

Python

Requests 라이브러리가 설치된 Python 환경에서 사용합니다.

import os
import requests

HOSTNAME = os.environ["FOUNDRY_HOST"]
TOKEN = os.environ["FOUNDRY_TOKEN"]
headers = {
    "content-type": "application/json",
    "authorization": "Bearer {}".format(TOKEN)
}
request_body = {
    "startTime": "2024-09-25T00:00:00Z",
    "endTime": "2024-09-26T00:00:00Z",
    "pageSize": 100
}

response = requests.post('https://{}/api/v2/observability/resources/ri.function-registry.main.function.c26f11c8-cdb3-4f44-9f5d-9816ea1c82da/listExecutions?preview=true'.format(HOSTNAME), headers=headers, json=request_body)
print(response)

Java

Apache HttpClient 4.5 API와 try-with-resources를 사용합니다. 클래스 이름에 맞는 ListExecutionsResourceExample.java 파일에서 사용합니다.

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;

public class ListExecutionsResourceExample {
    public static void main(String[] args) throws Exception {
        String HOSTNAME = System.getenv("FOUNDRY_HOST");
        String TOKEN = System.getenv("FOUNDRY_TOKEN");

        try (CloseableHttpClient httpClient = HttpClientBuilder.create().build()) {
            HttpPost request = new HttpPost("https://" + HOSTNAME + "/api/v2/observability/resources/ri.function-registry.main.function.c26f11c8-cdb3-4f44-9f5d-9816ea1c82da/listExecutions?preview=true");
            request.addHeader("content-type", "application/json");
            request.addHeader("authorization", String.format("Bearer %s", TOKEN));
            request.setEntity(new StringEntity("{\"startTime\":\"2024-09-25T00:00:00Z\",\"endTime\":\"2024-09-26T00:00:00Z\",\"pageSize\":100}", ContentType.APPLICATION_JSON));
            try (CloseableHttpResponse response = httpClient.execute(request)) {
                System.out.println(response);
            }
        }
    }
}

JavaScript

fetch를 제공하는 Node.js 환경에서 사용합니다. 서비스 사용자 토큰을 브라우저로 전달하지 않습니다.

const HOSTNAME = process.env.FOUNDRY_HOST;
const TOKEN = process.env.FOUNDRY_TOKEN;

fetch(`https://${HOSTNAME}/api/v2/observability/resources/ri.function-registry.main.function.c26f11c8-cdb3-4f44-9f5d-9816ea1c82da/listExecutions?preview=true`, {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${TOKEN}`,
    },
    body: '{"startTime":"2024-09-25T00:00:00Z","endTime":"2024-09-26T00:00:00Z","pageSize":100}'
}).then((response) => {
    console.log(response)
});

PowerShell

$ErrorActionPreference = 'Stop'
$TOKEN = $env:FOUNDRY_TOKEN
$HOSTNAME = $env:FOUNDRY_HOST

$headers = @{
    "authorization" = "Bearer $TOKEN"
}

$response = Invoke-WebRequest -Uri "https://$HOSTNAME/api/v2/observability/resources/ri.function-registry.main.function.c26f11c8-cdb3-4f44-9f5d-9816ea1c82da/listExecutions?preview=true" `
	-Method Post `
	-Headers $headers `
	-ContentType application/json `
	-Body "{`"startTime`":`"2024-09-25T00:00:00Z`",`"endTime`":`"2024-09-26T00:00:00Z`",`"pageSize`":100}"

$response.content