API'yi kullanarak API proxy'leri dağıtma

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Her kuruluşun benzersiz bir yazılım geliştirme yaşam döngüsü (SDLC) vardır. Çoğunlukla API proxy dağıtımını arka uç hizmetleri için kullanılan işlemlerle senkronize etmek ve uyumlu hale getirmek için kullanılır.

Bu konuda gösterilen Edge API yöntemleri, API proxy'sini entegre etmek için kullanılabilir yönetimi kuruluşunuzun SDLC'sine ekleyin. Bu API, yaygın bir şekilde komut dosyası veya kod yazmak için kullanılır. çalışmalarının parçası olarak API proxy'lerini bir ortamdan diğerine taşıyan başka uygulamaları da dağıtan veya taşıyan daha büyük ve otomatik bir süreçtir.

Edge API, SDLC'niz (veya bununla ilgili bir başkasınınkiler) hakkında herhangi bir varsayımda bulunmaz. Daha ziyade, otomasyon sağlamak için geliştirme ekibiniz tarafından koordine edilebilecek atomik fonksiyonları ortaya çıkarır. ve API geliştirme yaşam döngünüzü optimize edin.

Ayrıntılı bilgi için Edge API'leri bölümünü inceleyin.

Edge API'yi kullanmak için çağrılarınızda kimliğinizi doğrulamanız gerekir. Bu işlemi şununla yapabilirsiniz: aşağıdaki yöntemlerden birini kullanabilirsiniz:

Bu konu, API proxy'lerini yönetmek için kullanılan API grubuna odaklanmaktadır.

Video: API'lerin nasıl dağıtılacağını öğrenmek için bu kısa videoya göz atın.

API ile etkileşimde bulunma

Aşağıdaki adımlar, API'lerle olan basit etkileşimlerde size yol gösterir.

Kuruluşunuzdaki API'leri listeleme

Kuruluşunuzdaki tüm API proxy'lerini listeleyerek başlayabilirsiniz. ( EMAIL:PASSWORD ve ORG_NAME için girişler. Talimatlar için bkz. Edge API'yi kullanın.

curl -u EMAIL:PASSWORD \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis

Örnek Yanıt:

[ "weatherapi" ]

API alın

Kuruluşunuzdaki herhangi bir API proxy'sinde GET yöntemini çağırabilirsiniz. Bu çağrı, API proxy'sinin mevcut tüm düzeltmeleri.

curl -u EMAIL:PASSWORD -H "Accept: application/json" \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis/weatherapi

Örnek Yanıt:

{
  "name" : "weatherapi",
  "revision" : [ "1" ]
}

Bu yöntem tarafından döndürülen tek ayrıntı, ilişkili düzeltme değeri kullanılır. API proxy'leri bir yapılandırma paketinden oluşur. dosyası olarak da kaydedebilir. Düzeltmeler, yapılandırma güncellemelerinizi yönetmek için basit bir mekanizma sağlar fark edeceksiniz. Düzeltmeler sıralı olarak numaralandırılır. Böylece, değişiklikleri dağıtarak API proxy'nizin önceki bir revizyonudur. Ayrıca, API proxy'sinin revizyonunu test aşamasında söz konusu API proxy'sinin yeni revizyonlarını oluşturmaya devam ederken bahsedeceğim. Hazır olduğunuzda API proxy'nizin daha yüksek revizyonunu tanıtabilirsiniz. Üretim ortamında API proxy'sinin önceki revizyonuna kıyasla test ortamı.

Bu örnekte, API proxy'si yeni oluşturulduğu için yalnızca bir düzeltme bulunmaktadır. API olarak proxy, yinelemeli yapılandırma ve dağıtımın yaşam döngüsünde, yani revizyon numarası tamsayılara göre artar. Dağıtım için doğrudan API çağrılarını kullanarak, isteğe bağlı olarak API proxy'sinin revizyon numarası. Bazen küçük değişiklikler yaptığınızda, bu ve düzeltmeyi artırır.

