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 artikel ini, Anda menggunakan Azure Developer CLI (azd) untuk membuat fungsi pemicu Timer untuk menjalankan tugas terjadwal di Azure Functions. Setelah memverifikasi kode secara lokal, Anda menyebarkannya ke aplikasi fungsi tanpa server baru yang Anda buat yang berjalan dalam paket Konsumsi Flex di Azure Functions.
Sumber proyek menggunakan azd untuk membuat aplikasi fungsi dan sumber daya terkait dan untuk menyebarkan 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 Anda dapat menyelesaikan artikel ini dan hanya dikenakan biaya kecil dengan beberapa sen USD atau kurang di akun Azure Anda.
Penting
Saat menjalankan tugas terjadwal didukung untuk semua bahasa, skenario mulai cepat ini saat ini hanya memiliki contoh untuk C#, Python, dan TypeScript. Untuk menyelesaikan panduan cepat ini, di bagian atas artikel, pilih salah satu bahasa yang didukung.
Prasyarat
- Node.js 22 atau lebih tinggi
Python 3.11 atau lebih tinggi
Sebuah akun Azure dengan langganan aktif. Buat akun secara gratis.
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-timer -e scheduled-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. Nama lingkungan juga digunakan dalam nama grup sumber daya yang Anda buat di Azure.Jalankan perintah ini untuk menavigasi ke folder aplikasi:
cd srcBuat file bernama local.settings.json di
srcfolder yang berisi data JSON ini:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated", "TIMER_SCHEDULE": "*/30 * * * * *" } }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-timer -e scheduled-tsPerintah 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. Nama lingkungan juga digunakan dalam nama grup sumber daya yang Anda buat di Azure.Buat file bernama local.settings.json di
srcfolder yang berisi data JSON ini:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node", "TIMER_SCHEDULE": "*/30 * * * * *" } }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-azd-timer -e scheduled-pyPerintah 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. Nama lingkungan juga digunakan dalam nama grup sumber daya yang Anda buat di Azure.Buat file bernama local.settings.json di
srcfolder yang berisi data JSON ini:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "python", "TIMER_SCHEDULE": "*/30 * * * * *" } }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 start
Jalankan perintah ini dari folder aplikasi Anda di terminal atau prompt perintah:
npm install npm start
Ketika host Functions dimulai di folder proyek lokal Anda, host tersebut menulis informasi tentang fungsi yang dipicu Timer Anda ke output terminal. Anda akan melihat fungsi yang dipicu Timer Anda dijalankan berdasarkan jadwal yang ditentukan dalam kode Anda.
Jadwal default adalah
*/30 * * * * *, yang berjalan setiap 30 detik.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 fungsi pemicu Timer:
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Extensions.Timer;
using Microsoft.Extensions.Logging;
namespace Company.Function
{
public class timerFunction
{
private readonly ILogger _logger;
public timerFunction(ILoggerFactory loggerFactory)
{
_logger = loggerFactory.CreateLogger<timerFunction>();
}
[Function("timerFunction")]
public void Run(
[TimerTrigger("%TIMER_SCHEDULE%", RunOnStartup = true)] TimerInfo myTimer,
FunctionContext context
)
{
_logger.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
if (myTimer.IsPastDue)
{
_logger.LogWarning("The timer is running late!");
}
}
}
}
Anda dapat meninjau proyek templat lengkap di sini.
import { app, InvocationContext, Timer } from '@azure/functions';
export async function timerFunction(myTimer: Timer, context: InvocationContext): Promise<void> {
context.log(`TypeScript Timer trigger function executed at: ${new Date().toISOString()}`);
if (myTimer.isPastDue) {
context.warn("The timer is running late!");
}
}
app.timer('timerFunction', {
schedule: '%TIMER_SCHEDULE%',
runOnStartup: true,
handler: timerFunction
});
Anda dapat meninjau proyek templat lengkap di sini.
import datetime
import logging
import azure.functions as func
# Create the function app instance
app = func.FunctionApp()
@app.timer_trigger(schedule="%TIMER_SCHEDULE%",
arg_name="mytimer",
run_on_startup=True,
use_monitor=False)
def timer_function(mytimer: func.TimerRequest) -> None:
utc_timestamp = datetime.datetime.now(datetime.timezone.utc).isoformat()
logging.info(f'Python timer trigger function executed at: {utc_timestamp}')
if mytimer.past_due:
logging.warning('The timer is running late!')
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 perintah azd up untuk mengimplementasikan kode Anda ke dalam aplikasi fungsi baru dengan paket Flex Consumption di Azure.
Petunjuk / Saran
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
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:
Pengaturan 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. Perintah menggunakan
azd uprespons 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.
Verifikasi implementasi
Setelah penyebaran selesai, fungsi pemicu Timer Anda secara otomatis mulai berjalan di Azure berdasarkan jadwalnya.
Di portal Microsoft Azure, buka aplikasi fungsi baru Anda.
Pilih Aliran log dari menu sebelah kiri untuk memantau eksekusi fungsi Anda secara real time.
Anda akan melihat entri log yang menunjukkan fungsi pemicu Timer Anda yang dijalankan sesuai dengan jadwalnya.
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.
Nota
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, gunakan perintah ini untuk menghapus aplikasi fungsi dan sumber daya terkait dari Azure dan hindari menimbulkan biaya lebih lanjut:
azd down --no-prompt
Nota
Opsi ini --no-prompt menginstruksikan azd untuk menghapus grup sumber daya Anda tanpa konfirmasi dari Anda.
Perintah ini tidak memengaruhi proyek kode lokal Anda.