ExtensionDescription politikası

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 olarak true değerine ayarlıdır.

  • Private Cloud müşterisi iseniz Apigee Edge'i Kuruluş özelliklerini güncelleme API'si features.allowExtensionsInPostClientFlow işaretini true 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>

&lt;ConnectorCallout&gt; ö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ı. name özelliğinin değeri Harf, sayı, boşluk, kısa çizgi, alt çizgi ve nokta içermelidir. Bu değer, 255 karakteri aşmalıdır.

İsteğe bağlı olarak, politikayı<DisplayName> yönetim arayüzü proxy düzenleyicisinde farklı bir doğal dil adı kullanabilir.

Yok Zorunlu
continueOnError

Bir politika başarısız olduğunda hata döndürmesi için false olarak ayarlayın. Bu beklenen bir durumdur çoğu politika için geçerli olur.

Akış yürütmenin bir politikadan sonra bile devam etmesi için true olarak ayarlayın başarısız olur.

false İsteğe bağlı
enabled

Politikayı uygulamak için true olarak ayarlayın.

Politikayı devre dışı bırakmak için false değerine ayarlayın. Bu politika, bir akışa bağlı kalsa bile uygulanır.

true İsteğe bağlı
async

Bu özelliğin desteği sonlandırıldı.

false Kullanımdan kaldırıldı

&lt;DisplayName&gt; öğ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 name özelliğinin değeri: kullanılır.

Varlık İsteğe bağlı
Tür Dize

&lt;Action&gt; öğ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.

&lt;Input&gt; öğ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 olmadan my.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çindeki client.ip akış değişkeninin değeri.

&lt;Output&gt; öğ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şkeninizi extensionOutput 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.)

&lt;Output&gt; Ö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ş.
ConnectorInstanceDoesNotExists <Connector> öğesinde belirtilen Uzantı ortamda mevcut değil.
InvalidAction ExtensionCallout politikasındaki <Action> öğesi eksik veya boş bir değere ayarlanmış.
AllowExtensionsInPostClientFlow PostClient Stream'de ExtensionCallout politikası bulunması yasaktır.