API Düzeltmesi Alma

API sürümü (örneğin, api.company.com/v1) nadiren. API sürümünü artırdığınızda, bu, geliştiricilere bu sürümün .

API proxy'si düzeltmesi, API proxy'si ile ilişkili artan bir sayıdır yapılandırma. API Hizmetleri, yapılandırmalarınızın düzeltmelerini korur. Böylece, nasıl yapılandıracağınızı belirleyin. API proxy'sinin düzeltmesi varsayılan olarak API proxy'si içe aktarma API'sini kullanarak API proxy'sini her içe aktardığınızda artar. Şu durumda: bir API proxy'sinin düzeltmesini artırmak istemiyorsanız Güncelle API proxy düzeltmesi API'si. Dağıtım için Maven kullanıyorsanız clean veya Maven eklentisinde açıklandığı gibi update seçenekleri) benioku.

Örneğin, ayrıntılı bir görünüm elde etmek için API proxy'si revizyon 1'de GET yöntemini çağırabilirsiniz.

curl -u EMAIL:PASSWORD -H "Accept:application/json" \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis/weatherapi/revisions/1

Örnek Yanıt

{
  "configurationVersion" : {
    "majorVersion" : 4,
    "minorVersion" : 0
  },
  "contextInfo" : "Revision 1 of application weatherapi, in organization {org_name}",
  "createdAt" : 1343178905169,
  "createdBy" : "andrew@apigee.com",
  "lastModifiedAt" : 1343178905169,
  "lastModifiedBy" : "andrew@apigee.com",
  "name" : "weatherapi",
  "policies" : [ ],
  "proxyEndpoints" : [ ],
  "resources" : [ ],
  "revision" : "1",
  "targetEndpoints" : [ ],
  "targetServers" : [ ],
  "type" : "Application"
}

Bu API proxy'si yapılandırma öğeleri, API proxy'si yapılandırma referansında ayrıntılı olarak açıklanmıştır.

Bir ortam

API proxy'niz istekleri doğru şekilde alıp yönlendirecek şekilde yapılandırıldıktan sonra proxy'nizi dağıtabilirsiniz bir veya daha fazla ortama aktarabilirsiniz. Genellikle test içerisinde API proxy'lerini tekrarlarsınız ve daha sonra hazır olduğunda API proxy düzeltmesini prod sürümüne tanıtmanız gerekir. Çoğu zaman daha pek çok çok daha azını yapacağınız için öncelikle test ortamında bir API proxy'sinin revizyonlarını iterasyona sahip olması gerekir.

Bir API proxy'si bir ortama dağıtılana kadar çağrılamaz. Planınızı API proxy düzeltmesini üretime dağıttıktan sonra prod URL'sini harici birlikte çalışır.

Ortamları listeleme

Apigee Edge'deki her kuruluş en az iki ortama sahiptir: test ve prod. İlgili içeriği oluşturmak için kullanılan rastgele bir ayrımdır. Amacınız, size API proxy'nizin geçersiz olduğunu doğrulamak için bir alan sunmaktır. açmadan önce düzgün çalışıp çalışmadığını kontrol edin.

Her ortam yalnızca bir ağ adresidir ve böylece, iki nokta arasındaki trafiği ayırabilmenizi sağlar. Üzerinde çalıştığınız ve uygulamaların çalışma zamanında eriştiği API proxy'leri.

Ortamlar ayrıca veri ve kaynakların ayrılmasını sağlar. Örneğin, aylık bazda test ve üretimde farklı önbelleklere izin verir. Bunlar, yalnızca ilgili önbellekte çalışan API proxy'leri tarafından bahsedeceğim.

Ortamları kuruluş

curl -u EMAIL:PASSWORD \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments

Örnek Yanıt

[ "test", "prod" ]

