Google Cloud Functions Uzantısı

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

Sürüm 2.0.0

Google Cloud projeniz aracılığıyla dağıtılan Cloud Functions'ı çağırabilirsiniz.

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

Ön koşullar

Bu içerikte, bu uzantıyı yapılandırma ve kullanmayla ilgili referanslar sağlanmaktadır. ExtensionCallout politikasını kullanarak uzantıyı bir API proxy'sinden 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 deploy.

  3. İşlev için istediğiniz erişim düzeyi için IAM üzerinden kullanıcı erişimi verin. Örneğin, işleve erişimi 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ı ekleyip yapılandırırken elde edilen 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 ve 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'de işlevlerin nasıl çağrılacağı gösterilmektedir.

Node.js işlevini çağırma

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

Aşağıdaki Node.js JavaScript'i, bir GCP hesabı için Cloud Functions'a dağıtılır. İstek bir mesaj özelliği içeriyorsa kod bunu döndürür. Aksi takdirde yanıt olarak "Merhaba Dünya!" 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'da kimlik doğrulama yapmak ve kod çağırma yetkisini almak 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ın yanı sıra işlevin dağıtıldığı Cloud Functions ortamının ayrıntılarıyla eşleşen bölge ve proje kimliği değerlerini 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 istek için yanıt şu şekilde olur:

Hello yourself!

parsed için varsayılan değer true'dur. Bu örnekte, politikanın <Output> etiketinde parsed="false" ayarlanır. Bu, politikanın JSON yanıtını ayrıştırmasını engeller. Cloud Functions uzantısını kullanırken çoğu durumda parsed="false" değerini ayarlarsınız. Daha fazla bilgi için <Output> öğesine bakın.

Cloud işlevi bir JSON yanıtı döndürüyorsa ve parsed="true" değerini ayarlarsanız uzantıdan gelen yanıt bir nesne referansı olur. Referanstaki yanıtı ayıklamak için şu söz dizimini kullanın: {objectName}.{jsonKey}. Örneğin:

function.response.message

İşlemler

çağırmak

Bir 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 ad olmayabilir). Dize. Yok. Evet.
method İşlevi çağırı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ılmak üzere yapılandırırken ve dağıtırken aşağıdakileri kullanın. Apigee konsolunu kullanarak bir uzantıyı yapılandırma adımları için Uzantı ekleme ve yapılandırma başlıklı makaleyi inceleyin.

Ortak 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ı paketine ait özellikler

Bu uzantıya özgü aşağıdaki yapılandırma özellikleri için değerler belirtin.

Mülk Açıklama Varsayılan Zorunlu
giriş bilgileri Apigee Edge konsoluna girildiğinde, 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.