Membuat Azure Functions kontainer pertama Anda
Dalam artikel ini, Anda membuat aplikasi fungsi yang berjalan di kontainer Linux dan menyebarkannya ke Azure Functions.
Menyebarkan kode fungsi Anda ke Azure Functions dalam kontainer memerlukan paket Premium atau hosting paket Khusus (App Service). Menyelesaikan artikel ini dikenakan biaya beberapa dolar AS di akun Azure Anda, yang dapat Anda minimalkan dengan membersihkan sumber daya setelah selesai.
Opsi lain untuk menyebarkan kontainer aplikasi fungsi Anda ke Azure meliputi:
Azure Container Apps: untuk mempelajari selengkapnya, lihat Menyebarkan kontainer ke aplikasi Azure Container.
Azure Arc (saat ini dalam pratinjau): untuk mempelajari selengkapnya, lihat Menyebarkan kontainer ke Azure Arc.
Memilih bahasa pengembangan Anda
Pertama, Anda menggunakan alat Azure Functions untuk membuat kode proyek Anda sebagai aplikasi fungsi dalam kontainer Docker menggunakan gambar dasar Linux khusus bahasa. Pastikan untuk memilih bahasa pilihan Anda di bagian atas artikel.
Core Tools secara otomatis menghasilkan Dockerfile untuk proyek Anda yang menggunakan versi terbaru dari gambar dasar yang benar untuk bahasa fungsi Anda. Anda harus memperbarui kontainer Anda secara teratur dari gambar dasar terbaru dan menyebarkan ulang dari versi kontainer Anda yang diperbarui. Untuk informasi selengkapnya, lihat Membuat aplikasi fungsi dalam kontainer.
Prasyarat
Sebelum memulai, Anda harus memiliki persyaratan berikut:
Instal Azure Functions Core Tools versi 4.0.5198, atau versi yang lebih baru.
- Instal Azure Functions Core Tools versi 4.x.
- Instal versi Node.js yang didukung oleh Azure Functions.
- Instal versi Python yang didukung oleh Azure Functions.
- Instal SDK .NET 6.
Instal versi Java Developer Kit yang didukung oleh Azure Functions.
Instal Apache Maven versi 3.0 atau lebih tinggi.
- Azure CLI versi 2.4 atau versi yang lebih baru.
Jika Anda tidak memiliki Langganan Azure, buat Akun gratis Azure sebelum memulai.
Untuk menerbitkan gambar aplikasi fungsi kontainer yang Anda buat ke registri kontainer, Anda memerlukan ID Docker dan Docker yang berjalan di komputer lokal Anda. Jika Anda tidak memiliki ID Docker, Anda dapat membuat akun Docker.
Anda juga perlu menyelesaikan bagian Buat registri kontainer dari mulai cepat Container Registry untuk membuat instans registri. Catat nama server masuk Anda yang sepenuhnya memenuhi syarat.
Membuat dan mengaktifkan lingkungan virtual
Di folder yang sesuai, jalankan perintah berikut untuk membuat dan mengaktifkan lingkungan virtual bernama .venv
. Pastikan untuk menggunakan salah satu versi Python yang didukung oleh Azure Functions.
python -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
Anda menjalankan semua perintah berikutnya di lingkungan virtual yang diaktifkan ini.
Membuat dan menguji proyek fungsi lokal
Pada prompt terminal atau perintah, jalankan perintah berikut ini untuk bahasa yang telah dipilih untuk membuat proyek aplikasi fungsi pada folder saat ini:
func init --worker-runtime dotnet-isolated --docker
func init --worker-runtime node --language javascript --docker
func init --worker-runtime powershell --docker
func init --worker-runtime python --docker
func init --worker-runtime node --language typescript --docker
Dalam folder kosong, jalankan perintah berikut ini untuk menghasilkan proyek Azure Functions dari archetype Maven:
mvn archetype:generate -DarchetypeGroupId=com.microsoft.azure -DarchetypeArtifactId=azure-functions-archetype -DjavaVersion=8 -Ddocker
Parameter -DjavaVersion
memberi tahu runtime Functions versi Java mana yang akan digunakan. Gunakan -DjavaVersion=11
jika Anda ingin fungsi Anda berjalan di Java 11. Saat Anda tidak menentukan -DjavaVersion
, Maven default ke Java 8. Untuk informasi selengkapnya, lihat versi Java.
Penting
Variabel lingkungan JAVA_HOME
harus diatur ke lokasi penginstalan versi JDK yang benar untuk menyelesaikan artikel ini.
Maven meminta nilai yang diperlukan untuk menyelesaikan pembuatan proyek pada penyebaran. Ikuti perintahnya dan berikan informasi berikut:
Prompt | Nilai | Deskripsi |
---|---|---|
groupId | com.fabrikam |
Nilai yang secara unik mengidentifikasi proyek Anda dari semua proyek, mengikuti aturan penamaan paket untuk Java. |
artifactId | fabrikam-functions |
Nilai yang merupakan nama jar, tanpa nomor versi. |
versi | 1.0-SNAPSHOT |
Harap pilih nilai default. |
package | com.fabrikam.functions |
Nilai yang merupakan paket Java untuk kode fungsi yang dihasilkan. Gunakan default. |
Ketik Y
atau tekan Enter untuk mengonfirmasi.
Maven membuat file proyek di folder baru dengan nama artifactId, yang dalam contoh ini merupakan fabrikam-functions
.
Opsi ini --docker
menghasilkan Dockerfile untuk proyek, yang menentukan kontainer yang sesuai untuk digunakan dengan Azure Functions dan runtime yang dipilih.
Navigasi ke folder proyek:
cd fabrikam-functions
Gunakan perintah berikut ini untuk menambahkan fungsi ke proyek Anda, dengan argumen --name
merupakan nama unik fungsi Anda dan argumen --template
menentukan pemicu fungsi. func new
membuat file kode C# dalam proyek Anda.
func new --name HttpExample --template "HTTP trigger"
Gunakan perintah berikut ini untuk menambahkan fungsi ke proyek Anda, dengan argumen --name
merupakan nama unik fungsi Anda dan argumen --template
menentukan pemicu fungsi. func new
membuat subfolder yang cocok dengan nama fungsi yang berisi file konfigurasi bernama function.json.
func new --name HttpExample --template "HTTP trigger"
Untuk menguji fungsi secara lokal, harap mulai host runtime Azure Functions lokal pada akar folder proyek.
func start
func start
npm install
npm start
mvn clean package
mvn azure-functions:run
Setelah Anda melihat HttpExample
titik akhir yang ditulis ke output, navigasikan ke titik akhir tersebut. Anda akan melihat pesan selamat datang dalam output respons.
Setelah Anda melihat titik akhir yang HttpExample
ditulis ke output, navigasikan ke http://localhost:7071/api/HttpExample?name=Functions
. Browser harus menampilkan pesan "halo" yang menghasilkan Functions
, yaitu nilai yang diberikan ke parameter kueri name
.
Tekan Ctrl+C (Command+C di macOS) untuk menghentikan host.
Membangun gambar kontainer dan memverifikasi secara lokal
(Opsional) Memeriksa Dockerfile di akar folder proyek. Dockerfile menjelaskan lingkungan yang dibutuhkan untuk menjalankan aplikasi fungsi di Linux. Daftar lengkap gambar dasar yang didukung untuk Azure Functions dapat ditemukan di halaman gambar dasar Azure Functions.
Di folder proyek akar, jalankan perintah docker build, dan berikan nama azurefunctionsimage
dan tag v1.0.0
. Ganti <DOCKER_ID>
dengan ID akun Docker Hub Anda. Perintah ini menyusun gambar Docker untuk kontainer.
docker build --tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 .
Ketika perintah selesai, Anda dapat menjalankan kontainer baru secara lokal.
Untuk memverifikasi build, jalankan gambar dalam kontainer lokal menggunakan perintah jalankan docker, ganti <DOCKER_ID>
lagi dengan ID akun Docker Hub Anda, dan tambahkan argumen port sebagai -p 8080:80
:
docker run -p 8080:80 -it <DOCKER_ID>/azurefunctionsimage:v1.0.0
Setelah gambar berjalan pada kontainer lokal, telusuri ke http://localhost:8080/api/HttpExample
, yang akan menampilkan pesan sapaan yang sama dengan sebelumnya. Karena fungsi yang terpicu HTTP yang telah Anda buat menggunakan otorisasi anonim, Anda dapat memanggil fungsi yang berjalan di kontainer tanpa harus mendapatkan kunci akses. Untuk informasi selengkapnya, lihat kunci otorisasi.
Setelah gambar berjalan dalam kontainer lokal, telusuri ke http://localhost:8080/api/HttpExample?name=Functions
, yang akan menampilkan pesan "halo" yang sama dengan sebelumnya. Karena fungsi yang terpicu HTTP yang telah Anda buat menggunakan otorisasi anonim, Anda dapat memanggil fungsi yang berjalan di kontainer tanpa harus mendapatkan kunci akses. Untuk informasi selengkapnya, lihat kunci otorisasi.
Setelah memverifikasi aplikasi fungsi di kontainer, tekan Ctrl+C (Command+C di macOS) untuk menghentikan eksekusi.
Menerbitkan gambar kontainer ke registri
Untuk membuat gambar kontainer Anda tersedia untuk penyebaran ke lingkungan hosting, Anda harus mendorongnya ke registri kontainer.
Azure Container Registry adalah layanan registri privat untuk membangun, menyimpan, dan mengelola gambar kontainer dan artefak terkait. Anda harus menggunakan layanan registri privat untuk menerbitkan kontainer Anda ke layanan Azure.
Gunakan perintah ini untuk masuk ke instans registri Anda menggunakan kredensial Azure Anda saat ini:
az acr login --name <REGISTRY_NAME>
Di perintah sebelumnya, ganti
<REGISTRY_NAME>
dengan nama instans Container Registry Anda.Gunakan perintah ini untuk menandai gambar Anda dengan nama server masuk registri Anda yang sepenuhnya memenuhi syarat:
docker tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 <LOGIN_SERVER>/azurefunctionsimage:v1.0.0
Ganti
<LOGIN_SERVER>
dengan nama server masuk registri Anda yang sepenuhnya memenuhi syarat dan<DOCKER_ID>
dengan ID Docker Anda.Gunakan perintah ini untuk mendorong kontainer ke instans registri Anda:
docker push <LOGIN_SERVER>/azurefunctionsimage:v1.0.0
Membuat sumber daya Azure pendukung untuk fungsi Anda
Sebelum dapat menyebarkan kontainer ke Azure, Anda perlu membuat tiga sumber daya:
- Grup sumber daya, yang merupakan kontainer logis untuk sumber daya terkait.
- Akun penyimpanan, yang digunakan untuk mempertahankan status dan informasi lain tentang fungsi Anda.
- Aplikasi fungsi, menyediakan lingkungan untuk menjalankan kode fungsi Anda. Aplikasi fungsi memetakan proyek fungsi lokal Anda dan memungkinkan Anda mengelompokkan fungsi sebagai unit logis untuk pengelolaan, penyebaran, dan berbagi sumber daya yang lebih mudah.
Gunakan perintah berikut untuk membuat item ini. Azure CLI dan PowerShell didukung. Untuk membuat sumber daya Azure menggunakan Azure PowerShell, Anda juga memerlukan modul Az PowerShell, versi 5.9.0 atau yang lebih baru.
Jika Anda belum melakukannya, harap masuk ke Azure.
az login
Perintah memasukkan
az login
Anda ke akun Azure Anda.Buat grup sumber daya bernama
AzureFunctionsContainers-rg
di wilayah pilihan Anda.az group create --name AzureFunctionsContainers-rg --location <REGION>
Perintah
az group create
membuat grup sumber daya. Dalam perintah di atas, ganti<REGION>
dengan wilayah yang dekat dengan wilayah Anda, dan menggunakan kode wilayah yang tersedia yang ditampilkan dari perintah lokasi daftar akun az.Buat akun penyimpanan tujuan umum di grup sumber daya dan wilayah Anda.
az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group AzureFunctionsContainers-rg --sku Standard_LRS
Perintah
az storage account create
membuat akun penyimpanan.Di contoh sebelumnya, ganti
<STORAGE_NAME>
dengan nama yang sesuai untuk Anda dan unik di Azure Storage. Nama harus terdiri dari 3 hingga 24 karakter, angka dan huruf kecil saja.Standard_LRS
menentukan akun tujuan umum yang didukung oleh Functions.Gunakan perintah untuk membuat paket Premium untuk Azure Functions yang dinamai
myPremiumPlan
dalam tingkat harga Elastic Premium 1 (--sku EP1
), di<REGION>
Anda, dan dalam kontainer Linux (--is-linux
).az functionapp plan create --resource-group AzureFunctionsContainers-rg --name myPremiumPlan --location <REGION> --number-of-workers 1 --sku EP1 --is-linux
Kami menggunakan paket Premium di sini, yang dapat menskalakan sesuai kebutuhan. Untuk informasi selengkapnya mengenai paket hosting, lihat Perbandingan paket hosting Azure Functions. Untuk informasi selengkapnya mengenai cara perhitungan biaya, lihat Halaman harga Azure Functions.
Perintah ini juga membuat instans Azure Application Insights terkait dalam grup sumber daya yang sama, yang dengannya Anda dapat memantau aplikasi fungsi dan melihat log. Untuk mengetahui informasi selengkapnya, lihat Memantau Azure Functions. Instans tidak dikenakan biaya sampai Anda mengaktifkannya.
Membuat dan mengonfigurasi aplikasi fungsi di Azure dengan gambar
Aplikasi fungsi di Azure mengelola eksekusi fungsi Anda dalam paket hosting Azure Functions Anda. Di bagian ini, Anda menggunakan sumber daya Azure dari bagian sebelumnya untuk membuat aplikasi fungsi dari gambar di registri kontainer dan mengonfigurasinya dengan string koneksi ke Azure Storage.
Buat aplikasi fungsi menggunakan perintah berikut, tergantung pada registri kontainer Anda:
az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --resource-group AzureFunctionsContainers-rg --plan myPremiumPlan --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.0 --registry-username <USERNAME> --registry-password <SECURE_PASSWORD>
Dalam contoh berikut, ganti
<STORAGE_NAME>
dengan nama yang telah Anda gunakan untuk akun penyimpanan di bagian sebelumnya. Selain itu, ganti<APP_NAME>
dengan nama unik global yang sesuai untuk Anda dan<DOCKER_ID>
atau<LOGIN_SERVER>
dengan ID akun Docker Hub atau server Container Registry Anda. Saat Anda menyebarkan dari registri kontainer kustom, nama gambar menunjukkan URL registri.Saat pertama kali membuat aplikasi fungsi, aplikasi ini akan menarik gambar awal dari Docker Hub Anda. Anda juga dapat Mengaktifkan penyebaran berkelanjutan ke Azure dari registri kontainer Anda.
Tip
Anda dapat menggunakan
DisableColor
pengaturan pada file host.json untuk mencegah karakter kontrol ANSI ditulis pada log kontainer.Gunakan perintah berikut untuk mendapatkan string koneksi untuk akun penyimpanan yang telah Anda buat:
az storage account show-connection-string --resource-group AzureFunctionsContainers-rg --name <STORAGE_NAME> --query connectionString --output tsv
string koneksi untuk akun penyimpanan dikembalikan dengan menggunakan
az storage account show-connection-string
perintah .Ganti
<STORAGE_NAME>
dengan nama akun penyimpanan yang dibuat sebelumnya.Gunakan perintah berikut ini untuk menambahkan pengaturan ke aplikasi fungsi:
az functionapp config appsettings set --name <APP_NAME> --resource-group AzureFunctionsContainers-rg --settings AzureWebJobsStorage=<CONNECTION_STRING>
Perintah
az functionapp config appsettings set
membuat pengaturan.Dalam perintah ini, ganti
<APP_NAME>
dengan nama aplikasi fungsi Anda dan<CONNECTION_STRING>
dengan string koneksi dari langkah sebelumnya. Koneksi harus menjadi string panjang yang dikodekan yang dimulai denganDefaultEndpointProtocol=
.Fungsi ini sekarang dapat menggunakan string koneksi ini untuk mengakses akun penyimpanan.
Memverifikasi fungsi Anda di Azure
Dengan gambar yang disebarkan ke aplikasi fungsi Anda di Azure, Anda sekarang dapat memanggil fungsi melalui permintaan HTTP.
Jalankan perintah berikut
az functionapp function show
untuk mendapatkan URL fungsi baru Anda:az functionapp function show --resource-group AzureFunctionsContainers-rg --name <APP_NAME> --function-name HttpExample --query invokeUrlTemplate
Ganti
<APP_NAME>
dengan nama aplikasi fungsi Anda.
- Gunakan URL yang baru saja Anda peroleh untuk memanggil
HttpExample
titik akhir fungsi, menambahkan string?name=Functions
kueri .
- Gunakan URL yang baru saja Anda peroleh untuk memanggil
HttpExample
titik akhir fungsi.
Ketika Anda membuka URL ini, browser akan menampilkan output yang sama dengan saat Anda menjalankan fungsi secara lokal.
Membersihkan sumber daya
Jika Anda ingin terus bekerja dengan Azure Function menggunakan sumber daya yang Anda buat di artikel ini, Anda dapat membiarkan semua sumber daya tersebut di tempatnya. Karena Anda membuat Paket Premium untuk Azure Functions, Anda akan dikenakan satu atau dua USD per hari untuk biaya yang sedang berlangsung.
Untuk menghindari biaya yang sedang berlangsung, hapus grup sumber daya AzureFunctionsContainers-rg
untuk membersihkan semua sumber daya dalam grup tersebut:
az group delete --name AzureFunctionsContainers-rg