Dağıtımları keşfetme

Dağıtım, bir ortamda dağıtılmış bir API proxy'sinin revizyonudur. API Dağıtıldı durumundaki proxy'ye, aşağıda tanımlanan adreslerden ağ üzerinden erişilebilir: söz konusu ortam için <VirtualHost> öğesini kullanın.

API proxy'si dağıtma

API proxy'leri, dağıtılana kadar çağrılamaz. API Hizmetleri, RESTful API'leri kullanıma sunuyor özellikler ve araçlar vardır.

Bir ortamda, belirli bir zamanda API proxy'sinin yalnızca bir revizyonu dağıtılabilir. Bu nedenle Dağıtılan düzeltmenin dağıtımının kaldırılması gerekir. Yeni paketin dağıtılıp dağıtılmayacağını kontrol edebilirsiniz olup olmadığını kontrol edebilirsiniz.

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

Önce mevcut düzeltmenin dağıtımını kaldırın. Ortam adını ve dağıtımını kaldırmak istediğiniz API proxy'si:

curl -X DELETE \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments \
  -u EMAIL:PASSWORD

Ardından yeni düzeltmeyi dağıtın. API proxy'sinin yeni düzeltmesi zaten mevcut olmalıdır:

curl -X POST -H "Content-type:application/x-www-form-urlencoded" \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments \
  -u EMAIL:PASSWORD

Sorunsuz dağıtım (sıfır kapalı kalma süresi)

Dağıtım sırasında kapalı kalma süresi olasılığını en aza indirmek için override parametresini kullanın seçeneğini belirtin ve bunu true olarak ayarlayın.

API proxy'sinin bir revizyonunu diğerinin üzerine dağıtamazsınız. İlk değer her zaman olmalıdır dağıtılmadı. override öğesini true olarak ayarlayarak bir düzeltmenin API proxy'si şu anda dağıtılan düzeltme üzerine dağıtılmalıdır. Sonuçta, dağıtım sırası tersine çevrilir; yeni düzeltme dağıtılır ve dağıtım tamamlandıktan sonra daha önce dağıtılmış olan düzeltmenin dağıtımı kaldırılır.

Aşağıdaki örnekte, override değeri bir form parametresi olarak iletilmektedir:

curl -X POST -H "Content-type:application/x-www-form-urlencoded" \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/e/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments" \
  -d "override=true" \
  -u EMAIL:PASSWORD

delay parametresini ayarlayarak dağıtımı daha da optimize edebilirsiniz. İlgili içeriği oluşturmak için kullanılan delay parametresi, önceki parametrenin öncesinde saniye cinsinden bir zaman aralığı belirtir. düzeltmenin dağıtımı kaldırılmalıdır. Bunun nedeni, yayındaki işlemlerin birkaç saat içinde API proxy'sinin işlemlerini gerçekleştirmeden önce bunu tamamlaması gerekir. Takip edilenler: override=true ve delay parametre ayarlandığında ne olur?

  • Düzeltme 1, istekleri ele almaktadır.
  • Düzeltme 2 paralel olarak dağıtılıyor.
  • Düzeltme 2 tamamen dağıtıldığında Düzeltme 2'ye yeni trafik gönderilir. Yeni trafik yok Düzeltme 1'e gönderilir.
  • Ancak, Düzeltme 1 mevcut işlemleri işlemeye devam ediyor olabilir. delay parametresini (örneğin, 15 saniye) seçerseniz Düzeltme 1'e, mevcut işlemlerin işlenmesini bitirmek için bir fırsattır.
  • Gecikme aralığından sonra Düzeltme 1'in dağıtımı kaldırılır.
ziyaret edin.
curl -X POST -H "Content-type:application/x-www-form-urlencoded" \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/e/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments?delay=15" \
  -d "override=true" \
  -u EMAIL:PASSWORD
Sorgu Parametresi Açıklama
override

