Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dalam Mulai Cepat ini, Anda menggunakan alat baris perintah Pengembang Azure untuk membuat fungsi yang merespons permintaan HTTP. Setelah menguji kode secara lokal, Anda menyebarkannya ke aplikasi fungsi tanpa server baru yang Anda buat berjalan dalam paket Konsumsi Flex di Azure Functions.
Sumber proyek menggunakan Azure Developer CLI (azd) untuk menyederhanakan penyebaran kode Anda ke Azure. Penyebaran ini mengikuti praktik terbaik saat ini untuk penyebaran Azure Functions yang aman dan dapat diskalakan.
Secara default, paket Konsumsi Flex mengikuti model penagihan bayar untuk apa yang Anda gunakan , yang berarti untuk menyelesaikan mulai cepat ini dikenakan biaya kecil dengan beberapa sen USD atau kurang di akun Azure Anda.
Prasyarat
Akun Azure dengan langganan aktif. Buat akun secara gratis.
-
Kit Pengembang Java 17
- Jika Anda menggunakan versi Java lain yang didukung, Anda harus memperbarui file pom.xml proyek.
- Variabel lingkungan
JAVA_HOME
harus diatur ke lokasi penginstalan versi JDK yang benar.
- Apache Maven 3.8.x
- Alat uji HTTP yang aman untuk mengirim permintaan dengan payload JSON ke titik akhir fungsi Anda. Artikel ini menggunakan
curl
.
Menginisialisasi proyek
Anda dapat menggunakan azd init
perintah untuk membuat proyek kode Azure Functions lokal dari templat.
Di terminal lokal atau prompt perintah Anda, jalankan perintah ini
azd init
di folder kosong:azd init --template functions-quickstart-dotnet-azd -e flexquickstart-dotnet
Perintah ini menarik file proyek dari repositori templat dan menginisialisasi proyek di folder saat ini. Bendera
-e
menetapkan nama untuk lingkungan saat ini. Diazd
, lingkungan digunakan untuk mempertahankan konteks penyebaran unik untuk aplikasi Anda, dan Anda dapat menentukan lebih dari satu. Ini juga digunakan dalam nama grup sumber daya yang Anda buat di Azure.Jalankan perintah ini untuk menavigasi ke
http
folder aplikasi:cd http
Buat file bernama local.settings.json di
http
folder yang berisi data JSON ini:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated" } }
File ini diperlukan saat berjalan secara lokal.
Di terminal lokal atau prompt perintah Anda, jalankan perintah ini
azd init
di folder kosong:azd init --template azure-functions-java-flex-consumption-azd -e flexquickstart-java
Perintah ini menarik file proyek dari repositori templat dan menginisialisasi proyek di folder saat ini. Bendera
-e
menetapkan nama untuk lingkungan saat ini. Diazd
, lingkungan digunakan untuk mempertahankan konteks penyebaran unik untuk aplikasi Anda, dan Anda dapat menentukan lebih dari satu. Ini juga digunakan dalam nama grup sumber daya yang Anda buat di Azure.Jalankan perintah ini untuk menavigasi ke
http
folder aplikasi:cd http
Buat file bernama local.settings.json di
http
folder yang berisi data JSON ini:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "java" } }
File ini diperlukan saat berjalan secara lokal.
Di terminal lokal atau prompt perintah Anda, jalankan perintah ini
azd init
di folder kosong:azd init --template functions-quickstart-javascript-azd -e flexquickstart-js
Perintah ini menarik file proyek dari repositori templat dan menginisialisasi proyek di folder akar. Bendera
-e
menetapkan nama untuk lingkungan saat ini. Diazd
, lingkungan digunakan untuk mempertahankan konteks penyebaran unik untuk aplikasi Anda, dan Anda dapat menentukan lebih dari satu. Ini juga digunakan dalam nama grup sumber daya yang Anda buat di Azure.Buat file bernama local.settings.json di folder akar yang berisi data JSON ini:
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node" } }
File ini diperlukan saat berjalan secara lokal.
Di terminal lokal atau prompt perintah Anda, jalankan perintah ini
azd init
di folder kosong:azd init --template functions-quickstart-powershell-azd -e flexquickstart-ps
Perintah ini menarik file proyek dari repositori templat dan menginisialisasi proyek di folder akar. Bendera
-e
menetapkan nama untuk lingkungan saat ini. Diazd
, lingkungan digunakan untuk mempertahankan konteks penyebaran unik untuk aplikasi Anda, dan Anda dapat menentukan lebih dari satu. Ini juga digunakan dalam nama grup sumber daya yang Anda buat di Azure.Jalankan perintah ini untuk menavigasi ke
src
folder aplikasi:cd src
Buat file bernama local.settings.json di
src
folder yang berisi data JSON ini:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "powershell", "FUNCTIONS_WORKER_RUNTIME_VERSION": "7.2" } }
File ini diperlukan saat berjalan secara lokal.
Di terminal lokal atau prompt perintah Anda, jalankan perintah ini
azd init
di folder kosong:azd init --template functions-quickstart-typescript-azd -e flexquickstart-ts
Perintah ini menarik file proyek dari repositori templat dan menginisialisasi proyek di folder akar. Bendera
-e
menetapkan nama untuk lingkungan saat ini. Diazd
, lingkungan digunakan untuk mempertahankan konteks penyebaran unik untuk aplikasi Anda, dan Anda dapat menentukan lebih dari satu. Ini juga digunakan dalam nama grup sumber daya yang Anda buat di Azure.Buat file bernama local.settings.json di folder akar yang berisi data JSON ini:
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node" } }
File ini diperlukan saat berjalan secara lokal.
Di terminal lokal atau prompt perintah Anda, jalankan perintah ini
azd init
di folder kosong:azd init --template functions-quickstart-python-http-azd -e flexquickstart-py
Perintah ini menarik file proyek dari repositori templat dan menginisialisasi proyek di folder akar. Bendera
-e
menetapkan nama untuk lingkungan saat ini. Diazd
, lingkungan digunakan untuk mempertahankan konteks penyebaran unik untuk aplikasi Anda, dan Anda dapat menentukan lebih dari satu. Ini juga digunakan dalam nama grup sumber daya yang Anda buat di Azure.Buat file bernama local.settings.json di folder akar yang berisi data JSON ini:
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "python" } }
File ini diperlukan saat berjalan secara lokal.
Membuat dan mengaktifkan lingkungan virtual
Di folder akar, jalankan perintah ini untuk membuat dan mengaktifkan lingkungan virtual bernama .venv
:
python3 -m venv .venv
source .venv/bin/activate
Jika Python tidak memasang paket venv pada distribusi Linux Anda, jalankan perintah berikut:
sudo apt-get install python3-venv
Jalankan di lingkungan lokal Anda
Jalankan perintah ini dari folder aplikasi Anda di terminal atau prompt perintah:
func start
mvn clean package mvn azure-functions:run
npm install func start
npm install npm start
Saat host Functions dimulai di folder proyek lokal Anda, host tersebut menulis titik akhir URL fungsi yang dipicu HTTP Anda ke output terminal.
Di browser Anda, navigasikan ke
httpget
titik akhir, yang akan terlihat seperti URL ini:Dari terminal baru atau jendela prompt perintah, jalankan perintah ini
curl
untuk mengirim permintaan POST dengan payload JSON kehttppost
titik akhir:curl -i http://localhost:7071/api/httppost -H "Content-Type: text/json" -d @testdata.json
curl -i http://localhost:7071/api/httppost -H "Content-Type: text/json" -d "@src/functions/testdata.json"
Perintah ini membaca data payload JSON dari
testdata.json
file proyek. Anda dapat menemukan contoh kedua permintaan HTTP dalamtest.http
file proyek.Setelah selesai, tekan Ctrl+C di jendela terminal untuk menghentikan
func.exe
proses host.
- Jalankan
deactivate
untuk mematikan lingkungan virtual.
Meninjau kode (opsional)
Anda dapat meninjau kode yang menentukan dua titik akhir fungsi pemicu HTTP:
[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
});
File ini function.json
mendefinisikan httpget
fungsi:
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "Request",
"methods": [
"get"
],
"route": "httpget"
},
{
"type": "http",
"direction": "out",
"name": "Response"
}
]
}
File ini run.ps1
mengimplementasikan kode fungsi:
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}!")
Anda dapat meninjau proyek templat lengkap di sini.
Anda dapat meninjau proyek templat lengkap di sini.
Anda dapat meninjau proyek templat lengkap di sini.
Anda dapat meninjau proyek templat lengkap di sini.
Anda dapat meninjau proyek templat lengkap di sini.
Anda dapat meninjau proyek templat lengkap di sini.
Setelah Anda memverifikasi fungsi Anda secara lokal, saatnya untuk menerbitkannya ke Azure.
Membuat sumber daya Azure
Proyek ini dikonfigurasi untuk menggunakan azd provision
perintah untuk membuat aplikasi fungsi dalam paket Konsumsi Flex, bersama dengan sumber daya Azure lain yang diperlukan.
Catatan
Proyek ini mencakup sekumpulan file Bicep yang azd
menggunakan untuk membuat penyebaran aman ke rencana konsumsi Flex yang mengikuti praktik terbaik.
Perintah azd up
dan azd deploy
saat ini tidak didukung untuk aplikasi Java.
Di folder akar proyek, jalankan perintah ini untuk membuat sumber daya Azure yang diperlukan:
azd provision
Folder akar berisi file definisi yang
azure.yaml
diperlukan olehazd
.Jika Anda belum masuk, Anda diminta untuk mengautentikasi dengan akun Azure Anda.
Saat diminta, berikan parameter penyebaran yang diperlukan ini:
Parameter Deskripsi Langganan Azure Langganan tempat sumber daya Anda dibuat. Lokasi Azure Wilayah Azure untuk membuat grup sumber daya yang berisi sumber daya Azure baru. Hanya wilayah yang saat ini mendukung paket Konsumsi Flex yang ditampilkan. Perintah menggunakan
azd provision
respons Anda terhadap perintah ini dengan file konfigurasi Bicep untuk membuat dan mengonfigurasi sumber daya Azure yang diperlukan ini:- Paket Konsumsi Flex dan aplikasi fungsi
- Azure Storage (wajib) dan Application Insights (disarankan)
- Mengakses kebijakan dan peran untuk akun Anda
- Koneksi layanan ke layanan menggunakan identitas terkelola (bukan string koneksi tersimpan)
- Jaringan virtual untuk menjalankan aplikasi fungsi dan sumber daya Azure lainnya dengan aman
Setelah perintah berhasil diselesaikan, Anda dapat menyebarkan kode proyek ke aplikasi fungsi baru ini di Azure.
Sebarkan ke Azure
Anda dapat menggunakan Core Tools untuk mengemas kode Anda dan menyebarkannya ke Azure dari target
folder output.
Navigasikan ke folder aplikasi yang setara di
target
folder output:cd http/target/azure-functions/contoso-functions
Folder ini harus memiliki file host.json, yang menunjukkan bahwa itu adalah akar aplikasi fungsi Java yang dikompilasi.
Jalankan perintah ini untuk menyebarkan proyek kode Java yang dikompilasi ke sumber daya aplikasi fungsi baru di Azure menggunakan Core Tools:
Perintah
azd env get-value
mendapatkan nama aplikasi fungsi Anda dari lingkungan lokal, yang diperlukan untuk penyebaran menggunakanfunc azure functionapp publish
. Setelah penerbitan berhasil diselesaikan, Anda akan melihat tautan ke titik akhir pemicu HTTP di Azure.
Sebarkan ke Azure
Proyek ini dikonfigurasi untuk menggunakan azd up
perintah untuk menyebarkan proyek ini ke aplikasi fungsi baru dalam paket Konsumsi Flex di Azure.
Tip
Proyek ini mencakup sekumpulan file Bicep yang azd
menggunakan untuk membuat penyebaran aman ke rencana konsumsi Flex yang mengikuti praktik terbaik.
Jalankan perintah ini untuk membuat
azd
sumber daya Azure yang diperlukan di Azure dan menyebarkan proyek kode Anda ke aplikasi fungsi baru:azd up
Folder akar berisi file definisi yang
azure.yaml
diperlukan olehazd
.Jika Anda belum masuk, Anda diminta untuk mengautentikasi dengan akun Azure Anda.
Saat diminta, berikan parameter penyebaran yang diperlukan ini:
Parameter Deskripsi Langganan Azure Langganan tempat sumber daya Anda dibuat. Lokasi Azure Wilayah Azure untuk membuat grup sumber daya yang berisi sumber daya Azure baru. Hanya wilayah yang saat ini mendukung paket Konsumsi Flex yang ditampilkan. Perintah menggunakan
azd up
respons Anda terhadap perintah ini dengan file konfigurasi Bicep untuk menyelesaikan tugas penyebaran ini:Buat dan konfigurasikan sumber daya Azure yang diperlukan ini (setara dengan
azd provision
):- Paket Konsumsi Flex dan aplikasi fungsi
- Azure Storage (wajib) dan Application Insights (disarankan)
- Mengakses kebijakan dan peran untuk akun Anda
- Koneksi layanan ke layanan menggunakan identitas terkelola (bukan string koneksi tersimpan)
- Jaringan virtual untuk menjalankan aplikasi fungsi dan sumber daya Azure lainnya dengan aman
Paketkan dan sebarkan kode Anda ke kontainer penyebaran (setara dengan
azd deploy
). Aplikasi kemudian dimulai dan berjalan dalam paket yang disebarkan.
Setelah perintah berhasil diselesaikan, Anda akan melihat tautan ke sumber daya yang Anda buat.
Menggunakan fungsi pada Azure
Anda sekarang dapat memanggil titik akhir fungsi Anda di Azure dengan membuat permintaan HTTP ke URL mereka menggunakan alat pengujian HTTP Anda atau dari browser (untuk permintaan GET). Saat fungsi Anda berjalan di Azure, otorisasi kunci akses diberlakukan, dan Anda harus menyediakan kunci akses fungsi dengan permintaan Anda.
Anda dapat menggunakan Core Tools untuk mendapatkan titik akhir URL fungsi Anda yang berjalan di Azure.
Di terminal lokal atau prompt perintah Anda, jalankan perintah ini untuk mendapatkan nilai titik akhir URL:
$APP_NAME = azd env get-value AZURE_FUNCTION_NAME func azure functionapp list-functions $APP_NAME --show-keys
Perintah
azd env get-value
mendapatkan nama aplikasi fungsi Anda dari lingkungan lokal.--show-keys
Menggunakan opsi denganfunc azure functionapp list-functions
berarti bahwa URL Pemanggilan yang dikembalikan: nilai untuk setiap titik akhir menyertakan kunci akses tingkat fungsi.Seperti sebelumnya, gunakan alat uji HTTP Anda untuk memvalidasi URL ini di aplikasi fungsi Anda yang berjalan di Azure.
Menyebarkan ulang kode Anda
Anda dapat menjalankan azd up
perintah sebanyak yang Anda butuhkan untuk menyediakan sumber daya Azure dan menyebarkan pembaruan kode ke aplikasi fungsi Anda.
Catatan
File kode yang disebarkan selalu ditimpa oleh paket penyebaran terbaru.
Respons awal Anda terhadap azd
perintah dan variabel lingkungan apa pun yang dihasilkan oleh azd
disimpan secara lokal di lingkungan bernama Anda.
azd env get-values
Gunakan perintah untuk meninjau semua variabel di lingkungan Anda yang digunakan saat membuat sumber daya Azure.
Membersihkan sumber daya
Setelah selesai bekerja dengan aplikasi fungsi dan sumber daya terkait, Anda dapat menggunakan perintah ini untuk menghapus aplikasi fungsi dan sumber daya terkait dari Azure dan menghindari timbulnya biaya lebih lanjut:
azd down --no-prompt
Catatan
Opsi ini --no-prompt
menginstruksikan azd
untuk menghapus grup sumber daya Anda tanpa konfirmasi dari Anda.
Perintah ini tidak memengaruhi proyek kode lokal Anda.