Google Cloud Functions Uzantısı

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

Sürüm 1.0.5

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

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

Ön koşullar

Bu içerik, bu uzantıyı yapılandırmak ve kullanmak için referans sağlar. ExtensionExtension politikasını kullanarak bir API proxy'sinden uzantıyı kullanmadan önce:

  1. Cloud Functions API'yi etkinleştirin.

  2. Google Cloud projeniz için Cloud Functions'ta 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ırlandırabilirsiniz.

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

  5. Uzantıyı yapılandırma referansını kullanarak 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şlev oluşturup dağıtabilir ve ardından bu işlevleri başka bir koddan çağırabilirsiniz. Cloud Functions'a giriş için hızlı başlangıç kılavuzlarından birini deneyin.

Sana Özel

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

Node.js işlevini çağırın

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

Aşağıdaki Node.js JavaScript, bir GCP hesabı için Cloud Functions'ta dağıtılmıştı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 almaktadır.

Önceki işlev kodu, Cloud Functions'ta yalnızca helloWorld olarak kaydedilir. Aşağıdaki ExtensionCall politika yapılandırma kodunda, bu adın yanı sıra işlevin dağıtıldığı Cloud Functions ortamının özellikleriyle eşleşen bölge ve proje kimliği değerleri 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 talebe verilen yanıt aşağıdaki gibi olur:

Hello yourself!

Varsayılan parsed değeri true değeridir. Bu örnek, politikanın <Output> etiketinde parsed="false" politikasını ayarlar. 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 <Exit> öğesi konusuna bakın.

Cloud Functions işlevi bir JSON yanıtı döndürürse ve parsed="true" öğesini ayarlarsanı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

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 Gerekli
region İşlevin dağıtıldığı Google Cloud bölgesi. Dize. Yok. Evet.
projectId 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şlev kodundan alınmış bir ad olması gerekmez). Dize. Yok. Evet.
method İşlev çağrılırken kullanılacak HTTP yöntemi. Dize. GET Hayır
payload İşlev çağrısıyla gönderilecek yük. JSON biçiminde olmalıdır. Yok. Hayır

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ırken ve 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 bölümüne 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 özgü aşağıdaki yapılandırma özellikleri için değerler belirtin.

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