Varsayılan değer: false (normal dağıtım davranışı: Mevcut düzeltme dağıtılmaz, yeni düzeltme dağıtılır).

Normal dağıtım davranışını geçersiz kılmak ve sorunsuz bir hizmet sunmak için true olarak ayarlayın dağıtım. Yeni düzeltme de uygulanırken mevcut düzeltme dağıtılmaya devam eder. dağıtıldı. Yeni düzeltme dağıtıldığında eski düzeltmenin dağıtımı kaldırılır. Şurada kullan: dağıtımın ne zaman kaldırılacağını kontrol etmek için delay parametresiyle birlikte gerçekleşir.

delay

Mevcut düzeltme uygulanmadan önce işlemin tamamlanmasına izin vermek için ve 502 Bad Gateway ya da tüm tedarikçilerin 504 Gateway Timeout errors: Bu parametreyi, dağıtımın kaldırılmasını istediğiniz saniye sayısına ayarlayın. gecikti. Ayarlayabileceğiniz saniye sayısıyla ilgili bir sınır yoktur ve çok sayıda saniye ayarlamanın performans sonuçlarını doğurmasına yardımcı olur. Gecikme esnasında yeni trafik eski düzeltmeye gönderilir.

Varsayılan değer 0 (sıfır) saniyedir. override doğru değerine ayarlandığında ve delay değeri 0'dır. Mevcut düzeltmenin dağıtımı, yeni düzeltmenin hemen ardından kaldırılır düzeltilir. Negatif değerler 0 (sıfır) saniye olarak kabul edilir.

override=true, delay ile birlikte kullanıldığında, HTTP 5XX bu yanıtlar ortadan kaldırılabilir. Bunun nedeni, her iki API proxy düzeltmesinin de Gecikmenin ardından eski düzeltmenin dağıtımı kaldırıldı.

API'nin tüm dağıtımlarını görüntüleme Düzeltme

Bazen bir API'nin halihazırda dağıtılmış tüm düzeltmelerinin listesini getirmek gerekir temsil eder.

curl https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis/weatherapi/revisions/1/deployments \
  -u EMAIL:PASSWORD
{
  "aPIProxy" : "weatherapi",
  "environment" : [ {
    "configuration" : {
      "basePath" : "",
      "steps" : [ ]
    },
    "name" : "test",
    "server" : [ {
      "status" : "deployed",
      "type" : [ "message-processor" ],
      "uUID" : "90096dd1-1019-406b-9f42-fbb80cd01200"
    }, {
      "status" : "deployed",
      "type" : [ "message-processor" ],
      "uUID" : "7d6e2eb1-581a-4db0-8045-20d9c3306549"
    }, {
      "status" : "deployed",
      "type" : [ "router" ],
      "uUID" : "1619e2d7-c822-45e0-9f97-63882fb6a805"
    }, {
      "status" : "deployed",
      "type" : [ "router" ],
      "uUID" : "8a5f3d5f-46f8-4e99-b4cc-955875c8a8c8"
    } ],
    "state" : "deployed"
  } ],
  "name" : "1",
  "organization" : "org_name"
}

Yukarıdaki yanıt Apigee'nin dahili altyapısına özel birçok özellik içeriyor Kenar. Şirket içinde Apigee Edge kullanmıyorsanız bu ayarları değiştiremezsiniz.

Yanıtta yer alan önemli özellikler organization, environment, aPIProxy, name ve state. Ölçüt bu özellik değerlerini gözden geçirdikten sonra, API proxy'sinin belirli bir dağıtıldığı anlamına gelir.

Tüm dağıtımları test ortamı

Belirli bir ortama ait dağıtım durumunu da (düzeltme dahil olmak üzere) numarası) ekleyebilirsiniz:

curl -u EMAIL:PASSWORD
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments/test/deployments

Bu işlem, test ortamında dağıtılan her API için yukarıdakiyle aynı sonucu döndürür.

