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:
Cloud Functions API'yi etkinleştirin.
Google Cloud projeniz için Cloud Functions'da işlevleri tanımlayın ve dağıtın.
İş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.
Hizmet hesabı için anahtar oluşturmak üzere GCP Console'u kullanın.
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. |