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