Şuradaki tüm dağıtımları görün: kuruluş

Tüm ortamlardaki tüm API proxy'lerinin şu anda dağıtılmış olan düzeltmelerinin listesini getirmek için: aşağıdaki API yöntemini kullanın:

curl https://api.enterprise.apigee.com/v1/o/ORG_NAME/deployments \
  -u EMAIL:PASSWORD

Bu, tüm ortamlarda dağıtılan tüm API proxy'leri için yukarıdakiyle aynı sonucu döndürür.

API RESTful olduğundan JSON veya XML ile birlikte POST yöntemini kullanabilirsiniz. aynı kaynağa karşılık gelen yükü de içermelidir.

API proxy'niz için bir profil oluşturuldu. API proxy'sinin varsayılan temsili JavaScript nesne gösterimi (JSON). Aşağıda, yukarıdaki POST isteğine ilişkin varsayılan JSON yanıtı verilmiştir, weatherapi adlı bir API proxy'si oluşturdu. Profildeki her bir öğenin açıklaması şöyle olur:

{
  "configurationVersion" : {
    "majorVersion" : 4,
    "minorVersion" : 0
  },
  "contextInfo" : "Revision 1 of application weatherapi, in organization {org_name}",
  "createdAt" : 1357172145444,
  "createdBy" : "you@yourcompany.com",
  "displayName" : "weatherapi",
  "lastModifiedAt" : 1357172145444,
  "lastModifiedBy" : "you@yourcompany.com",
  "name" : "weatherapi",
  "policies" : [ ],
  "proxyEndpoints" : [ ],
  "resources" : [ ],
  "revision" : "1",
  "targetEndpoints" : [ ],
  "targetServers" : [ ],
  "type" : "Application"
}

Oluşturulan API proxy profili, bir API'nin tam yapısını gösterir. proxy:

  • APIProxy revision: API proxy'sinin sıralı olarak numaralandırılmış iterasyonu API Hizmetleri tarafından sağlandığı şekliyle yapılandırması
  • APIProxy name: API proxy'sinin benzersiz adı
  • ConfigurationVersion: API proxy'sinin kullanıldığı API Hizmetleri sürümü yapılandırma uygunluğu
  • CreatedAt: API proxy'sinin oluşturulduğu zaman (UNIX zamanıyla biçimlendirilmiştir)
  • CreatedBy: API'yi oluşturan Apigee Edge kullanıcısının e-posta adresi proxy
  • DisplayName: API proxy'si için kullanıcı dostu bir ad
  • LastModifiedAt: API proxy'sinin oluşturulduğu zaman (UNIX olarak biçimlendirilmiştir) saat
  • LastModifiedBy: API'yi oluşturan Apigee Edge kullanıcısının e-posta adresi proxy
  • Policies: Bu API proxy'sine eklenen politikaların listesi
  • ProxyEndpoints: Adlandırılmış ProxyEndpoints listesi
  • Resources: Şu reklamverenler tarafından kullanılabilecek kaynakların (JavaScript, Python, Java, XSLT) bu API proxy'sinde yürütülür
  • TargetServers: Adlandırılmış TargetServers ( management API) sağlar. Bu API, yük dengeleme amacıyla gelişmiş yapılandırmalarda kullanılır.
  • TargetEndpoints: Adlandırılmış TargetEndpoints listesi

API proxy yapılandırmasındaki çoğu öğenin basit POST yöntemi boştur. Aşağıdaki konularda, bileşenlerine ayıralım.

Bu yapılandırma öğeleri hakkında bilgi edinmek için API proxy'si yapılandırma referansına da bakabilirsiniz.

API ile komut dosyası çalıştırma

Örnek API proxy'lerini kullanarak, Apigee dağıtım aracını sarmalayan kabuk komut dosyaları sağlar. Herhangi bir nedenle Python dağıtım aracını kullanamazsınız, ardından API'yi doğrudan çağırabilirsiniz. Her iki yaklaşım da gösterilmektedir.

