Azure İşlevleri için Dapr Uzantısı
Azure İşlevleri için Dapr Uzantısı, geliştiricilerin Azure İşlevleri Dağıtılmış Uygulama Çalışma Zamanı (Dapr) platformuyla kolayca tümleştirmesini sağlayan bir araç ve hizmet kümesidir.
Azure İşlevleri, diğer Azure hizmetlerine kolayca bağlanmak için bir dizi tetikleyici ve bağlama sağlayan olay temelli bir işlem hizmetidir. Dapr, mikro hizmetler, durum yönetimi, pub/sub mesajlaşması ve daha fazlası dahil olmak üzere dağıtılmış uygulamalar oluşturmaya yönelik bir dizi yapı taşları ve en iyi yöntemleri sağlar.
Dapr ve İşlevler arasındaki tümleştirmeyle, Dapr veya dış sistemlerden gelen olaylara tepki veren işlevler oluşturabilirsiniz.
Eylem | Yön | Tür |
---|---|---|
Dapr giriş bağlaması üzerinde tetikleyici | Yok | daprBindingTrigger |
Bir Dapr hizmeti çağrısında tetikleme | Yok | daprServiceInvocationTrigger |
Dapr konu aboneliğinde tetikleme | Yok | daprTopicTrigger |
Yürütme için Dapr durumunu çekme | İçinde | daprState |
Yürütme için Dapr gizli dizilerini çekme | İçinde | daprSecret |
Bir değeri Dapr durumuna kaydetme | Dışarı | daprState |
Başka bir Dapr uygulaması çağırma | Dışarı | daprInvoke |
Dapr konusuna ileti yayımlama | Dışarı | daprPublish |
Dapr çıkış bağlamasına değer gönderme | Dışarı | daprBinding |
Uzantıyı yükleme
Yüklediğiniz NuGet uzantısı, işlev uygulamanızda kullandığınız C# moduna veya yalıtılmış çalışan işlemine bağlıdır:
Bu uzantı, NuGet paketi, sürüm 1.0.0 yüklenerek kullanılabilir.
.NET CLI'yi kullanma:
dotnet add package Microsoft.Azure.WebJobs.Extensions.Dapr
Paket yükleme
Dosyanıza host.json
aşağıdaki kodu ekleyerek veya değiştirerek uzantıyı ekleyebilirsiniz:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
Dapr etkinleştirme
Dapr'ı, çalışma zamanı bağlamını temel alarak çeşitli [bağımsız değişkenler ve ek açıklamalar][dapr-args] kullanarak yapılandırabilirsiniz. Dapr'ı iki kanal aracılığıyla Azure İşlevleri için yapılandırabilirsiniz:
- Bicep veya Azure Resource Manager (ARM) şablonlarında olduğu gibi Kod Olarak Altyapı (IaC) şablonları
- Azure portal
IaC şablonu kullanırken, kapsayıcı uygulaması kaynak tanımının properties
bölümünde aşağıdaki bağımsız değişkenleri belirtin.
DaprConfig: {
enabled: true
appId: '${envResourceNamePrefix}-funcapp'
appPort: 3001
httpReadBufferSize: ''
httpMaxRequestSize: ''
logLevel: ''
enableApiLogging: true
}
Yukarıdaki Dapr yapılandırma değerleri uygulama kapsamı değişiklikleri olarak kabul edilir. Bir kapsayıcı uygulamasını birden çok düzeltme modunda çalıştırdığınızda, bu ayarlarda yapılan değişiklikler yeni bir düzeltme oluşturmaz. Bunun yerine, tüm mevcut düzeltmeler en güncel değerlerle yapılandırıldığından emin olmak için yeniden başlatılır.
Azure portalını kullanarak Dapr'ı yapılandırırken işlev uygulamanıza gidin ve sol taraftaki menüden Dapr'ı seçin:
Dapr bağlantı noktaları ve dinleyiciler
Dapr'dan bir işlevi tetiklerken uzantı, Dapr sepetten gelen istekleri dinlemek için bağlantı noktasını 3001
otomatik olarak kullanıma sunar.
Önemli
Bağlantı noktası 3001
yalnızca işlev uygulamasında bir Dapr tetikleyicisi tanımlandığında kullanıma sunulur ve dinlenilir. Dapr kullanılırken sepet, örneklemeyi tamamlamadan önce tanımlanan bağlantı noktasından yanıt almayı bekler. Ek açıklamayı tanımlamayın dapr.io/port
veya --app-port
tetikleyiciniz olmadığı sürece. Bunun yapılması uygulamanızı Dapr sepetten kilitler.
Yalnızca giriş ve çıkış bağlamaları kullanıyorsanız bağlantı noktasının 3001
kullanıma sunulması veya tanımlanması gerekmez.
Varsayılan olarak, Azure İşlevleri Dapr ile iletişim kurmaya çalıştığında ortam değişkeninden DAPR_HTTP_PORT
çözümlenen bağlantı noktası üzerinden Dapr'ı çağırır. Bu değişken null ise, varsayılan olarak bağlantı noktası 3500
olur.
bağlama (veya özniteliği) için özelliğini function.json
ayarlayarak DaprAddress
giriş ve çıkış bağlamaları tarafından kullanılan Dapr adresini geçersiz kılabilirsiniz. Varsayılan olarak kullanır http://localhost:{DAPR_HTTP_PORT}
.
İşlev uygulaması, http tetikleyicileri gibi yerel olarak varsayılan olan ancak kapsayıcıda varsayılan 7071
80
değeri olan başka bir bağlantı noktasını ve uç noktayı kullanıma sunar.
Bağlama türleri
.NET için desteklenen bağlama türleri, aşağıdakilerden biri olabilecek uzantı sürümüne ve C# yürütme moduna bağlıdır:
İşlem içi sınıf kitaplığı, İşlevler çalışma zamanıyla aynı işlemde çalıştırılan derlenmiş bir C# işlevidir.
Dapr Uzantısı, aşağıdaki tabloya göre parametre türlerini destekler.
Bağlama | Parametre türleri |
---|---|
Dapr tetikleyicisi | daprBindingTrigger daprServiceInvocationTrigger daprTopicTrigger |
Dapr girişi | daprState daprSecret |
Dapr çıkışı | daprState daprInvoke daprPublish daprBinding |
Bu türleri kullanan örnekler için uzantının GitHub deposuna bakın.
Azure İşlevleri için Dapr Uzantısı'nı deneyin
Sağlanan örnekler aracılığıyla Azure İşlevleri için Dapr Uzantısı'nı kullanmayı öğrenin.
Örnekler | Açıklama |
---|---|
Hızlı Başlangıç | Dapr Pub/sub bağlamasını ve HttpTrigger kullanmaya başlayın. |
Dapr Kafka | Kafka bağlamaları Dapr bileşeniyle Azure İşlevleri Dapr Uzantısını kullanmayı öğrenin. |
.NET İşlemDe | Service Invocation, Pub/sub, Bindings ve State Management gibi .NET'teki birden çok Dapr bileşeniyle tümleştirmek için Azure İşlevleri işlem içi modeli kullanmayı öğrenin. |
.NET Yalıtılmış | Azure İşlevleri kullanıma dışı (OOP) yürütme modelini kullanarak .NET'teki Dapr bileşenleriyle tümleştirme. |
Azure İşlevleri için Dapr Uzantısı'nı deneyin
Sağlanan örnekler aracılığıyla Azure İşlevleri için Dapr Uzantısı'nı kullanmayı öğrenin.
Örnekler | Açıklama |
---|---|
Java İşlevleri | Java kullanarak Azure İşlevleri Dapr Uzantısını kullanmayı öğrenin. |
Azure İşlevleri için Dapr Uzantısı'nı deneyin
Sağlanan örnekler aracılığıyla Azure İşlevleri için Dapr Uzantısı'nı kullanmayı öğrenin.
Örnekler | Açıklama |
---|---|
Hızlı Başlangıç | Dapr Pub/sub bağlamasını ve HttpTrigger kullanmaya başlayın. |
Dapr Kafka | Kafka bağlamaları Dapr bileşeniyle Azure İşlevleri Dapr Uzantısını kullanmayı öğrenin. |
JavaScript | Bir JavaScript Dapr işlev uygulaması çalıştırın ve Azure İşlevleri kullanarak Dapr Hizmeti Çağırma, Pub/sub, Bağlamalar ve Durum Yönetimi ile tümleştirin. |
Azure İşlevleri için Dapr Uzantısı'nı deneyin
Sağlanan örnekler aracılığıyla Azure İşlevleri için Dapr Uzantısı'nı kullanmayı öğrenin.
Örnekler | Açıklama |
---|---|
PowerShell İşlevleri | PowerShell ile Azure İşlevleri Dapr Uzantısını kullanmayı öğrenin. |
Azure İşlevleri için Dapr Uzantısı'nı deneyin
Sağlanan örnekler aracılığıyla Azure İşlevleri için Dapr Uzantısı'nı kullanmayı öğrenin.
Örnekler | Açıklama |
---|---|
Dapr Kafka | Kafka bağlamaları Dapr bileşeniyle Azure İşlevleri Dapr Uzantısını kullanmayı öğrenin. |
Python v1 | Bir Dapr-ized Python uygulaması çalıştırın ve Dapr bileşenleriyle tümleştirmek için Azure İşlevleri Python v1 programlama modelini kullanın. |
Python v2 | Dapr bileşenleriyle tümleştirmek için Azure İşlevleri Python v2 programlama modelini kullanarak bir Dapr uygulaması başlatın. |
Sorun giderme
Bu bölümde, Azure İşlevleri için Dapr uzantısı kullanılırken oluşabilecek sorunların nasıl giderildiğini açıklanmaktadır.
Ortamınızda Dapr'ın etkinleştirildiğinden emin olun
Azure İşlevleri'de Dapr bağlamaları ve tetikleyicileri kullanıyorsanız ve Ortamınızda Dapr etkinleştirilmediyse şu hata iletisini alabilirsiniz: Dapr sidecar isn't present. Please see (https://aka.ms/azure-functions-dapr-sidecar-missing) for more information.
Ortamınızda Dapr'ı etkinleştirmek için:
Azure İşleviniz Azure Container Apps'te dağıtıldıysa Azure İşlevleri için Dapr uzantısı için Dapr etkinleştirme yönergelerine bakın.
Azure İşleviniz Kubernetes'te dağıtıldıysa dağıtımınızın YAML yapılandırmasında aşağıdaki ek açıklamaların bulunduğunu doğrulayın:
annotations: ... dapr.io/enabled: "true" dapr.io/app-id: "functionapp" # You should only set app-port if you are using a Dapr trigger in your code. dapr.io/app-port: "<DAPR_APP_PORT>" ...
Azure İşlevinizi yerel olarak çalıştırıyorsanız, işlev uygulamasını Dapr ile çalıştırdığınızdan emin olmak için aşağıdaki komutu çalıştırın:
dapr run --app-id functionapp --app-port <DAPR_APP_PORT> --components-path <COMPONENTS_PATH> -- func host start
Dapr yapılandırmasında uygulama bağlantı noktası değerini doğrulama
Azure İşlevleri için Dapr uzantısı varsayılan olarak bağlantı noktasında 3001
bir HTTP sunucusu başlatır. Ortam değişkenini DAPR_APP_PORT
kullanarak bu bağlantı noktasını yapılandırabilirsiniz.
bir Azure İşlevleri uygulamasını çalıştırırken yanlış bir uygulama bağlantı noktası değeri sağlarsanız şu hata iletisini alabilirsiniz: The Dapr sidecar is configured to listen on port {portInt}, but the app server is running on port {appPort}. This may cause unexpected behavior. For more information, visit [this link](https://aka.ms/azfunc-dapr-app-config-error).
Bu hata iletisini çözmek için:
Kapsayıcı uygulamanızın Dapr ayarlarında:
Kodunuzda bir Dapr tetikleyicisi kullanıyorsanız, uygulama bağlantı noktasının ortam değişkeninin değerine
DAPR_APP_PORT
veya değerine ayarlandığını3001
doğrulayın.Kodunuzda Dapr tetikleyicisi kullanmıyorsanız uygulama bağlantı noktasının ayarlanmadığını doğrulayın. Bu kapsayıcı boş olmalıdır.
Dapr yapılandırmasında doğru uygulama bağlantı noktası değerini sağladığınızı doğrulayın.
Azure Container Apps kullanıyorsanız Bicep'te uygulama bağlantı noktasını belirtin:
DaprConfig: { ... appPort: <DAPR_APP_PORT> ... }
Kubernetes ortamı kullanıyorsanız ek açıklamayı
dapr.io/app-port
ayarlayın:annotations: ... dapr.io/app-port: "<DAPR_APP_PORT>" ...
Yerel olarak geliştiriyorsanız işlev uygulamasını Dapr ile çalıştırırken ayarladığınızı
--app-port
doğrulayın:dapr run --app-id functionapp --app-port <DAPR_APP_PORT> --components-path <COMPONENTS_PATH> -- func host start