Google Cloud Functions Uzantısı

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Sürüm 2.0.2

Google Cloud projeniz üzerinden dağıtılan Cloud Functions işlevlerini çağırın.

Bu uzantı şu anda HTTP tetikleyici işlevlerinin çağrılmasını desteklemektedir.

Ön koşullar

Bu içerik, uzantının yapılandırılması ve kullanılmasıyla ilgili referans bilgiler sağlar. ExtensionCallout politikası kullanılarak bir API proxy'sinden uzantıyı kullanmadan önce şunları yapmanız gerekir:

  1. Cloud Functions API'yi etkinleştirin.

  2. Google Cloud projeniz için Cloud Functions'da işlevleri tanımlayın ve dağıtın.

  3. İşlev için istediğiniz erişim düzeyinde IAM üzerinden kullanıcı erişimi verin. Örneğin, işlevin erişimini yalnızca uzantıyı yapılandırmak için kullandığınız hizmet hesabıyla sınırlayabilirsiniz.

  4. Hizmet hesabı için anahtar oluşturmak üzere GCP Console'u kullanın.

  5. Yapılandırma referansını kullanarak uzantıyı eklerken ve yapılandırırken sonuçtaki anahtar JSON dosyasının içeriğini kullanın.

Cloud Functions hakkında

Google Cloud Functions ile Google Cloud'da işlevler oluşturup dağıtabilir, ardından bu işlevleri diğer kodlardan çağırabilirsiniz. Cloud Functions'a giriş yapmak için hızlı başlangıç kılavuzlarından birini deneyin.

Örnekler

Aşağıdaki örnekte, ExtensionCallout politikası kullanılarak Cloud Functions'daki işlevlerin nasıl çağrılacağı gösterilmektedir.

Node.js işlevini çağırma

Aşağıdaki örnekte, Google Cloud Functions uzantısını çağıran bir ExtensionCallout politikası yer almaktadır. Uzantı, Cloud Functions API'yi etkinleştirdiğinizde dahil edilen varsayılan "hello world" işlevini çağırır.

Aşağıdaki Node.js JavaScript, bir GCP hesabı için Cloud Functions'ta dağıtılır. İstek bir mesaj özelliği içeriyorsa kod bunu döndürür. Aksi takdirde, yanıt olarak "Hello World!" değerini döndürür.

/**
 * 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);
};

Bu örnekte, Cloud Functions'ta kimlik doğrulaması yapmak ve kod çağırmak için gereken kimlik bilgileriyle yapılandırılmış bir Google Cloud Functions uzantısı yer alır.

Yukarıdaki işlev kodu, Cloud Functions'a yalnızca helloWorld olarak kaydedilir. Aşağıdaki ExtensionCallout politika yapılandırma kodu, bu adı, işlevin dağıtıldığı Cloud Functions ortamının özellikleriyle eşleşen bölge ve proje kimliği değerleriyle birlikte kullanır.

<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>

Aşağıdaki AssignMessage politikası, hata ayıklama amacıyla yanıt değerini yakalar.

<?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>

Yukarıdaki isteğe verilen yanıt şu şekilde olur:

Hello yourself!

parsed öğesinin varsayılan değeri true'dır. Bu örnek, politikadaki <Output> etiketinde parsed="false" değerini ayarlıyor. Bu da politikanın JSON yanıtını ayrıştırmasını engelliyor. Cloud Functions uzantısını kullanırken çoğu durumda parsed="false" değerini ayarlarsınız. Daha fazla bilgi için <Output> öğesi bölümüne bakın.

Cloud Function bir JSON yanıtı döndürürse ve parsed="true" ayarını yaparsanız uzantıdan gelen yanıt bir nesne referansı olur. Yanıtı referanstan çıkarmak için şu söz dizimini kullanın: {objectName}.{jsonKey}. Örneğin:

function.response.message

İşlemler

çağırmak

Cloud Functions işlevini çağırır.

Bu uzantı şu anda HTTP tetikleyici işlevlerinin çağrılmasını desteklemektedir.

Söz dizimi

<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>

Örnek

<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>

İstek parametreleri

Parametre Açıklama Tür Varsayılan Zorunlu
bölge İşlevin dağıtıldığı Google Cloud bölgesi. Dize. Yok. Evet.
proje kimliği GCP proje kimliği. Dize. Yok. Evet.
functionName Çağrılacak HTTP işlevinin adı. Bu, işlevi oluştururken kullandığınız addır (işlevin kodundaki bir ad olması gerekmez). Dize. Yok. Evet.
method İşlev çağrılırken kullanılacak HTTP yöntemi. Dize. GET Sıra
yük İşlev çağrısıyla gönderilecek yük. JSON. Yok. Sıra

Yanıt

Belirtilen işlevin yanıt değeri (varsa).

Yanıt özellikleri

Yok.

Yapılandırma Referansı

Bu uzantıyı API proxy'lerinde kullanılacak şekilde yapılandırıp dağıtırken aşağıdakileri kullanın. Apigee konsolunu kullanarak uzantı yapılandırma adımları için Uzantı ekleme ve yapılandırma başlıklı makaleyi inceleyin.

Sık kullanılan uzantı özellikleri

Aşağıdaki özellikler her uzantı için mevcuttur.

Mülk Açıklama Varsayılan Zorunlu
name Uzantının bu yapılandırmasını verdiğiniz ad. Yok Evet
packageName Apigee Edge'in sağladığı uzantı paketinin adı. Yok Evet
version Uzantıyı yapılandırdığınız uzantı paketinin sürüm numarası. Yok Evet
configuration Eklediğiniz uzantıya özgü yapılandırma değeri. Bu uzantı paketinin özellikleri başlıklı makaleyi inceleyin Yok Evet

Bu uzantı paketinin özellikleri

Bu uzantıya özel aşağıdaki yapılandırma özelliklerinin değerlerini belirtin.

Mülk Açıklama Varsayılan Zorunlu
giriş bilgileri Apigee Edge konsoluna girildiğinde bu, hizmet hesabı anahtar dosyanızın içeriğidir. Yönetim API'si üzerinden gönderildiğinde, hizmet hesabı anahtar dosyasından oluşturulan base64 kodlu bir değerdir. Yok. Evet.