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 panduan kilat ini, Anda menggunakan alat baris perintah dari Azure Developer untuk membangun API web yang dapat diskalakan dengan endpoint 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 bawaan, paket Konsumsi Flex mengikuti model penagihan bayar untuk apa yang Anda gunakan, yang berarti menyelesaikan panduan ini dikenakan biaya kecil berupa beberapa sen USD atau kurang di akun Azure Anda.
Prerequisites
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
JAVA_HOMElingkungan harus diatur ke lokasi penginstalan versi Java Development Kit (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
azd init Gunakan perintah untuk membuat proyek kode Azure Functions lokal dari templat.
Di terminal lokal atau prompt perintah Anda, jalankan perintah ini
azd initdi folder kosong:azd init --template functions-quickstart-dotnet-azd -e httpendpoint-dotnetPerintah ini menarik file proyek dari repositori templat dan menginisialisasi proyek di folder saat ini. Bendera
-emenetapkan nama untuk lingkungan saat ini. Diazd, lingkungan 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
httpfolder aplikasi:cd httpBuat file bernama local.settings.json di
httpfolder 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 initdi folder kosong:azd init --template azure-functions-java-flex-consumption-azd -e httpendpoint-javaPerintah ini menarik file proyek dari repositori templat dan menginisialisasi proyek di folder saat ini. Bendera
-emenetapkan nama untuk lingkungan saat ini. Diazd, lingkungan 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
httpfolder aplikasi:cd httpBuat file bernama local.settings.json di
httpfolder 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 initdi folder kosong:azd init --template functions-quickstart-javascript-azd -e httpendpoint-jsPerintah ini menarik file proyek dari repositori templat dan menginisialisasi proyek di folder akar. Bendera
-emenetapkan nama untuk lingkungan saat ini. Diazd, lingkungan 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 initdi folder kosong:azd init --template functions-quickstart-powershell-azd -e httpendpoint-psPerintah ini menarik file proyek dari repositori templat dan menginisialisasi proyek di folder akar. Bendera
-emenetapkan nama untuk lingkungan saat ini. Diazd, lingkungan 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
srcfolder aplikasi:cd srcBuat file bernama local.settings.json di
srcfolder 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 initdi folder kosong:azd init --template functions-quickstart-typescript-azd -e httpendpoint-tsPerintah ini menarik file proyek dari repositori templat dan menginisialisasi proyek di folder akar. Bendera
-emenetapkan nama untuk lingkungan saat ini. Diazd, lingkungan mempertahankan konteks penyebaran unik untuk aplikasi Anda, dan Anda dapat menentukan lebih dari satu. Nama lingkungan 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 initdi folder kosong:azd init --template functions-quickstart-python-http-azd -e httpendpoint-pyPerintah ini menarik file proyek dari repositori templat dan menginisialisasi proyek di folder akar. Bendera
-emenetapkan nama untuk lingkungan saat ini. Diazd, lingkungan mempertahankan konteks penyebaran unik untuk aplikasi Anda, dan Anda dapat menentukan lebih dari satu. Nama lingkungan 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 menginstal 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 startmvn clean package mvn azure-functions:runnpm install func startnpm install npm startSaat host Functions dimulai di folder proyek lokal Anda, host tersebut menulis titik akhir URL fungsi yang dipicu HTTP Anda ke output terminal.
Note
Karena otorisasi kunci akses tidak diberlakukan saat berjalan secara lokal, URL fungsi yang dikembalikan tidak menyertakan nilai kunci akses dan Anda tidak memerlukannya untuk memanggil fungsi Anda.
Di peramban Anda, buka
httpgetalamat akhir, yang akan terlihat seperti URL ini:Dari terminal baru atau jendela prompt perintah, jalankan perintah ini
curluntuk mengirim permintaan POST dengan payload JSON kehttpposttitik akhir: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"Perintah ini membaca data payload JSON dari
testdata.jsonfile proyek. Anda dapat menemukan contoh kedua permintaan HTTP dalamtest.httpfile proyek.Setelah selesai, tekan Ctrl+C di jendela terminal untuk menghentikan
func.exeproses host.
- Jalankan
deactivateuntuk 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.
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 (dalam infra folder) yang azd menggunakan untuk membuat penyebaran aman ke rencana konsumsi Flex yang mengikuti praktik terbaik.
Jalankan perintah ini untuk membuat
azdsumber daya Azure yang diperlukan di Azure dan menyebarkan proyek kode Anda ke aplikasi fungsi baru:azd upFolder akar berisi file definisi yang
azure.yamldiperlukan olehazd.Jika Anda belum masuk, Anda diminta untuk mengautentikasi dengan akun Azure Anda.
Saat diminta, berikan parameter penyebaran yang diperlukan ini:
Parameter Description 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. vnetEnabled Pilih False. Saat diatur ke True, penyebaran membuat aplikasi fungsi Anda di jaringan virtual yang baru. Perintah
azd upmenggunakan respons Anda terhadap petunjuk ini bersama dengan file konfigurasi Bicep untuk menyelesaikan tugas-tugas penyebaran berikut: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)
- (Opsi) 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 dengan 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-keysPerintah
azd env get-valuemendapatkan nama aplikasi fungsi Anda dari lingkungan lokal. Saat Anda menggunakan opsi--show-keysdenganfunc azure functionapp list-functions, URL Pemanggilan: yang diperoleh untuk setiap titik akhir mencakup 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
Jalankan azd up perintah sebanyak yang Anda butuhkan untuk menyediakan sumber daya Azure Anda dan menyebarkan pembaruan kode ke aplikasi fungsi Anda.
Note
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 yang Anda gunakan saat membuat sumber daya Azure.
Membersihkan sumber daya
Setelah selesai bekerja dengan aplikasi fungsi dan sumber daya terkait, gunakan perintah ini untuk menghapus aplikasi fungsi dan sumber daya terkait dari Azure dan hindari menimbulkan biaya lebih lanjut:
azd down --no-prompt
Note
Opsi ini --no-prompt menginstruksikan azd untuk menghapus grup sumber daya Anda tanpa konfirmasi dari Anda.
Perintah ini tidak memengaruhi proyek kode lokal Anda.