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 tutorial ini Anda akan menggunakan aplikasi web statis untuk mengunggah file langsung ke blob Azure Storage menggunakan @azure/storage-blob paket . API menghasilkan token SAS setelah pola Valet Key, yang memungkinkan Anda mendelegasikan akses terbatas dengan aman tanpa mengekspos kredensial penuh.
Perhatian
Tutorial ini menunjukkan kepada Anda cara menghosting aplikasi fungsi Anda dalam Paket Konsumsi. Saat Anda berencana untuk mengamankan koneksi dengan menggunakan Microsoft Entra ID dan identitas terkelola, Anda sebaiknya mempertimbangkan untuk menghosting aplikasi Anda dalam paket Flex Consumption . Lapisan Konsumsi Flex mengoptimalkan keamanan dengan mendukung identitas yang terkelola dan integrasi jaringan virtual.
Prasyarat
- Langganan Azure; jika Anda belum memiliki langganan Azure, Anda dapat mendaftar untuk akun Azure gratis .
- akun GitHub untuk melakukan fork dan push ke repositori.
Arsitektur aplikasi
Arsitektur aplikasi ini mencakup dua sumber daya Azure:
- Azure Static Web Apps menghosting klien statis dan Azure Functions API yang ditautkan, dengan layanan yang mengelola sumber daya API secara otomatis.
- Azure Storage untuk penyimpanan blob.
Langkah | Deskripsi |
---|---|
1 | Pelanggan terhubung ke situs web yang dihasilkan secara statis. Situs web ini dihosting pada Azure Static Web Apps. |
2 | Pelanggan menggunakan situs web tersebut, untuk memilih file yang akan diunggah. Untuk tutorial ini, kerangka kerja front-end Vite React dan file yang diunggah adalah file gambar. |
3 | Situs web memanggil Azure Functions API sas untuk mendapatkan token SAS berdasarkan nama file yang tepat file untuk diunggah. API tanpa server menggunakan Azure Blob Storage SDK untuk membuat token SAS. API mengembalikan URL lengkap yang akan digunakan untuk mengunggah file, yang menyertakan token SAS sebagai string kueri.https://YOUR-STORAGE-NAME.blob.core.windows.net/YOUR-CONTAINER/YOUR-FILE-NAME?YOUR-SAS-TOKEN |
4 | Situs web front-end menggunakan URL token SAS untuk mengunggah file langsung ke Azure Blob Storage. |
Lingkungan lokal dan lingkungan pengembangan
Tutorial ini menggunakan lingkungan berikut:
- Pengembangan lokal dengan GitHub Codespaces atau Visual Studio Code.
- Buat dan sebarkan dengan GitHub Actions.
Fork repositori aplikasi sampel dengan GitHub
Tutorial ini menggunakan tindakan GitHub untuk menyebarkan aplikasi sampel ke Azure. Anda memerlukan akun GitHub dan fork repositori aplikasi sampel untuk menyelesaikan penyebaran tersebut.
- Di browser web, gunakan tautan berikut untuk memulai fork untuk akun Anda sendiri dari repositori sampel: Azure-Samples/azure-typescript-e2e-apps.
- Selesaikan langkah-langkah untuk mem-fork sampel dengan cabang utama saja.
Mengonfigurasi lingkungan pengembangan
Lingkungan kontainer pengembangan tersedia dengan seluruh dependensi yang diperlukan untuk menyelesaikan setiap latihan dalam proyek ini. Anda dapat menjalankan kontainer pengembangan di GitHub Codespaces atau secara lokal menggunakan Visual Studio Code.
GitHub Codespaces menjalankan kontainer pengembangan yang dikelola oleh GitHub dengan Visual Studio Code untuk Web sebagai antarmuka pengguna. Untuk lingkungan pengembangan yang paling mudah, gunakan GitHub Codespaces sehingga Anda memiliki alat dan dependensi pengembang yang benar yang telah diinstal sebelumnya untuk menyelesaikan modul pelatihan ini.
Penting
Semua akun GitHub dapat menggunakan Codespace hingga 60 jam gratis setiap bulan dengan 2 instans inti. Untuk informasi selengkapnya, lihat GitHub Codespaces bulanan yang disertakan penyimpanan dan jam inti.
Di browser web, pada fork GitHub Anda dari repositori sampel, mulai proses untuk membuat GitHub Codespace baru pada cabang
main
di fork Anda dengan memilih tombol CODE.Pada tab Codespaces, pilih elipsi
...
.Pilih + Baru dengan opsi untuk memilih kontainer pengembangan Codespace tertentu.
Pilih opsi berikut lalu pilih Buat codespace.
- Cabang:
main
- Konfigurasi Kontainer Dev:
Tutorial: Upload file to storage with SAS Token
- Wilayah: terima default
- Jenis mesin: terima default
- Cabang:
Tunggu hingga codespace dimulai. Proses startup ini dapat memakan waktu beberapa menit.
Buka terminal baru di codespace.
Periksa versi alat yang Anda gunakan dalam tutorial ini.
node --version npm --version func --version
Tutorial ini memerlukan versi berikut dari setiap alat, yang telah diinstal sebelumnya di lingkungan Anda:
Alat Versi Node.js ≥ 18 npm ≥ 9,5 Alat inti Azure Functions ≥ 4.5098 Tutup terminal.
Langkah-langkah yang tersisa dalam tutorial ini berlangsung dalam konteks kontainer pengembangan ini.
Pasang dependensi
Aplikasi sampel untuk tutorial ini ada di folder azure-upload-file-to-storage
. Anda tidak perlu menggunakan folder lain dalam proyek.
Di Visual Studio Code, buka terminal, dan pindah ke folder proyek.
cd azure-upload-file-to-storage
Pisahkan terminal sehingga Anda memiliki dua terminal, satu untuk aplikasi klien dan satu untuk aplikasi API.
Di salah satu terminal, jalankan perintah berikut untuk menginstal dependensi aplikasi API dan menjalankan aplikasi.
cd api && npm install
Di terminal lain, jalankan perintah untuk menginstal aplikasi klien .
cd app && npm install
Membuat sumber daya penyimpanan dengan ekstensi Visual Studio
Buat sumber daya Azure Storage untuk digunakan dengan aplikasi sampel. Penyimpanan digunakan untuk:
- Pemicu di aplikasi Azure Functions
- Penyimpanan objek biner besar (blob)
Navigasikan ke ekstensi Azure Storage.
Masuk ke Azure jika perlu.
Klik kanan pada langganan lalu pilih
Create Resource...
.Pilih Buat Akun Penyimpanan dari daftar.
Ikuti perintah menggunakan tabel berikut untuk memahami cara membuat sumber daya Storage Anda.
Harta benda Nilai Masukkan nama unik global untuk aplikasi web baru. Masukkan nilai unik seperti fileuploadstor
, untuk nama sumber daya Penyimpanan Anda.
Nama unik ini adalah nama sumber daya Anda yang digunakan di bagian berikutnya. Gunakan panjang maksimum 24 karakter alfanumerik. Anda memerlukan nama akun ini untuk digunakan nanti.Pilih lokasi untuk sumber daya baru. Gunakan lokasi yang direkomendasikan. Saat proses pembuatan aplikasi selesai, pemberitahuan muncul dengan informasi tentang sumber daya baru.
Mengonfigurasi CORS untuk Penyimpanan
Karena browser digunakan untuk mengunggah file, akun Azure Storage perlu mengonfigurasi CORS untuk mengizinkan permintaan lintas asal. Pengaturan CORS ini digunakan untuk tutorial ini untuk menyederhanakan langkah-langkah dan tidak dimaksudkan untuk menunjukkan praktik terbaik atau keamanan. Pelajari selengkapnya tentang CORS untuk Azure Storage.
Navigasikan ke ekstensi Azure Storage. Klik kanan pada sumber daya penyimpanan Anda dan pilih Buka di Portal.
Di bagian Pengaturan akun penyimpanan portal Microsoft Azure, pilih Berbagi sumber daya (CORS).
Gunakan properti berikut untuk mengatur CORS untuk tutorial ini.
- Asal yang diizinkan:
*
- Metode yang diizinkan: Semua kecuali patch
- Header yang diizinkan:
*
- Header yang diekspos:
*
- Usia maksimum: 86400
- Asal yang diizinkan:
Pilih Simpan.
Memberikan akses anonim ke penyimpanan
Setelah pengunggahan file, skenario tutorial memerlukan akses publik ke blob untuk dilihat. Untuk kesederhanaan, panduan ini memungkinkan akses anonim untuk file yang diunggah.
- Untuk mengaktifkan akses publik di portal Microsoft Azure, pilih halaman Gambaran Umum untuk akun penyimpanan Anda, di bagian Properti, pilih akses anonim Blob lalu pilih Dinonaktifkan.
- Pada halaman Konfigurasi, aktifkan Izinkan akses anonim Blob.
Membuat kontainer unggahan
Buat kontainer privat yang memiliki blob yang dapat dibaca secara publik.
Saat masih berada di akun penyimpanan di portal Azure, di bagian Penyimpanan Data, pilih Kontainer.
Pilih + Kontainer untuk membuat kontainer
upload
Anda dengan pengaturan berikut:- Nama:
upload
- Tingkat akses publik:
Blob
- Nama:
Pilih Buat.
Memberi diri Anda akses Data Blob
Saat membuat sumber daya, Anda tidak memiliki izin untuk melihat konten kontainer. Otorisasi ini dicadangkan hanya untuk peran IAM tertentu. Tambahkan akun Anda sehingga Anda dapat melihat blob dalam kontainer.
- Di akun penyimpanan portal Microsoft Azure, pilih Kontrol Akses (IAM).
- Pilih Tambahkan penetapan peran.
- Cari dan pilih Kontributor Data Blob Penyimpanan. Pilih Berikutnya.
- Pilih + Pilih anggota.
- Cari dan pilih akun Anda.
- Pilih Tinjau lalu tetapkan.
- Pilih kontainer lalu mengunggah kontainer. Anda harus dapat melihat bahwa tidak ada blob dalam kontainer, dan tidak ada kesalahan otorisasi.
Mendapatkan kredensial sumber daya Penyimpanan
Kredensial sumber daya Penyimpanan digunakan di aplikasi Azure Functions API untuk menyambungkan ke sumber daya Storage.
Saat masih berada di portal Microsoft Azure, di bagian Keamanan + jaringan, pilih kunci akses .
Salin kunci
Key
.Di Visual Studio Code, di folder
./workspaces/azure-typescript-e2e-apps/azure-upload-file-to-storage/api
, mengganti nama file darilocal.settings.json.sample
menjadilocal.settings.json
. File diabaikan oleh Git sehingga file tersebut tidak dimasukkan ke dalam kontrol sumber.Perbarui pengaturan untuk
local.settings.json
menggunakan tabel berikut ini.Harta benda Nilai Deskripsi Nama_Akun_Azure_Storage Nama akun Azure Storage, misalnya: fileuploadstor
.Digunakan dalam kode sumber untuk menyambungkan ke sumber daya Storage. Azure_Storage_AccountKey Kunci akun Azure Storage Digunakan dalam kode sumber untuk menyambungkan ke sumber daya Storage. AzureWebJobsStorage String koneksi untuk akun Azure Storage Digunakan oleh runtime Azure Functions untuk menyimpan status dan log.
Sepertinya Anda memasukkan kredensial akun yang sama dua kali, sekali sebagai kunci dan sekali sebagai string koneksi. Anda melakukannya, tetapi khusus untuk tutorial sederhana ini. Secara umum, aplikasi Azure Functions harus memiliki sumber daya Storage terpisah yang tidak digunakan kembali untuk tujuan lain. Saat Anda membuat sumber daya Azure Function nanti dalam tutorial, Anda tidak perlu mengatur nilai AzureWebJobsStorage untuk sumber daya cloud. Anda harus mengatur nilai Azure_Storage_AccountName dan Azure_Storage_AccountKey yang digunakan dalam kode sumber.
Menjalankan aplikasi API
Jalankan Aplikasi Fungsi untuk memastikan aplikasi berfungsi dengan benar sebelum menyebarkannya ke Azure.
Di terminal aplikasi API, jalankan perintah berikut untuk memulai aplikasi API.
npm run start
Tunggu hingga aplikasi Azure Functions dimulai. Anda akan mendapatkan pemberitahuan bahwa port aplikasi Azure Functions, 7071 sekarang tersedia. Anda juga akan melihat API yang tercantum di terminal untuk aplikasi API.
Functions: list: [POST,GET] http://localhost:7071/api/list sas: [POST,GET] http://localhost:7071/api/sas status: [GET] http://localhost:7071/api/status
Pilih tab Port di panel bawah, lalu klik kanan port 7071 dan pilih Visibilitas Port, kemudian pilih Publik.
Jika Anda tidak mengekspos aplikasi ini sebagai publik, Anda akan mendapatkan kesalahan saat menggunakan API dari aplikasi klien.
Untuk menguji bahwa API berfungsi dan terhubung ke penyimpanan, di tab Port di panel bawah, pilih ikon bola dunia di area Alamat Lokal untuk port 7071. Ini membuka browser web menuju aplikasi fungsi.
Tambahkan rute API ke bilah alamat URL:
/api/sas?container=upload&file=test.png
. Tidak masalah jika file belum ada dalam wadah. API membuat token SAS berdasarkan tempat Yang Anda inginkan untuk diunggah.Respons JSON akan terlihat seperti berikut ini:
{ "url":"https://YOUR-STORAGE-RESOURCE.blob.core.windows.net/upload/test.png?sv=2023-01-03&spr=https&st=2023-07-26T22%3A15%3A59Z&se=2023-07-26T22%3A25%3A59Z&sr=b&sp=w&sig=j3Yc..." }
Salin dasar URL API di bilah alamat browser (bukan URL token SAS di objek JSON) untuk digunakan pada langkah berikutnya. URL dasar adalah semua yang ada sebelum
/api/sas
. Anda akan menempelkan URL dasar ini ke dalam file variabel lingkungan aplikasi klien di bagian berikutnya.
Mengonfigurasi dan menjalankan aplikasi klien
Ganti nama file
./azure-upload-file-to-storage/app/.env.sample
menjadi.env
.Buka file
.env
dan tempelkan URL dasar dari bagian sebelumnya sebagai nilai untukVITE_API_SERVER
.Contoh untuk lingkungan Codespace mungkin terlihat seperti
VITE_API_SERVER=https://improved-space-fishstick-pgvxvxjpqgrh6qxp-7071.app.github.dev
Di terminal terpisah lainnya, mulai aplikasi klien dengan perintah berikut:
npm run dev
Tunggu hingga terminal mengembalikan pemberitahuan berikut bahwa aplikasi tersedia di port 5173.
VITE v4.4.4 ready in 410 ms ➜ Local: https://localhost:5173/ ➜ Network: use --host to expose ➜ press h to show help
Pilih tab Port di panel bawah lalu klik kanan port 5173 dan pilih ikon globe.
Sebaiknya Anda melihat aplikasi web.
Berinteraksi dengan aplikasi web:
- Pilih file gambar (*.jpg atau *.png) dari komputer lokal Anda untuk diunggah.
- Pilih tombol Dapatkan SAS untuk meminta token SAS dari aplikasi API. Respons menunjukkan URL lengkap yang akan digunakan untuk mengunggah file ke Storage.
- Pilih tombol Unggah untuk mengirim file gambar langsung ke Penyimpanan.
Aplikasi klien dan aplikasi API berhasil bekerja sama di lingkungan pengembang dalam kontainer.
Menerapkan perubahan kode
- Di Visual Studio Code, buka tab Kontrol Sumber.
- Pilih ikon + untuk mentahapkan semua perubahan. Perubahan ini hanya boleh menyertakan file package-lock.json baru untuk folder
app
danapi
untuk tutorial ini.
Menyebarkan aplikasi web statis ke Azure
Aplikasi Azure Functions menggunakan fitur pratinjau. Ini harus dikerahkan ke West US 2 agar berfungsi dengan baik.
Di Visual Studio Code, pilih penjelajah Azure.
Di Azure Explorer, klik kanan pada nama langganan lalu pilih
Create Resource...
.Pilih Buat Aplikasi Web Statis dari daftar.
Ikuti perintah menggunakan tabel berikut untuk memahami cara membuat sumber daya Static Web App Anda.
Harta benda Nilai Masukkan nama unik global untuk aplikasi web baru. Masukkan nilai unik seperti fileuploadstor
, untuk nama sumber daya Penyimpanan Anda.
Nama unik ini adalah nama sumber daya Anda yang digunakan di bagian berikutnya. Gunakan hanya karakter dan angka, hingga 24 panjangnya. Anda memerlukan nama akun ini untuk digunakan nanti.Pilih lokasi untuk sumber daya baru. Gunakan lokasi yang direkomendasikan. Ikuti perintah untuk memberikan informasi berikut:
Cepat Masuk Pilih grup sumber daya untuk sumber daya baru. Gunakan grup sumber daya yang Anda buat untuk sumber daya penyimpanan Anda. Masukkan nama untuk aplikasi web statis baru. Terima nama default. Pilih SKU Pilih SKU gratis untuk tutorial ini. Jika Anda sudah memiliki sumber daya Static Web App gratis di langganan Anda, pilih tingkat harga berikutnya. Pilih preset build untuk mengonfigurasi struktur proyek default. Pilih Kustom. Pilih lokasi kode aplikasi Anda azure-upload-file-to-storage/app
Pilih lokasi kode Azure Functions Anda azure-upload-file-to-storage/api
Masukkan jalur output build Anda... dist
nilai adalah jalur dari aplikasi Anda ke file statis (dihasilkan).Pilih lokasi untuk sumber daya baru. Pilih wilayah yang dekat dengan Anda. Setelah proses selesai, pop-up pemberitahuan akan ditampilkan. Pilih Tampilkan/Edit Alur Kerja.
Fork jarak jauh Anda memiliki file alur kerja baru untuk penerapan ke Static Web Apps. Tarik file tersebut ke lingkungan Anda dengan perintah berikut di terminal:
git pull origin main
Buka file alur kerja yang terletak di
/.github/workflows/
.Periksa bagian alur kerja khusus untuk aplikasi Web Statis tutorial ini seharusnya terlihat seperti:
###### Repository/Build Configurations - These values can be configured to match your app requirements. ###### # For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig app_location: "/azure-upload-file-to-storage/app" # App source code path api_location: "/azure-upload-file-to-storage/api" # Api source code path - optional output_location: "dist" # Built app content directory - optional ###### End of Repository/Build Configurations ######
Pergi ke fork GitHub Anda untuk sampel,
https://github.com/<YOUR-ACCOUNT>/azure-typescript-e2e-apps/actions
, untuk memverifikasi apakah aksi build dan deploy, yang bernamaAzure Static Web Apps CI/CD
, berhasil diselesaikan. Tindakan ini mungkin perlu waktu beberapa menit untuk diselesaikan.Buka portal Microsoft Azure untuk aplikasi Anda dan lihat bagian API dari Pengaturan . Nama Sumber Daya Backend di lingkungan produksi
(managed)
menunjukkan API Anda berhasil disebarkan.Pilih (terkelola) untuk melihat daftar API yang dimuat di aplikasi:
- daftar
- Sas
- keadaan
Buka halaman Gambaran Umum untuk menemukan URL untuk aplikasi yang Anda sebarkan.
Penyebaran aplikasi selesai.
Mengonfigurasi API dengan nama dan kunci sumber daya Storage
Aplikasi ini memerlukan nama dan kunci sumber daya Azure Storage sebelum API berfungsi dengan benar. Saat disebarkan ke Azure Static Web Apps, aplikasi klien dan API dihosting dari domain yang sama, menghilangkan kebutuhan untuk mengatur variabel lingkungan aplikasi klien VITE_API_SERVER.
Masih di Azure Explorer, klik kanan pada sumber daya Static Web App dan pilih Buka di Portal.
Pilih Konfigurasi di bagian Pengaturan.
Tambahkan pengaturan aplikasi menggunakan tabel berikut.
Harta benda Nilai Deskripsi Nama_Akun_Azure_Storage Nama akun Azure Storage, misalnya: fileuploadstor
.Digunakan dalam kode sumber untuk menyambungkan ke sumber daya Storage. Azure_Storage_AccountKey Kunci akun Azure Storage Digunakan dalam kode sumber untuk menyambungkan ke sumber daya Storage. Pilih Simpan pada halaman Konfigurasi untuk menyimpan kedua pengaturan.
Menggunakan aplikasi web statis yang disebarkan Azure
Verifikasi penyebaran dan konfigurasi berhasil dengan menggunakan situs web.
- Di Visual Studio Code, klik kanan aplikasi web Statis Anda dari penjelajah Azure dan pilih Telusuri situs.
- Di jendela browser web baru, pilih Pilih File lalu pilih file gambar (*.png atau *.jpg) untuk diunggah.
- Pilih Dapatkan token sas. Tindakan ini meneruskan nama file ke API dan menerima URL token SAS yang diperlukan untuk mengunggah file.
- Pilih Unggah file untuk menggunakan URL token SAS untuk mengunggah file. Browser menampilkan gambar mini dan URL file yang diunggah.
Membersihkan sumber daya
Di Visual Studio Code, gunakan penjelajah Azure untuk Grup Sumber Daya. Klik kanan pada grup sumber daya Anda lalu pilih Hapus.
Tindakan ini menghapus semua sumber daya dalam grup, termasuk sumber daya aplikasi Storage dan Static Web Anda.
Pemecahan masalah
Laporkan masalah dengan sampel ini di repositori GitHub. Sertakan hal-hal berikut dengan masalah:
- URL dari artikel
- Langkah atau konteks dalam artikel yang bermasalah
- Lingkungan pengembangan Anda
Contoh kode
- Repositori GitHub: azure-upload-file-to-storage
Konten terkait
- Azure Blob Storage Dokumentasi
- @azure/storage-blob
- Aplikasi Web Statis Azure