Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu hızlı başlangıçta, HTTP isteklerine yanıt veren işlev uç noktalarıyla ölçeklenebilir bir web API'si oluşturmak için Azure Geliştirici komut satırı araçlarını kullanacaksınız. Kodu yerel olarak test ettikten sonra, Azure İşlevleri bir Flex Tüketim planında çalıştırarak oluşturduğunuz yeni bir sunucusuz işlev uygulamasına dağıtırsınız.
Proje kaynağı, kodunuzu Azure'a dağıtmayı kolaylaştırmak için Azure Geliştirici CLI'sini (azd) kullanır. Bu dağıtım, güvenli ve ölçeklenebilir Azure İşlevleri dağıtımları için geçerli en iyi yöntemleri izler.
Flex Tüketim planı varsayılan olarak kullandıkça öde faturalama modelini takip eder; yani bu hızlı başlangıcı tamamlamak Azure hesabınızda birkaç Amerikan doları veya daha az bir maliyete neden olur.
Prerequisites
Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
-
Java 17 Geliştirici Seti
- Java'nın desteklenen başka bir sürümünü kullanıyorsanız projenin pom.xml dosyasını güncelleştirmeniz gerekir.
- Ortam değişkeni,
JAVA_HOMEJava Development Kit'in (JDK) doğru sürümünün yükleme konumuna ayarlanmalıdır.
- Apache Maven 3.8.x
-
İşlev uç noktalarınıza JSON yükleriyle istek göndermek için güvenli bir HTTP test aracı. Bu makalede kullanılır
curl.
Projeyi başlatma
azd init Komutunu kullanarak şablondan yerel bir Azure İşlevleri kod projesi oluşturun.
Yerel terminalinizde veya komut isteminizde şu
azd initkomutu boş bir klasörde çalıştırın:azd init --template functions-quickstart-dotnet-azd -e httpendpoint-dotnetBu komut , proje dosyalarını şablon deposundan çeker ve projeyi geçerli klasörde başlatır. bayrağı geçerli
-eortam için bir ad ayarlar. ortamındaazd, ortamınız uygulamanız için benzersiz bir dağıtım bağlamı tutar ve birden fazla dağıtım bağlamı tanımlayabilirsiniz. Ayrıca Azure'da oluşturduğunuz kaynak grubunun adında da kullanılır.Uygulama klasörüne gitmek için
httpşu komutu çalıştırın:cd httpBu JSON verilerini içeren klasörde local.settings.json
httpadlı bir dosya oluşturun:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated" } }Bu dosya yerel olarak çalıştırılırken gereklidir.
Yerel terminalinizde veya komut isteminizde şu
azd initkomutu boş bir klasörde çalıştırın:azd init --template azure-functions-java-flex-consumption-azd -e httpendpoint-javaBu komut , proje dosyalarını şablon deposundan çeker ve projeyi geçerli klasörde başlatır. bayrağı geçerli
-eortam için bir ad ayarlar. ortamındaazd, ortamınız uygulamanız için benzersiz bir dağıtım bağlamı tutar ve birden fazla dağıtım bağlamı tanımlayabilirsiniz. Ayrıca Azure'da oluşturduğunuz kaynak grubunun adında da kullanılır.Uygulama klasörüne gitmek için
httpşu komutu çalıştırın:cd httpBu JSON verilerini içeren klasörde local.settings.json
httpadlı bir dosya oluşturun:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "java" } }Bu dosya yerel olarak çalıştırılırken gereklidir.
Yerel terminalinizde veya komut isteminizde şu
azd initkomutu boş bir klasörde çalıştırın:azd init --template functions-quickstart-javascript-azd -e httpendpoint-jsBu komut , proje dosyalarını şablon deposundan çeker ve projeyi kök klasörde başlatır. bayrağı geçerli
-eortam için bir ad ayarlar. ortamındaazd, ortamınız uygulamanız için benzersiz bir dağıtım bağlamı tutar ve birden fazla dağıtım bağlamı tanımlayabilirsiniz. Ayrıca Azure'da oluşturduğunuz kaynak grubunun adında da kullanılır.Bu JSON verilerini içeren kök klasörde local.settings.json adlı bir dosya oluşturun:
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node" } }Bu dosya yerel olarak çalıştırılırken gereklidir.
Yerel terminalinizde veya komut isteminizde şu
azd initkomutu boş bir klasörde çalıştırın:azd init --template functions-quickstart-powershell-azd -e httpendpoint-psBu komut , proje dosyalarını şablon deposundan çeker ve projeyi kök klasörde başlatır. bayrağı geçerli
-eortam için bir ad ayarlar. ortamındaazd, ortamınız uygulamanız için benzersiz bir dağıtım bağlamı tutar ve birden fazla dağıtım bağlamı tanımlayabilirsiniz. Ayrıca Azure'da oluşturduğunuz kaynak grubunun adında da kullanılır.Uygulama klasörüne gitmek için
srcşu komutu çalıştırın:cd srcBu JSON verilerini içeren klasörde local.settings.json
srcadlı bir dosya oluşturun:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "powershell", "FUNCTIONS_WORKER_RUNTIME_VERSION": "7.2" } }Bu dosya yerel olarak çalıştırılırken gereklidir.
Yerel terminalinizde veya komut isteminizde şu
azd initkomutu boş bir klasörde çalıştırın:azd init --template functions-quickstart-typescript-azd -e httpendpoint-tsBu komut , proje dosyalarını şablon deposundan çeker ve projeyi kök klasörde başlatır. bayrağı geçerli
-eortam için bir ad ayarlar. ortamındaazd, ortamınız uygulamanız için benzersiz bir dağıtım bağlamı tutar ve birden fazla dağıtım bağlamı tanımlayabilirsiniz. Ortam adı, Azure'da oluşturduğunuz kaynak grubunun adında da kullanılır.Bu JSON verilerini içeren kök klasörde local.settings.json adlı bir dosya oluşturun:
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node" } }Bu dosya yerel olarak çalıştırılırken gereklidir.
Yerel terminalinizde veya komut isteminizde şu
azd initkomutu boş bir klasörde çalıştırın:azd init --template functions-quickstart-python-http-azd -e httpendpoint-pyBu komut , proje dosyalarını şablon deposundan çeker ve projeyi kök klasörde başlatır. bayrağı geçerli
-eortam için bir ad ayarlar. ortamındaazd, ortamınız uygulamanız için benzersiz bir dağıtım bağlamı tutar ve birden fazla dağıtım bağlamı tanımlayabilirsiniz. Ortam adı, Azure'da oluşturduğunuz kaynak grubunun adında da kullanılır.Bu JSON verilerini içeren kök klasörde local.settings.json adlı bir dosya oluşturun:
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "python" } }Bu dosya yerel olarak çalıştırılırken gereklidir.
Sanal ortam oluşturma ve etkinleştirme
Kök klasörde şu komutları çalıştırarak adlı .venvbir sanal ortam oluşturun ve etkinleştirin:
python3 -m venv .venv
source .venv/bin/activate
Python Venv paketini Linux dağıtımınıza yüklemezse aşağıdaki komutu çalıştırın:
sudo apt-get install python3-venv
Yerel ortamınızda çalıştırma
Bu komutu uygulama klasörünüzden bir terminal veya komut isteminde çalıştırın:
func startmvn clean package mvn azure-functions:runnpm install func startnpm install npm startİşlevler konağı yerel proje klasörünüzde başlatıldığında, HTTP ile tetiklenen işlevlerinizin URL uç noktalarını terminal çıkışına yazar.
Note
Yerel olarak çalıştırılırken erişim anahtarı yetkilendirmesi zorunlu tutulmadığından, döndürülen işlev URL'si erişim anahtarı değerini içermez ve işlevinizi çağırmak için buna ihtiyacınız yoktur.
Tarayıcınızda şu URL'ye
httpgetbenzeyen uç noktaya gidin:Yeni bir terminal veya komut istemi penceresinden şu
curlkomutu çalıştırarak uç noktaya JSON yükünehttppostsahip bir POST isteği gönderin:curl -i http://localhost:7071/api/httppost -H "Content-Type: text/json" -d @testdata.jsoncurl -i http://localhost:7071/api/httppost -H "Content-Type: text/json" -d "@src/functions/testdata.json"Bu komut proje dosyasından
testdata.jsonJSON yük verilerini okur. Her iki HTTP isteğinintest.httpörneklerini proje dosyasında bulabilirsiniz.İşiniz bittiğinde, ana bilgisayar işlemini durdurmak
func.exeiçin terminal penceresinde Ctrl+C tuşlarına basın.
- Sanal ortamı kapatmak için komutunu çalıştırın
deactivate.
Kodu gözden geçirme (isteğe bağlı)
İki HTTP tetikleyici işlevi uç noktasını tanımlayan kodu gözden geçirebilirsiniz:
[Function("httpget")]
public IActionResult Run([HttpTrigger(AuthorizationLevel.Function, "get")]
HttpRequest req,
string name)
{
var returnValue = string.IsNullOrEmpty(name)
? "Hello, World."
: $"Hello, {name}.";
_logger.LogInformation($"C# HTTP trigger function processed a request for {returnValue}.");
return new OkObjectResult(returnValue);
}
@FunctionName("httpget")
public HttpResponseMessage run(
@HttpTrigger(
name = "req",
methods = {HttpMethod.GET},
authLevel = AuthorizationLevel.FUNCTION)
HttpRequestMessage<Optional<String>> request,
final ExecutionContext context) {
context.getLogger().info("Java HTTP trigger processed a request.");
// Parse query parameter
String name = Optional.ofNullable(request.getQueryParameters().get("name")).orElse("World");
return request.createResponseBuilder(HttpStatus.OK).body("Hello, " + name).build();
}
const { app } = require('@azure/functions');
app.http('httpget', {
methods: ['GET'],
authLevel: 'function',
handler: async (request, context) => {
context.log(`Http function processed request for url "${request.url}"`);
const name = request.query.get('name') || await request.text() || 'world';
return { body: `Hello, ${name}!` };
}
});
import { app, HttpRequest, HttpResponseInit, InvocationContext } from "@azure/functions";
export async function httpGetFunction(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
context.log(`Http function processed request for url "${request.url}"`);
const name = request.query.get('name') || await request.text() || 'world';
return { body: `Hello, ${name}!` };
};
app.http('httpget', {
methods: ['GET'],
authLevel: 'function',
handler: httpGetFunction
});
Bu function.json dosya işlevi httpget tanımlar:
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "Request",
"methods": [
"get"
],
"route": "httpget"
},
{
"type": "http",
"direction": "out",
"name": "Response"
}
]
}
Bu run.ps1 dosya işlev kodunu uygular:
using namespace System.Net
# Input bindings are passed in via param block.
param($Request, $TriggerMetadata)
# Write to the Azure Functions log stream.
Write-Host "PowerShell HTTP trigger function processed a request."
# Interact with query parameters
$name = $Request.Query.name
$body = "This HTTP triggered function executed successfully. Pass a name in the query string for a personalized response."
if ($name) {
$body = "Hello, $name. This HTTP triggered function executed successfully."
}
# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $body
})
@app.route(route="httpget", methods=["GET"])
def http_get(req: func.HttpRequest) -> func.HttpResponse:
name = req.params.get("name", "World")
logging.info(f"Processing GET request. Name: {name}")
return func.HttpResponse(f"Hello, {name}!")
Şablon projesinin tamamını burada gözden geçirebilirsiniz.
Şablon projesinin tamamını burada gözden geçirebilirsiniz.
Şablon projesinin tamamını burada gözden geçirebilirsiniz.
Şablon projesinin tamamını burada gözden geçirebilirsiniz.
Şablon projesinin tamamını burada gözden geçirebilirsiniz.
Şablon projesinin tamamını burada gözden geçirebilirsiniz.
İşlevlerinizi yerel olarak doğruladıktan sonra, bunları Azure'da yayımlamanın zamanı geldi.
Azure’a dağıtın
Bu proje, bu projeyi Azure'daki Flex Consumption planındaki yeni bir işlev uygulamasına dağıtmak için komutunu kullanacak azd up şekilde yapılandırılmıştır.
Tip
Proje, en iyi yöntemleri izleyen bir Flex tüketim planına güvenli dağıtım oluşturmak için kullanılan infra klasöründeki bicep dosyası kümesini azd içerir.
Azure'da
azdgerekli Azure kaynaklarını oluşturmak ve kod projenizi yeni işlev uygulamasına dağıtmak için şu komutu çalıştırın:azd upKök klasör, için
azure.yamlgereken tanım dosyasını içerirazd.Henüz oturum açmadıysanız Azure hesabınızla kimlik doğrulaması yapmanız istenir.
İstendiğinde şu gerekli dağıtım parametrelerini sağlayın:
Parameter Description Azure aboneliği Kaynaklarınızın oluşturulduğu abonelik. Azure konumu Yeni Azure kaynaklarını içeren kaynak grubunun oluşturulacağı Azure bölgesi. Yalnızca şu anda Esnek Tüketim planını destekleyen bölgeler gösterilir. vnetEnabled Yanlış'ı seçin. True olarak ayarlandığında dağıtım, işlev uygulamanızı yeni bir sanal ağda oluşturur. Komut,
azd upbu dağıtım görevlerini tamamlamak için Bicep yapılandırma dosyalarıyla bu istemlere yanıtlarınızı kullanır:Bu gerekli Azure kaynaklarını oluşturun ve yapılandırın (eşdeğeri
azd provision):- Esnek Tüketim planı ve işlev uygulaması
- Azure Depolama (gerekli) ve Application Insights (önerilir)
- Hesabınız için ilkelere ve rollere erişme
- Yönetilen kimlikleri kullanan hizmet-hizmet bağlantıları (depolanan bağlantı dizesi yerine)
- (Seçenek) Hem işlev uygulamasını hem de diğer Azure kaynaklarını güvenli bir şekilde çalıştırmak için sanal ağ
Kodunuzu paketleyin ve dağıtım kapsayıcısına dağıtın (eşdeğeri
azd deploy). Ardından uygulama başlatılır ve dağıtılan pakette çalıştırılır.
Komut başarıyla tamamlandıktan sonra, oluşturduğunuz kaynakların bağlantılarını görürsünüz.
İşlevi Azure'da çağırma
Artık HTTP test aracınızı kullanarak veya tarayıcıdan (GET istekleri için) URL'lerine HTTP isteklerinde bulunarak Azure'daki işlev uç noktalarınızı çağırabilirsiniz. İşlevleriniz Azure'da çalıştırıldığında erişim anahtarı yetkilendirmesi zorlanır ve isteğinizle birlikte bir işlev erişim anahtarı sağlamanız gerekir.
İşlevlerinizin URL uç noktalarını Azure'da çalıştırmak için Çekirdek Araçları'nı kullanabilirsiniz.
Yerel terminalinizde veya komut isteminizde şu komutları çalıştırarak URL uç noktası değerlerini alın:
$APP_NAME = azd env get-value AZURE_FUNCTION_NAME func azure functionapp list-functions $APP_NAME --show-keyskomut,
azd env get-valueişlev uygulamanızın adını yerel ortamdan alır.--show-keysseçeneğinifunc azure functionapp list-functionsile kullandığınızda, döndürülen Çağırma URL’si: değeri, her uç nokta için işlev seviyesinde bir erişim anahtarı içerir.Daha önce olduğu gibi, Azure'da çalışan işlev uygulamanızda bu URL'leri doğrulamak için HTTP test aracınızı kullanın.
Kodunuzu yeniden dağıtma
azd up Komutunu hem Azure kaynaklarınızı sağlamak hem de işlev uygulamanıza kod güncelleştirmeleri dağıtmak için gerektiği kadar çalıştırın.
Note
Dağıtılan kod dosyalarının üzerine her zaman en son dağıtım paketi yazılır.
İstemlere ve tarafından azd oluşturulan tüm ortam değişkenlerine azd yönelik ilk yanıtlarınız adlandırılmış ortamınızda yerel olarak depolanır.
azd env get-values Azure kaynaklarını oluştururken kullandığınız ortamınızdaki tüm değişkenleri gözden geçirmek için komutunu kullanın.
Kaynakları temizleme
İşlev uygulamanızla ve ilgili kaynaklarla çalışmayı bitirdiğinizde, işlev uygulamasını ve ilgili kaynaklarını Azure'dan silmek ve başka maliyetlerle karşılaşmamak için bu komutu kullanın:
azd down --no-prompt
Note
seçeneği, --no-prompt sizden onay almadan kaynak grubunuzu silmenizi belirtir azd .
Bu komut yerel kod projenizi etkilemez.