Dağıtım aracını sarmalama

Öncelikle Python dağıtım aracının kullanılabilir hale getirebilirsiniz.

Ardından, kimlik bilgilerinizi saklamak için bir dosya oluşturun. Yazdığınız dağıtım komut dosyaları içe aktarılır Bu ayarlar, hesabınızın kimlik bilgilerini merkezi olarak yönetmenize yardımcı olur. API'de Platform örneği, bu dosyanın adı setenv.sh.

#!/bin/bash

org="Your ORG on enterprise.apigee.com"
username="Your USERNAME on enterprise.apigee.com"

# While testing, it's not necessary to change the setting below
env="test"
# Change the value below only if you have an on-premise deployment
url="https://api.enterprise.apigee.com"
# Change the value below only if you have a custom domain
api_domain="apigee.net"

export org=$org
export username=$username
export env=$env
export url=$url
export api_domain=$api_domain

Yukarıdaki dosya, tüm ayarlarınızın dağıtımı sarmalayan kabuk komut dosyaları tarafından kullanılabilmesini sağlar aracını kullanın.

Şimdi, bu ayarları içe aktaran ve dağıtım aracını çağırmak için bunları kullanan bir kabuk komut dosyası oluşturun. (Örnek için bkz. Apigee API platformu örnekleri.)

#!/bin/bash

source path/to/setenv.sh

echo "Enter your password for the Apigee Enterprise organization $org, followed by [ENTER]:"

read -s password

echo Deploying $proxy to $env on $url using $username and $org

path/to/deploy.py -n {api_name} -u $username:$password -o $org -h $url -e $env -p / -d path/to/apiproxy

Hayatınızı gerçekten kolaylaştırmak için API'yi çağırmak ve test etmek üzere bir komut dosyası da oluşturun: şöyle olur:

#!/bin/bash

echo Using org and environment configured in /setup/setenv.sh

source /path/to/setenv.sh

set -x

curl "http://$org-$env.apigee.net/{api_basepath}"

Doğrudan API'yi çağırma

Yükleme işlemini otomatik hale getiren basit kabuk komut dosyaları yazmak, daha fazla bilgi edineceksiniz.

Aşağıdaki komut dosyası doğrudan Management API'yi çağırır. Mevcut düzeltmenin dağıtımını kaldırır güncellemekte olduğunuz API proxy'si, /apiproxy dizininden bir ZIP dosyası oluşturur içerir ve sunucu yapılandırma dosyalarınızı yapılandırma.

#!/bin/bash

#This sets the name of the API proxy and the basepath where the API will be available
api=api

source /path/to/setenv.sh

echo Delete the DS_store file on OSX

echo find . -name .DS_Store -print0 | xargs -0 rm -rf
find . -name .DS_Store -print0 | xargs -0 rm -rf

echo "Enter your password for the Apigee Enterprise organization $org, followed by [ENTER]:"

read -s password

echo Undeploy and delete the previous revision

# Note that you need to explicitly update the revision to be undeployed.
# One benefit of the Python deploy tool is that it manages this for you.

curl -k -u $username:$password "$url/v1/o/$org/e/$env/apis/$api/revisions/1/deployments" -X DELETE

curl -k -u $username:$password -X DELETE "$url/v1/o/$org/apis/$api/revisions/1"

rm -rf $api.zip

echo Create the API proxy bundle and deploy

zip -r $api.zip apiproxy

echo Import the new revision to $env environment 

curl -k -v -u $username:$password "$url/v1/o/$org/apis?action=import&name=$api" -T $api.zip -H "Content-Type: application/octet-stream" -X POST

echo Deploy the new revision to $env environment 

curl -k -u $username:$password "$url/v1/o/$org/e/$env/apis/$api/revisions/1/deployments" -X POST