Bagikan melalui


Mulai cepat: Membuat dan menyebarkan fungsi ke Azure Functions menggunakan Azure Developer CLI

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

  • 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.

  1. 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. Di azd, 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.

  2. Jalankan perintah ini untuk menavigasi ke http folder aplikasi:

    cd http
    
  3. 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.

  1. 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. Di azd, 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.

  2. Jalankan perintah ini untuk menavigasi ke http folder aplikasi:

    cd http
    
  3. 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.

  1. 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. Di azd, 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.

  2. 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.

  1. 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. Di azd, 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.

  2. Jalankan perintah ini untuk menavigasi ke src folder aplikasi:

    cd src
    
  3. 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.

  1. 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. Di azd, 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.

  2. 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.

  1. 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. Di azd, 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.

  2. 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

  1. 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.

  2. Di browser Anda, navigasikan ke httpget titik akhir, yang akan terlihat seperti URL ini:

    http://localhost:7071/api/httpget

  3. Dari terminal baru atau jendela prompt perintah, jalankan perintah ini curl untuk mengirim permintaan POST dengan payload JSON ke httppost 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 dalam test.http file proyek.

  4. Setelah selesai, tekan Ctrl+C di jendela terminal untuk menghentikan func.exe proses host.

  1. 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.

  1. 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 oleh azd.

    Jika Anda belum masuk, Anda diminta untuk mengautentikasi dengan akun Azure Anda.

  2. 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.

  1. 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.

  2. Jalankan perintah ini untuk menyebarkan proyek kode Java yang dikompilasi ke sumber daya aplikasi fungsi baru di Azure menggunakan Core Tools:

    APP_NAME=$(azd env get-value AZURE_FUNCTION_NAME)
    func azure functionapp publish $APP_NAME
    

    Perintah azd env get-value mendapatkan nama aplikasi fungsi Anda dari lingkungan lokal, yang diperlukan untuk penyebaran menggunakan func 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.

  1. 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 oleh azd.

    Jika Anda belum masuk, Anda diminta untuk mengautentikasi dengan akun Azure Anda.

  2. 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.

  1. Di terminal lokal atau prompt perintah Anda, jalankan perintah ini untuk mendapatkan nilai titik akhir URL:

    SET APP_NAME=(azd env get-value AZURE_FUNCTION_NAME)
    func azure functionapp list-functions $APP_NAME --show-keys
    
    $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 dengan func azure functionapp list-functions berarti bahwa URL Pemanggilan yang dikembalikan: nilai untuk setiap titik akhir menyertakan kunci akses tingkat fungsi.

  2. 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.