HTTP 요청을 통해 Workflows에서 Cloud Run 함수나 Cloud Run과 같은 Google Cloud 서비스를 호출할 수 있습니다. 가장 일반적인 HTTP 요청 메서드에는 호출 단축키(예: http.get 및 http.post)가 있지만, call 필드를 http.request로 설정하고 method 필드를 사용해 요청 유형을 지정하여 모든 유형의 HTTP 요청을 수행할 수 있습니다. 자세한 내용은 HTTP 요청 수행을 참조하세요.
인증된 요청을 보내려면 다음 안내를 따르세요.
필요한 권한이 포함된 Identity and Access Management(IAM) 역할이 하나 이상 부여된 서비스 계정과 워크플로가 연결되어야 합니다.
워크플로 정의에 인증 정보를 명시적으로 추가해야 합니다. 기본적으로 HTTP 요청은 보안상의 이유로 ID 또는 액세스 토큰을 포함하지 않습니다.
자세한 내용은 워크플로에 Google Cloud 리소스 액세스 권한 부여를 참조하세요.
서비스를 호출해야 하는 경우
Workflows 구문을 사용하여 YAML 또는 JSON에서 단계를 만들어야 하거나 대신 작업을 수행하기 위해 서비스(예: Cloud Run 서비스 또는 Cloud Run 함수)를 만들어야 하는 시기를 어떻게 알 수 있나요?
Workflows를 사용하여 워크플로 자체에서 서비스를 호출하고 결과를 처리하며 HTTP 호출과 같은 간단한 태스크를 실행합니다. Workflows는 서비스를 호출하고 응답을 파싱하며 다른 연결된 서비스의 입력을 구성할 수 있습니다. 서비스를 호출하면 추가 호출, 추가 종속 항목, 서비스 호출 서비스의 복잡성을 방지할 수 있습니다.
Workflows 표현식과 표준 라이브러리에서 지원하지 않는 재사용 가능한 비즈니스 로직, 복잡한 계산 또는 변환을 구현하는 등 Workflows에서 복잡한 작업을 수행할 수 있도록 서비스를 만듭니다. 복잡한 사례에서는 일반적으로 YAML 또는 JSON과 Workflows 구문을 사용하는 대신 코드로 구현하기가 더 쉽습니다.
요청 제한 시간 및 페이로드 한도
HTTP를 통해 Cloud Run 서비스 또는 Cloud Run 함수를 호출할 때 Workflows의 동기식 HTTP 요청(http.get, http.post, http.request)은 기본적으로 5분(300초) 제한 시간으로 설정되고 최대 30분(1,800초) 제한 시간을 지원하며 최대 2MB 응답 크기를 허용합니다(변수에 저장된 경우 512KB 변수 메모리 한도 적용).
Cloud Run 서비스 및 Cloud Run Functions(2세대)는 최대 60분의 요청 제한 시간을 지원하지만 Workflows의 동기식 http.* 단계는 구성된 제한 시간(최대 30분) 후에 TimeoutError로 타임아웃됩니다. 30분 이상 실행되거나 대규모 페이로드를 반환하는 워크로드의 경우 Cloud Run 작업 또는 콜백 엔드포인트를 사용합니다. 한도 및 권장 패턴 비교는 서비스 전반의 제한 시간 및 페이로드 크기 조정을 참조하세요.
내부 인그레스로 제한된 서비스 호출
Workflows는 내부 트래픽으로 제한된 인그레스가 있는 동일한 Google Cloud 프로젝트 또는 VPC 서비스 제어 경계에서 Cloud Run Functions 또는 Cloud Run 서비스를 호출할 수 있습니다. 이 구성을 사용하면 인터넷에서 서비스에 연결할 수 없지만 Workflows에서 연결할 수 있습니다.
이러한 제한사항을 적용하려면 서비스 또는 함수의 인그레스 설정을 조정해야 합니다. Cloud Run 서비스는 커스텀 도메인이 아닌 run.app URL로 연결되어야 합니다. 자세한 내용은 네트워크 인그레스 제한(Cloud Run 및 Cloud Run Functions 2세대) 및 네트워크 설정 구성(1세대)(Cloud Run Functions 1세대)을 참조하세요. 워크플로에서 다른 변경사항은 필요하지 않습니다.
필요한 권한이 있는 서비스 계정 사용
다른 Google Cloud 서비스에 요청을 수행할 때는 요청된 리소스에 액세스하는 데 필요한 올바른 권한이 있는 서비스 계정에 워크플로를 연결해야 합니다. 기존 워크플로와 연결된 서비스 계정에 대해 알아보려면 워크플로의 연결된 서비스 계정 확인을 참조하세요.
서비스 계정을 설정할 때 액세스 권한을 부여할 리소스와 요청 ID를 연결하고 요청 ID를 리소스의 주 구성원으로 만든 후 적절한 역할을 할당합니다. 역할은 리소스 컨텍스트에서 ID의 권한을 정의합니다.
예를 들어 특정 호출 함수나 서비스의 요청을 수락하도록 수신 Cloud Run 함수(1세대)를 구성하려면 호출자의 서비스 계정을 수신 함수에 주 구성원으로 추가하고 이 주 구성원에게 Cloud Functions 호출자(roles/cloudfunctions.invoker) 역할을 부여해야 합니다. 마찬가지로 Cloud Run 서비스 또는 Cloud Run Functions(2세대)의 서비스 계정을 설정하려면 해당 서비스 계정에 Cloud Run 호출자(roles/run.invoker) 역할을 부여합니다. 자세한 내용은 IAM으로 액세스 제어 또는 Cloud Run 인증 개요를 참조하세요.
Cloud Run Functions 호출
Cloud Run Functions에서 기본 Cloud Run 서비스를 관리하여 호출 권한을 사용할 수 있습니다. 워크플로에서 Cloud Run Functions 서비스를 호출하는 경우 호출자의 서비스 계정에 Cloud Functions 호출자(roles/cloudfunctions.invoker) IAM 역할을 부여할 필요가 없습니다. 대신 Cloud Run 호출자(roles/run.invoker) IAM 역할을 부여해야 합니다.
자세한 내용은 Cloud Run Functions 비교를 참조하세요.
워크플로에 인증 정보 추가
요청을 Cloud Run 함수나 Cloud Run에 보낼 때 OIDC를 사용하여 인증합니다.
OIDC를 사용하여 HTTP 요청을 수행하려면 URL을 지정한 후 워크플로 정의의 args 섹션에 auth 섹션을 추가합니다. 이 예시에서는 Cloud Run 함수가 호출되도록 요청이 전송됩니다.
YAML
- step_A: call: http.get args: url: https://us-central1-project.cloudfunctions.net/functionA query: firstNumber: 4 secondNumber: 6 operation: sum auth: type: OIDC audience: OIDC_AUDIENCE
JSON
[ { "step_A": { "call": "http.get", "args": { "url": "https://us-central1-project.cloudfunctions.net/functionA", "query": { "firstNumber": 4, "secondNumber": 6, "operation": "sum" }, "auth": { "type": "OIDC", "audience": "OIDC_AUDIENCE" } } } } ]
audience 매개변수는 토큰의 OIDC 대상(OIDC_AUDIENCE)을 지정합니다. 기본적으로 url과 동일한 값으로 설정되지만 url에 서비스 또는 함수의 기준 URL 이외의 추가 경로 세그먼트가 포함된 경우 audience를 기준 URL(예: https://us-central1-project.cloudfunctions.net/functionA)로 설정합니다.
응답 데이터의 미디어 유형 지정
응답의 Content-Type 헤더가 application/json 미디어 유형을 지정하면 변수에 저장된 JSON 응답이 액세스할 수 있는 맵으로 자동 변환됩니다.
필요한 경우 Content-Type 응답 헤더의 application/json 미디어 유형을 지정하기 위해 호출되는 API를 수정합니다. 그렇지 않으면 json.decode 및 text.encode 함수를 사용하여 응답 본문을 맵으로 변환할 수 있습니다. 예를 들면 다음과 같습니다.
json.decode(text.encode(RESPONSE_FROM_API))
자세한 내용은 변수에 저장된 HTTP 응답 데이터 액세스를 참조하세요.
Cloud Run 작업 실행
Cloud Run 서비스와 달리 Cloud Run 작업은 HTTP 요청을 리슨하거나 제공하지 않습니다. 워크플로에서 Cloud Run 작업을 실행하려면 Cloud Run Admin API 커넥터를 사용합니다.
작업을 완료하는 데 30분 이상 걸리는 경우 작업의 태스크 제한 시간(기본값은 10분, 최대 168시간 또는 7일까지 구성 가능)과 커넥터 호출의 connector_params.timeout(기본값은 1,800초, 최대 31,536,000초 또는 1년까지 설정 가능)을 모두 구성합니다.
작업에 환경 변수로 전달된 데이터를 처리하는 Cloud Run 작업을 실행하는 엔드 투 엔드 예시는 Workflows를 사용하여 Cloud Run 작업 실행을 참조하세요.
고객 관리 암호화 키(CMEK)를 사용하여 데이터를 암호화할 수 있도록 해주는 Cloud Storage 버킷에 저장된 데이터를 처리하는 Cloud Run 작업을 실행하는 엔드 투 엔드 예시는 Cloud Storage에서 이벤트 데이터를 처리하는 Cloud Run 작업 실행을 참조하세요.