Google Cloud Functions Uzantısı

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Sürüm 1.3.1

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

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

Ön koşullar

Bu içerik, bu uzantının yapılandırılması ve kullanılması için referans sağlamaktadır. ExtensionCall politikası ile 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'ta işlevleri tanımlayın ve dağıtın.

  3. İşlevde almak 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ırlandırabilirsiniz.

  4. GCP Console'u kullanarak hizmet hesabı için bir anahtar oluşturun.

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

Cloud Functions hakkında

Google Cloud Functions sayesinde, Google Cloud'da işlev oluşturup dağıtabilir ve ardından bu işlevleri başka bir koddan çağırabilirsiniz. Cloud Functions'a giriş yapmak için hızlı başlangıç kılavuzlarından birini deneyin.

Örnekler

Aşağıdaki örnekte, ExtensionDescription politikası kullanılarak Cloud Functions'da 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 ExtensionReference politikası açıklanmaktadır. Uzantı, varsayılan "hello world" değerini çağırır. işlevi dahil edilir.

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

/**
 * 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, kimlik doğrulaması yapmak ve Cloud Functions'da kod çağırma yetkisi almak için gereken kimlik bilgileriyle yapılandırılmış bir Google Cloud Functions uzantısı bulunmaktadır.

Önceki işlev kodu, Cloud Functions'a basit bir şekilde helloWorld olarak kaydedilir. Aşağıdaki ExtensionDescription politikası yapılandırma kodunda 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ılı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 aşağıdaki gibi olacaktır:

Hello yourself!

Varsayılan parsed değeri true. Bu örnekte, politikanın <Output> etiketinde parsed="false", Bu, politikanın JSON yanıtını ayrıştırmasını engeller. Çoğu durumda, Cloud Functions uzantısını kullanırken parsed="false" ayarını yaparsınız. Bkz. <Çıkış> öğesini kullanın.

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

function.response.message

İşlemler

çağırmak

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

Şu anda bu uzantı 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 kodundan alınmış 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 birlikte gönderilecek yük. JSON biçiminde olmalıdır. Yok. Sıra

Yanıt

Varsa belirtilen işlevin yanıt değeri.

Yanıt özellikleri

Yok.

Yapılandırma Referansı

Bu uzantıyı API proxy'lerinde kullanmak üzere 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'ya bakın.

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.

Özellik Açıklama Varsayılan Zorunlu
giriş bilgileri Apigee Edge konsoluna girildiğinde hizmet hesabı anahtar dosyanızın içeriği bu şekildedir. Management API aracılığıyla gönderildiğinde, hizmet hesabı anahtar dosyasından oluşturulan base64 kodlu bir değerdir. Yok. Evet.