HTTP 호출을 수행하는 워크플로 단계를 정의하고 호출의 응답을 변수에 할당할 수 있습니다. 예를 들어 HTTP 요청을 통해 Google Cloud 서비스 (예: Cloud Run 함수 또는 Cloud Run)를 호출할 수 있습니다.
HTTP 엔드포인트 호출
이 유형의 단계를 사용하면 HTTP 요청을 수행할 수 있습니다. HTTP 요청과 HTTPS 요청이 모두 지원됩니다. 가장 일반적인 HTTP 요청 메서드에는 호출 단축키(예: http.get 및 http.post)가 있지만, call
필드를 http.request
로 설정하고 method
필드를 사용해 요청 유형을 지정하여 모든 유형의 HTTP 요청을 수행할 수 있습니다.
-STEP_NAME : call:HTTP_REQUEST args: url:URL_VALUE method:REQUEST_METHOD private_service_name: "REGISTERED_SERVICE " headers:HEADER_KEY :HEADER_VALUE ... body:BODY_KEY :BODY_VALUE ... query:QUERY_KEY :QUERY_VALUE ... auth: type:AUTH_TYPE scope:AUTH_SCOPE scopes:AUTH_SCOPE audience:AUDIENCE timeout:TIMEOUT_IN_SECONDS result:RESULT_VALUE
[ { "STEP_NAME ": { "call": "HTTP_REQUEST ", "args": { "url": "URL_VALUE ", "method": "REQUEST_METHOD ", "private_service_name": "REGISTERED_SERVICE ", "headers": {"HEADER_KEY ":"HEADER_VALUE ", ... }, "body": {"BODY_KEY ":"BODY_VALUE ", ... }, "query": {"QUERY_KEY ":"QUERY_VALUE ", ... }, "auth": { "type":"AUTH_TYPE ", "scope":"AUTH_SCOPE ", "scopes":"AUTH_SCOPE ", "audience":"AUDIENCE " }, "timeout": "TIMEOUT_IN_SECONDS " }, "result": "RESULT_VALUE " } } ]
다음을 바꿉니다.
HTTP_REQUEST
: 필수 항목입니다. HTTP 요청에 다음 중 하나를 사용합니다.http.delete
http.get
http.patch
http.post
http.put
http.request
URL_VALUE
: 필수 항목입니다. 요청이 전송된 URL입니다.REQUEST_METHOD
: 호출 유형http.request
를 사용하는 경우 필수. 사용할 HTTP 요청 메서드의 유형입니다. 예를 들면 다음과 같습니다.GET
POST
PATCH
DELETE
REGISTERED_SERVICE
: 선택사항입니다. 등록된 서비스 디렉터리 서비스 이름이며projects/PROJECT_ID/locations/LOCATION/namespaces/NAMESPACE_NAME/services/SERVICE_NAME
형식입니다. 자세한 내용은 VPC 서비스 제어 규정을 준수하는 비공개 엔드포인트 호출을 참조하세요.HEADER_KEY
:HEADER_VALUE
: 선택사항. API에 입력 데이터를 제공하는 헤더 필드입니다.Content-Type
헤더를 사용하여 요청 본문의 미디어 유형을 지정하면 다음 유형만 지원됩니다.application/json
또는application/type+json
—지도여야 합니다.application/x-www-form-urlencoded
—인코딩되지 않은 문자열이어야 합니다.text/type
—문자열이어야 합니다.
Content-Type
헤더가 지정된 경우 본문이 사전 규칙에 따라 인코딩됩니다. 예를 들어 JSON 또는 URL로 인코딩될 수 있습니다.User-Agent
헤더를 사용하여 요청 사용자 에이전트를 식별하는 경우 다음 사항이 적용됩니다.- 기본값은
GoogleCloudWorkflows; (+https://cloud.google.com/workflows/docs)
입니다. - 값이 지정되면 값에
GoogleCloudWorkflows; (+https://cloud.google.com/workflows/docs)
가 추가됩니다.예를 들어
User-Agent: "MY_USER_AGENT_VALUE"
가 지정되면 HTTP 요청 헤더는 다음과 같습니다(지정된 값과 추가된 기본값 사이에 공백이 있음).MY_USER_AGENT_VALUE GoogleCloudWorkflows; (+https://cloud.google.com/workflows/docs)
BODY_KEY
:BODY_VALUE
: 선택사항. API에 입력 데이터를 제공하는 body 필드입니다.Content-Type
헤더가 지정되지 않았고 요청 본문이 있으면 다음이 적용됩니다.- 본문 값이 바이트이면 헤더가
Content-Type: application/octet-stream
으로 설정됩니다. - 그렇지 않으면 본문이 JSON으로 인코딩되고 헤더가
Content-Type: application/json; charset=utf-8
로 설정됩니다.
body: requests: - image: source: gcsImageUri: ${gsUri} features: - type: LABEL_DETECTION - type: SAFE_SEARCH_DETECTION - type: IMAGE_PROPERTIES result: imageAnalysisResponse
{ "requests":[ { "image": { "source": { "gcsUri": "img.png" } }, "features": [ { "type":"LABEL_DETECTION" }, { "type":"SAFE_SEARCH_DETECTION" }, { "type":"IMAGE_PROPERTIES" }, ] } ] }
- 본문 값이 바이트이면 헤더가
QUERY_KEY
:QUERY_VALUE
: 선택사항입니다. API에 입력 데이터를 제공하는 쿼리 필드입니다.AUTH_TYPE
: 선택사항입니다. 호출 중인 API에 인증이 필요한 경우 필수입니다.OIDC
또는OAuth2
를 사용합니다. 자세한 내용은 워크플로에서 인증된 요청 수행을 참조하세요.AUTH_SCOPE
: 선택사항입니다. 애플리케이션 액세스를 사용자 계정으로 제한합니다.scope
또는scopes
키를 사용하세요.scope
키는 문자열 또는 문자열 목록을 지원합니다. 예를 들면 다음과 같습니다."https://www.googleapis.com/auth/cloud-platform"
또는
["https://www.googleapis.com/auth/cloud-platform", "scope2", "scope3"]
scopes
키는 문자열 또는 문자열 목록을 지원하는 것 외에도 공백 및 쉼표로 구분된 문자열을 지원합니다. 예를 들면 다음과 같습니다."https://www.googleapis.com/auth/cloud-platform scope2 scope3"
또는
"https://www.googleapis.com/auth/cloud-platform,scope2,scope3"
자세한 내용은 Google API의 OAuth 2.0 범위를 참조하세요.
AUDIENCE
: 선택사항입니다. OIDC 토큰 대상을 지정합니다. 기본적으로url
과 동일한 값으로 설정되지만 서비스의 기준 URL로 설정되어야 합니다. 예를 들면https://region-project.cloudfunctions.net/hello_world
입니다.
TIMEOUT_IN_SECONDS
: 선택사항입니다. 예외를 유발하기 전에 요청을 실행할 수 있는 시간(초)입니다. 최댓값은 1,800초입니다.RESULT_VALUE
: 선택사항입니다. HTTP 호출 단계의 결과가 저장되는 변수 이름입니다.
변수에 저장된 HTTP 응답 데이터 액세스
응답의 Content-Type
헤더가 application/json
미디어 유형을 지정하면 변수에 저장된 JSON 응답이 액세스할 수 있는 맵으로 자동 변환됩니다.
필요한 경우 Content-Type
응답 헤더의 application/json
미디어 유형을 지정하기 위해 호출되는 API를 수정합니다. 그렇지 않으면 json.decode
및 text.encode
함수를 사용하여 응답 본문을 맵으로 변환할 수 있습니다. 예를 들면 다음과 같습니다.
json.decode(text.encode(RESPONSE_FROM_API ))
워크플로에는 이 데이터에 액세스하기 위한 기본 제공 파서가 포함되어 있습니다. HTTP 응답에서 필드에 액세스하려면 다음 문법을 사용합니다.
${VARIABLE_NAME .body|code|headers.PATH_TO_FIELD }
다음을 바꿉니다.
VARIABLE_NAME
: JSON 응답을 저장한 워크플로 변수의 이름입니다.body
:body
필드를 사용하여 HTTP 응답 본문에 액세스합니다.code
:code
필드를 사용하여 HTTP 응답 코드에 액세스합니다.headers
:headers
필드를 사용하여 이름별로 HTTP 응답 헤더에 액세스합니다.PATH_TO_FIELD
: 액세스하려는 JSON 응답의 필드 경로입니다. 단순히 필드의 이름일 수도 있고, 필드가 객체 내에 중첩되어 있는 경우object1.object2.field
형식을 취할 수 있습니다.
예를 들어 API가 {"age":50}
을 반환하고 워크플로가 이 응답을 age_response
라는 변수에 저장하면 다음 예시는 age
필드 값을 반환합니다. 이 경우는 50
입니다.
age_response.body.age
샘플
이러한 샘플은 문법을 보여줍니다.
API 호출에서 응답 할당
자체 검색어를 입력하지 않는 한 이 샘플은 Google Cloud위치를 사용하여 검색어를 구성하며 이는 Wikipedia API로 전달됩니다. 관련 Wikipedia 자료 목록이 반환됩니다.
외부 HTTP POST 요청 수행
이 샘플은 외부 HTTP 엔드포인트에 POST 요청을 수행합니다.
헤더를 사용하여 외부 HTTP GET 요청 수행
이 샘플은 커스텀 헤더를 사용하여 HTTP GET 요청을 수행합니다. 다른 유형의 HTTP 요청을 수행할 때 커스텀 헤더 정의를 제공할 수도 있습니다.
Cloud Run 함수에 요청을 보낼 때 OIDC를 사용하여 인증
이 샘플은 URL을 지정한 후 워크플로 정의의 args
섹션에 auth
섹션을 추가하여 OIDC를 사용하여 HTTP 요청을 보냅니다.
HTTP 요청 오류 포착 및 처리
이 샘플은 GET 요청으로 반환된 HTTP 상태 코드를 기반으로 하는 커스텀 예외 핸들러를 구현합니다. 이 워크플로는 잠재적인 예외를 포착하고 사전 정의된 오류 메시지를 반환합니다. 예외가 인식되지 않으면 워크플로 실행이 실패하고 GET 요청으로 반환되는 대로 예외가 발생합니다. 다른 오류 태그는 워크플로 오류를 참조하세요.
다음 단계
- Cloud Run 및 Cloud Run 함수에서 Workflows 사용 튜토리얼
- VPC 서비스 제어 규정을 준수하는 비공개 엔드포인트 호출
- IAP를 사용 설정하여 비공개 온프렘, Compute Engine, GKE 또는 기타 엔드포인트 호출
- Workflows 문법 참조