Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi
Bir uzantıyı API proxy'sine eklemek için ExtensionDescription politikasını kullanın.
Uzantı, Apigee Edge'in dışındaki belirli bir kaynağa erişim sağlar. Kaynak, Cloud Storage veya Cloud Speech-to-Text gibi Google Cloud Platform hizmetleri olabilir. Ancak kaynak, HTTP veya HTTPS üzerinden erişilebilen herhangi bir harici kaynak olabilir.
Uzantılara genel bir bakış için Uzantılar nedir? bölümünü inceleyin. Giriş eğitimi için Eğitim: Uzantı ekleme ve kullanma bölümüne bakın.
Extensioncall politikasından bir uzantıya erişmeden önce Apigee Edge kuruluşunuzda yüklü olan bir uzantı paketinden uzantıyı eklemeniz, yapılandırmanız ve dağıtmanız gerekir.
Örnekler
Aşağıda, Cloud Logging uzantısıyla kullanılacak örnek bir politika gösterilmiştir:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="false" enabled="true" name="Logging-Extension">
<DisplayName>Logging Extension</DisplayName>
<Connector>cloud-extension-sample</Connector>
<Action>log</Action>
<Input>{
"logName" : "example-log",
"metadata" : "test-metadata",
"message" : "This is a test"
}</Input>
<Output>cloud-extension-example-log</Output>
</ConnectorCallout>
Ayrıntılı bilgi için Eğitim: Uzantıları kullanma Cloud Logging uzantısını kullanan eksiksiz bir eğitim videosuna göz atın.
Kullanılabilir tüm uzantıların örnekleri için Uzantılar referansına genel bakış başlıklı makaleyi inceleyin.
ExtensionDescription politikası hakkında
API proxy'sinden harici bir kaynağa erişmek için yapılandırılmış bir uzantı kullanmak istediğinizde ExtensionDescription politikasını kullanın.
Bu politikayı kullanmadan önce şunlara ihtiyacınız vardır:
- Bu politikadan erişmek istediğiniz harici kaynakla ilgili birkaç ayrıntı. Bu ayrıntılar kaynağa özgü olacaktır. Örneğin, politika Cloud Firestore veritabanınıza erişecekse oluşturmak veya erişmek istediğiniz koleksiyon ve belge adını bilmeniz gerekir. Bu politikanın istek ve yanıt işlemesini yapılandırırken genellikle kaynağa özgü bilgileri kullanırsınız.
- Bir uzantı eklendi, yapılandırıldı ve dağıtıldı dağıtılacağı anlamına gelir. Başka bir deyişle, Bu politikayı belirli bir Google Cloud hizmetine erişmek için kullanacaksanız ortamınızda bu hizmetin dağıtılmış bir uzantısı olması gerekir. Yapılandırma ayrıntıları genellikle kaynak erişimi (ör. proje kimliği veya hesap adı)
PostClientFlow'da ExtensionReference politikasını kullanma
ExtensionDraft politikasını bir API proxy'sinin PostClientFlow bölümünden çağırabilirsiniz. PostClientFlow, yanıt istekte bulunan istemciye gönderildikten sonra yürütülür, Böylece tüm metriklerin günlüğe kaydedilmesi sağlanır. PostClientFlow'un kullanımıyla ilgili ayrıntılar için API proxy'si yapılandırma referansı başlıklı makaleye bakın.
Google Cloud Logging uzantısını çağırmak için ExtensionReference politikasını kullanmak istiyorsanız
PostClientFlow'daki features.allowExtensionsInPostClientFlow
işaretinin
kuruluşunuzda true
olarak ayarlanmış.
Genel Bulut için Apigee Edge müşterisiyseniz
features.allowExtensionsInPostClientFlow
işareti varsayılan olaraktrue
değerine ayarlıdır.Private Cloud müşterisi iseniz Apigee Edge'i Kuruluş özelliklerini güncelleme API'si
features.allowExtensionsInPostClientFlow
işaretinitrue
olarak ayarlayın.
PostClientFlow'dan MessageLogging politikasının çağrılmasıyla ilgili tüm kısıtlamalar ExtensionFeature politikası için de geçerlidir. Daha fazla bilgi için Kullanım notlarına bakın.
Öğe referansı
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="false" enabled="true" name="Extension-Callout-1">
<DisplayName/>
<Connector/>
<Action/>
<Input/>
<Output/>
</ConnectorCallout>
<ConnectorCallout> özellikler
<ConnectorCallout name="Extension-Callout-1" continueOnError="false" enabled="true" async="false">
Aşağıdaki tabloda tüm politika üst öğelerinde ortak olan özellikler açıklanmaktadır:
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
name |
Politikanın dahili adı. İsteğe bağlı olarak, politikayı |
Yok | Zorunlu |
continueOnError |
Bir politika başarısız olduğunda hata döndürmesi için Akış yürütmenin bir politikadan sonra bile devam etmesi için |
false | İsteğe bağlı |
enabled |
Politikayı uygulamak için Politikayı devre dışı bırakmak için |
true | İsteğe bağlı |
async |
Bu özelliğin desteği sonlandırıldı. |
false | Kullanımdan kaldırıldı |
<DisplayName> öğe
Politikayı name
özelliğine ek olarak
farklı bir doğal dil adına sahip yönetim arayüzü proxy düzenleyicisi.
<DisplayName>Policy Display Name</DisplayName>
Varsayılan |
Yok Bu öğeyi çıkarırsanız politikanın |
---|---|
Varlık | İsteğe bağlı |
Tür | Dize |
<Action> öğe
Politikanın çağırması gereken, uzantı gösterilen işlem.
<Action>action-exposed-by-extension</Action>
Varsayılan | Yok |
---|---|
Varlık | Zorunlu |
Tür | Dize |
Her uzantı, temsil ettiği kaynağın işlevlerine erişim sağlayan kendi işlem gruplarını sunar. Bir işlemi, bu politikayla birlikte çağırdığınız ve işlevin bağımsız değişkenlerini belirtmek için <Input>
öğesinin içeriğini kullanan bir işlev olarak düşünebilirsiniz. İşlemin yanıtı, <Output>
öğesiyle belirttiğiniz değişkende depolanır.
Uzantının işlevlerinin listesi için bu politikada çağırdığınız uzantının referansına bakın.
<Bağlayıcı> öğe
Kullanılacak yapılandırılmış uzantının adı. Bu, bir ortama dağıtım için yapılandırıldığında uzantıya verilen ortam kapsamlı addır.
<Connector>name-of-configured-extension</Connector>
Varsayılan | Yok |
---|---|
Varlık | Zorunlu |
Tür | Dize |
Bir uzantı, aynı uzantı paketine göre dağıtılan başka bir uzantıdan farklı olabilecek yapılandırma değerleri içeriyor. Bu yapılandırma değerleri, aynı paketten yapılandırılan uzantılar arasındaki çalışma zamanı işlevselliğindeki önemli farkları temsil edebilir. Bu nedenle, çağrılacak doğru uzantıyı belirttiğinizden emin olun.
<Input> öğe
Uzantıya gönderilecek istek gövdesini içeren JSON.
<Input><![CDATA[ JSON-containing-input-values ]]></Input>
Varsayılan | Yok |
---|---|
Varlık | Uzantıya bağlı olarak isteğe bağlıdır veya zorunludur. |
Tür | Dize |
Bu temelde <Action>
öğesiyle belirttiğiniz işlemin bir bağımsız değişkenidir. <Input>
öğesinin değeri, çağırdığınız uzantıya ve işleme bağlı olarak değişir. Her bir işlemin özellikleriyle ilgili ayrıntılar için uzantı paketi dokümanlarına bakın.
Birçok <Input>
öğe değeri, <![CDATA[]]>
bölümü olarak eklenmeden düzgün bir şekilde çalışsa da JSON kurallarının, XML olarak ayrıştırılmayacak değerlere izin verdiğini unutmayın. En iyi uygulama olarak, çalışma zamanı ayrıştırma hatalarını önlemek için JSON'u bir CDATA
bölümü olarak ekleyin.
<Input>
öğesinin değeri, özellikleri değerleri belirten iyi biçimlendirilmiş JSON
çağrılır. Örneğin,
Google Cloud Logging Uzantısı
Uzantının log
işlemi, (logName
) adresine yazılacak günlüğü belirten değerler alır.
girişe (metadata
) ve günlük iletisine (data
) dahil edilecek meta verileri içerir.
Bir örnek verelim:
<Input><![CDATA[{
"logName" : "example-log",
"metadata" : {
"resource": {
"type": "global",
"labels": {
"project_id": "my-test"
}
}
},
"message" : "This is a test"
}]]></Input>
<Input>
JSON dosyasında akış değişkenlerini kullanma
<Input>
içeriği
mesaj şablonuna bakın. Bu, küme ayraçları içine alınmış değişken adının çalışma zamanında başvuruda bulunulan değişkenin değeriyle değiştirileceği anlamına gelir.
Örneğin, API proxy'sini çağıran istemcinin IP adresini almak için client.ip
akış değişkenini kullanmak üzere önceki <Input>
blokunu yeniden yazabilirsiniz:
<Input><![CDATA[{
"logName" : "example-log",
"metadata" : {
"resource": {
"type": "global",
"labels": {
"project_id": "my-test"
}
}
},
"message" : "{client.ip}"
}]]></Input>
JSON dosyasındaki bir özellik değerinin, çalışma zamanında tırnak işaretleri içine alınmasını istiyorsanız JSON kodunuzda tırnak işaretleri kullandığınızdan emin olun. Bu durum, bir akış değişkenini çalışma zamanında çözümlenecek JSON özellik değeri olarak belirttiğinizde bile geçerlidir.
Aşağıdaki <Input>
örneği iki akış değişkeni referansı içerir:
<Input><![CDATA[{
"logName" : "example-log",
"metadata" : {my.log.entry.metadata},
"message" : "{client.ip}"
}]]></Input>
Çalışma zamanında, JSON özellik değerleri şu şekilde çözümlenir:
logName
özellik değeri -- değişmez dize değeri:example-log
.metadata
özellik değeri: Tırnak işaretleri olmadanmy.log.entry.metadata
akış değişkeninin değeri. Değişkenin değeri bir nesneyi temsil eden JSON ise bu yararlı olabilir.message
özelliği değeri: Tırnak işaretleri içindekiclient.ip
akış değişkeninin değeri.
<Output> öğe
Uzantı işleminin yanıtını depolayan değişkenin adı.
<Output>variable-name</Output> <!-- The JSON object inside the variable is parsed -->
veya
<Output parsed="false">variable-name</Output> <!-- The JSON object inside the variable is raw, unparsed -->
Varsayılan | Yok |
---|---|
Varlık | Uzantıya bağlı olarak isteğe bağlıdır veya zorunludur. |
Tür | parsed özellik ayarına bağlı olarak ayrıştırılmış nesne veya Dize. |
Yanıt alındığında, yanıt değeri burada belirttiğiniz değişkene yerleştirilir. Burada, yanıta başka API proxy kodundan erişebilirsiniz.
Uzantı yanıtı nesneleri JSON biçimindedir. Politikanın JSON'ı işlemesiyle ilgili iki seçenek vardır:
- Ayrıştırılmış (varsayılan): Politika, JSON nesnesini ayrıştırır ve JSON verileriyle otomatik olarak değişkenler oluşturur. Örneğin, JSON dosyası
"messageId" : 12345;
içeriyorsa ve çıkış değişkeniniziextensionOutput
olarak adlandırırsanız bu ileti kimliğine diğer politikalardan ve{extensionOutput.messageId}
değişkenini kullanarak erişebilirsiniz. - Ayrıştırılmamış: Çıkış değişkeni, uzantıdan gelen ham, ayrıştırılmamış JSON yanıtını içerir. (İsterseniz JavaScript politikasını kullanarak yanıt değerini ayrı bir adımda ayrıştırabilirsiniz.)
<Output> Öznitelikler
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
ayrıştırıldı | Uzantıdan döndürülen JSON nesnesini ayrıştırarak JSON nesnesindeki verilere diğer politikalar tarafından değişken olarak erişilmesine olanak tanır. | true | İsteğe bağlı |
Akış değişkenleri
Yok.
Hata kodları
Apigee Edge politikalarından döndürülen hatalar, Politika hatası referansında açıklandığı gibi tutarlı bir biçime sahiptir.
Bu bölümde, bu politika bir hata tetiklediğinde ayarlanan hata mesajları ve akış değişkenleri açıklanmaktadır. Bu bilgiler, bir proxy için hata kuralları geliştirip geliştirmediğinizi bilmeniz önemlidir. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler ve Hataları işleme konularına göz atın.
Çalışma zamanı hataları
Bu hatalar, politika yürütüldüğünde ortaya çıkabilir.
Hata adı | HTTP durumu | Neden |
---|---|---|
Yürütme Başarısız | 500 |
Uzantı bir hata mesajıyla yanıt verir. |
Dağıtım hataları
Bu hatalar, bu politikayı içeren bir proxy dağıttığınızda oluşabilir.
Hata adı | Şu durumda gerçekleşir: | Düzelt |
---|---|---|
InvalidConnectorInstance |
<Connector> öğesi boş. |
build |
ConnectorInstanceDoesNotExists |
<Connector> öğesinde belirtilen Uzantı ortamda mevcut değil. |
build |
InvalidAction |
ExtensionCallout politikasındaki <Action> öğesi eksik veya boş bir değere ayarlanmış. |
build |
AllowExtensionsInPostClientFlow |
PostClient Stream'de ExtensionCallout politikası bulunması yasaktır. | build |