Google Cloud Functions 확장 프로그램

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

버전 1.0.5

Google Cloud 프로젝트를 통해 배포된 Cloud Functions를 호출합니다.

현재 이 확장 프로그램은 HTTP 트리거 함수 호출을 지원합니다.

기본 요건

이 콘텐츠는 이 확장 프로그램을 구성하고 사용하기 위한 참조를 제공합니다. Extension콜아웃 정책을 사용하여 API 프록시의 확장 프로그램을 사용하려면 다음 요건을 충족해야 합니다.

  1. Cloud Functions API를 사용 설정합니다.

  2. Cloud Functions에서 Google Cloud 프로젝트를 위해 함수를 정의하고 deploy합니다.

  3. 함수에 원하는 액세스 수준에 대해 IAM을 통해 사용자 액세스 권한을 부여합니다. 예를 들어 함수에 대한 액세스를 확장 프로그램을 구성하는 데 사용하는 서비스 계정으로만 제한할 수 있습니다.

  4. GCP 콘솔을 사용하여 서비스 계정의 키를 생성합니다.

  5. 구성 참조를 사용하여 확장 프로그램을 추가 및 구성할 때 결과 키 JSON 파일의 콘텐츠를 사용합니다.

Cloud Functions 정보

Google Cloud Functions를 사용하면 Google Cloud에서 함수를 만들고 배포한 다음 다른 코드에서 해당 함수를 호출할 수 있습니다. Cloud Functions에 대한 소개는 빠른 시작 중 하나를 참조하세요.

샘플

다음 예에서는 ExtensionCall 정책을 사용하여 Cloud Functions에서 함수를 호출하는 방법을 보여줍니다.

Node.js 함수 호출

다음 예에서는 Google Cloud Functions 확장 프로그램을 호출하는 Extension콜아웃 정책을 보여줍니다. 이 확장 프로그램은 Cloud Functions API를 사용 설정할 때 포함된 기본 'hello world' 함수를 호출합니다.

다음 Node.js 자바스크립트는 GCP 계정의 Cloud Functions에 배포됩니다. 요청에 메시지 속성이 포함되어 있으면 코드에서 해당 속성을 반환합니다. 그렇지 않으면 응답으로 'Hello World!'를 반환합니다.

/**
 * Responds to any HTTP request.
 *
 * @param {!express:Request} req HTTP request context.
 * @param {!express:Response} res HTTP response context.
 */
exports.helloWorld = (req, res) => {
  let message = req.query.message || req.body.message || 'Hello World!';
  res.status(200).send(message);
};

이 예시에는 Cloud Functions에서 코드를 호출하고 승인하는 데 필요한 사용자 인증 정보로 구성된 Google Cloud Functions 확장 프로그램이 포함되어 있습니다.

위의 함수 코드는 Cloud Functions에 단순히 helloWorld로 저장됩니다. 다음 Extension콜아웃 정책 구성 코드에서는 함수가 배포된 Cloud Functions 환경의 세부사항과 일치하는 리전 및 프로젝트 ID 값과 함께 이 이름을 사용합니다.

<Action>invoke</Action>
<Input><![CDATA[
  {
    "region" : "us-central1",
    "projectId" : "my-project",
    "functionName" : "hello-world",
    "method" : "POST",
    "payload" : { "message" : "Hello yourself!" }
  }
]]></Input>
<Output parsed="false">function.response</Output>

다음 AssignMessage 정책은 디버깅 목적으로 응답 값을 캡처합니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-Function-Response">
    <DisplayName>Get Function Response</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{function.response}</Payload>
    </Set>
</AssignMessage>

위 요청에 대한 응답은 다음과 같습니다.

Hello yourself!

parsed의 기본값은 true입니다. 이 예시에서는 정책의 <Output> 태그에서 parsed="false"를 설정하여 정책이 JSON 응답을 파싱하지 못하게 합니다. Cloud Functions 확장 프로그램을 사용할 때는 대부분 parsed="false"를 설정합니다. 자세한 내용은 <Output> 요소를 참고하세요.

Cloud 함수에서 JSON 응답을 반환하고 parsed="true"를 설정하면 확장 프로그램의 응답은 객체 참조가 됩니다. 참조에서 응답을 추출하려면 {objectName}.{jsonKey} 문법을 사용합니다. 예를 들면 다음과 같습니다.

function.response.message

작업

invoke

Cloud 함수를 호출합니다.

현재 이 확장 프로그램은 HTTP 트리거 함수 호출을 지원합니다.

문법

<Action>invoke</Action>
<Input><![CDATA[
  {
    "region" : "deployment-region",
    "projectId" : "project-id",
    "functionName" : "function-name",
    "method" : "http-method",
    "payload" : { json-payload }
  }
]]></Input>
<Output>function.response</Output>

<Action>invoke</Action>
<Input><![CDATA[
  {
    "region" : "us-central1",
    "projectId" : "my-project",
    "functionName" : "hello-world",
    "method" : "POST",
    "payload" : { "message" : "Hello yourself!" }
  }
]]></Input>
<Output>function.response</Output>

요청 매개변수

매개변수 설명 유형 기본 계정 필수
region 함수가 배포된 Google Cloud 리전입니다. 문자열. 없음 예.
projectId GCP 프로젝트 ID입니다. 문자열. 없음 예.
functionName 호출할 HTTP 함수의 이름입니다. 함수를 만들 때 사용한 이름입니다 (함수 코드의 이름일 필요는 없음). 문자열. 없음 예.
method 함수를 호출할 때 사용할 HTTP 메서드입니다. 문자열. GET 번호
payload 함수 호출과 함께 전송할 페이로드입니다. JSON을 사용합니다. 없음 번호

응답

지정된 함수의 응답 값입니다(있는 경우).

응답 속성

없음

구성 참조

API 프록시에서 사용할 이 확장 프로그램을 구성하고 배포할 때 다음을 사용하세요. Apigee 콘솔을 사용하여 확장 프로그램을 구성하는 단계는 확장 프로그램 추가 및 구성을 참조하세요.

일반적인 확장 속성

모든 확장 프로그램에는 다음과 같은 속성이 있습니다.

속성 설명 기본 필수
name 확장 프로그램의 구성에 지정할 이름입니다. 없음 지원됨
packageName Apigee Edge에서 제공하는 확장 프로그램 패키지 이름입니다. 없음 지원됨
version 확장 프로그램을 구성하는 확장 프로그램 패키지의 버전 번호입니다. 없음 지원됨
configuration 추가하는 확장 프로그램 관련 구성 값입니다. 이 확장 프로그램 속성의 속성을 참조하세요. 없음 지원됨

이 확장 프로그램 패키지의 속성

이 확장 프로그램에 해당하는 다음 구성 속성의 값을 지정합니다.

속성 설명 기본 계정 필수
사용자 인증 정보 Apigee Edge 콘솔에서 입력하면 서비스 계정 키 파일의 콘텐츠가 됩니다. 관리 API를 통해 전송되는 경우 서비스 계정 키 파일에서 생성된 base64로 인코딩된 값입니다. 없음 예.