Azure-docs: WEBSITE_CONTENTSHARE tidak boleh digunakan untuk mendukung

Dibuat pada 4 Agu 2019  ·  70Komentar  ·  Sumber: MicrosoftDocs/azure-docs

Hai, yang di sana,
Saya mengangkat kasus dukungan 119071321000245, di mana insinyur dukungan menyarankan bahwa WEBSITE_CONTENTSHARE tidak boleh disetel sama sekali dalam penerapan ARM, karena harus dikelola oleh runtime fungsi. Tidak mengatur tampaknya menghindari masalah di mana pertukaran yang tidak disengaja dapat terjadi selama pemindahan. (lihat informasi kasus untuk detailnya)

Jika ini adalah panduan resmi, haruskah kami menambahkan catatan di halaman ini agar orang tahu?

Juga, haruskah WEBSITE_CONTENTSHARE dikecualikan saat mengekspor template AppService? (melalui Portal atau PowerShell)


Detail Dokumen

Jangan edit bagian ini.

Pri1 assigned-to-author azure-functionsvc product-issue triaged

Komentar yang paling membantu

@paulbatum

  • Pada pembuatan awal sumber daya melalui ARM, WEBSITE_CONTENTSHARE harus disetel. Namun setelah pembuatan awal, pengaturan ini harus dihilangkan dari template ARM (karena jika disertakan, eksekusi lebih lanjut dari template ARM dapat menyebabkan pertukaran konten yang tidak diharapkan)

Anda benar-benar menyadari tujuan dari template ARM, bukan?

Perilaku itu sedang diperbaiki, tetapi mungkin perlu 1-2 bulan untuk keluar. Jadi sementara itu, panduan yang saya bagikan di atas (di mana Anda mengaturnya pada awalnya dan kemudian menghapusnya dari template ARM) berlaku.

Apa konfigurasi akhir yang diharapkan di sini?
Bisakah kita mendapatkan pengumuman di Azure/app-service-announcements dengan konfigurasi yang tepat dan timeline resmi setelah semua ini benar-benar digunakan?

Semua 70 komentar

@danielstocker Terima kasih banyak telah membawa ini menjadi perhatian kami. Saya telah menetapkan ini ke pimpinan layanan untuk diselidiki lebih lanjut dan akan membuat pembaruan ketika kami memiliki kejelasan yang lebih besar.

@Mike-Ubezzi-MSFT @mike-urnun-msft

Terima kasih telah menyelidiki ini.

Apakah Anda memerlukan informasi lebih lanjut untuk kemajuan ini?

@danielstocker dapatkah Anda memberikan lebih banyak latar belakang tentang apa masalah asli Anda yang mengarah pada penemuan ini? Saya tidak yakin untuk memahami dengan benar implikasi untuk mengaturnya dengan tidak benar (apa yang Anda sebutkan sebagai unintentional swap )

Hai @ggirard07 ,

Tidak masalah. Biarkan saya meringkas.
Ini awalnya muncul karena dokumentasi kami menyatakan bahwa WEBSITE_CONTENTSHARE diperlukan. (lihat di sini: https://docs.microsoft.com/en-us/azure/azure-functions/functions-infrastructure-as-code#windows)

Jika kita mengekspor template Functions dari Marketplace (mengekspor template pada halaman terakhir), kita mendapatkan WEBSITE_CONTENTSHARE sebagai pengaturan aplikasi standar. Jika kita menggunakan ini, maka situasi berikut dapat terjadi.

image

1) Kami menggunakan template ARM dan mendapatkan fungsi kosong dengan dua slot
2) Kami menyebarkan ke slot pementasan
3) Kami bertukar untuk membuat konten tersedia dalam produksi
4) SWAP YANG TIDAK DIINGINKAN saat template ARM digunakan kembali dan pengaturan aplikasi diterapkan kembali (ini bahkan terjadi selama penerapan ARM tambahan karena sumber daya pengaturan aplikasi selalu menimpa dan mengatur ulang pengaturan WEBSITE_CONTENTSHARE)
5) Rutin penerapan sekarang menyebarkan kode baru ke slot pementasan dan slot produksi kami kosong daripada berisi versi sebelumnya. Fungsi produksi kami "tidak sengaja" turun

Pelanggan dalam kasus khusus ini kemudian menunjuk ke artikel ini https://nascent.blog/2017/06/27/azure-functions-slots-arm-templates-snags-2-redeploy-causes-unwanted-swap/

Ini menunjukkan bahwa pengaturan harus ditetapkan sebagai pengaturan slot untuk memperbaiki perilaku. Meskipun ini memperbaiki perilaku dalam pengujian saya, tampaknya salah, karena seharusnya tidak berfungsi.

Di bawah ini adalah tabel dari apa yang terjadi dalam pengujian saya. (setelah menjadikannya pengaturan slot)
image

Persepsi saya (dan pelanggan) adalah bahwa slot tidak boleh bertukar sama sekali lagi, tetapi seperti yang dijelaskan dalam artikel, itu tetap berfungsi.

Saya mengangkat ini secara internal juga dan orang-orang menemukan perilaku yang tidak konsisten saat mengubah pengaturan aplikasi. (Karenanya mengapa ini disorot dalam kisi pengujian saya) Untuk rekan yang mengujinya, memperbarui pengaturan aplikasi, membuat pengaturan slot diterapkan kembali sehingga menyebabkan pertukaran yang tidak diinginkan.

Ini akhirnya (maaf tentang tanggapan yang panjang) membuat saya mengangkat kasus dukungan di mana hasilnya adalah "jangan atur pengaturan sama sekali".
Tes pribadi saya menunjukkan bahwa ini memperbaiki masalah, tetapi tidak ada panduan dalam dokumentasi untuk mengonfirmasi ini, oleh karena itu mengapa saya mengangkat item ini.

Semoga ini membantu.
Beri tahu saya jika ada yang tidak jelas.

@danielstocker benar-benar merupakan informasi penting, terutama untuk memahami cara kerja slot dan swapping untuk Fungsi vs aplikasi web tradisional dengan pekerjaan web.
Juga ini tidak dijelaskan baik dalam dokumentasi slot meskipun 'WEBSITE_CONTENTSHARE' memainkan peran penting di sini. Hanya ada satu tangkapan layar pada langkah 4 yang mewakilinya, di mana nilai-nilai itu dipotong untuk membuat segalanya lebih jelas ...

Hai @ggirard07 dan terima kasih telah membaca kecaman saya. Jadi apa jalan ke depan dari sini? :)

@ggirard07 @ggailey777 @mike-urnun-msft

Apakah lebih banyak informasi diperlukan untuk membuat beberapa kejelasan dokumentasi seputar perilaku ini? Saya bekerja dengan pelanggan yang mempertimbangkan untuk berhenti menggunakan slot fungsi karena mereka tidak yakin tentang panduan resmi seputar skenario ini.

Terima kasih atas bantuan Anda

@danielstocker Agar saya jelas tentang apa yang menurut Anda akan mengatasi masalah dokumentasi yang terkait dengan ini:

  • Hapus pengaturan penerapan WEBSITE_CONTENTSHARE dari sini .
  • Tambahkan catatan di artikel referensi bahwa WEBSITE_CONTENTSHARE hanya boleh disetel oleh runtime.

Apakah menurut Anda itu akan cukup?

cc. @mattchenderson

Hai @ggailey777
Ya saya pikir itu akan menjadi solusi yang bagus

Bukankah WEBSITE_CONTENTSHARE salah satu pengaturan aplikasi yang diperlukan saat menerapkan Aplikasi fungsi menggunakan ARM?

Bukankah WEBSITE_CONTENTSHARE salah satu pengaturan aplikasi yang diperlukan saat menerapkan Aplikasi fungsi menggunakan ARM?

Jika tidak diterapkan maka runtime akan menghasilkan satu untuk Anda, saya pikir.

Saya menggunakan ARM dengan rencana Konsumsi dan Aplikasi Fungsi dengan bagian _Microsoft.Web/sites/config_ bernama appsettings dan properti berikut

  • FUNCTIONS_EXTENSION_VERSION : "~2",
  • FUNCTIONS_WORKER_RUNTIME : "dotnet",
  • WEBSITE_CONTENTAZUREFILECONNECTIONSTRING : [
  • WEBSITE_NODE_DEFAULT_VERSION: 6.5.0

Deployment mengembalikan kesalahan berikut:

      "ErrorEntity": {
        "ExtendedCode": "01010",
        "MessageTemplate": "Required parameter {0} is missing.",
        "Parameters": [
          "WEBSITE_CONTENTSHARE"
        ],
        "Code": "BadRequest",
        "Message": "Required parameter WEBSITE_CONTENTSHARE is missing."

Setelah saya _juga_ menghapus parameter WEBSITE_CONTENTAZUREFILECONNECTIONSTRING, penerapan berjalan tanpa kesalahan. Jadi, tampaknya ada beberapa hubungan yang diperlukan antara kedua pengaturan tersebut.
Meskipun berhasil, penerapan ini membuat saya mengembara jika dan di mana fungsi (paket) dikerahkan secara fisik (dan jika kasus ini valid sejak awal).

Kami telah melihat perilaku persis yang telah dijelaskan oleh @tjgalama dan juga bertanya-tanya di mana file yang dibagikan dengan paket fungsi disimpan.

Aplikasi fungsi kami juga menyertakan fungsi yang dipicu timer, jadi kami menetapkan pengaturan AzureWebJobsStorage seperti yang disarankan : kami akan menebak/berharap runtime akan menggunakan string koneksi yang sama untuk (sekarang implisit) WEBSITE_CONTENTAZUREFILECONNECTIONSTRING , tetapi bukan itu masalahnya: di akun penyimpanan yang kami tentukan di sana, kami melihat wadah gumpalan azure-webjobs-hosts dan azure-webjobs-secrets , tetapi tidak ada pembagian file.

Saya telah memeriksa Kudu untuk mencari petunjuk dan sepertinya semua file yang perlu ada ada di sistem file (di mana pun itu, diperiksa di app-name.scm.azurewebsites.net/api/vfs/ ), tetapi tidak ada referensi ke salah satu pengaturan ( WEBSITE_CONTENTSHARE atau WEBSITE_CONTENTAZUREFILECONNECTIONSTRING ) harus dilihat di tab lingkungan ( appname.scm.azurewebsites.net/Env.cshtml ).

Mungkin penting untuk disebutkan, aplikasi kami disiapkan dengan WEBSITE_ENABLE_SYNC_UPDATE_SITE=True dan WEBSITE_RUN_FROM_PACKAGE=1 .
Aplikasi tampaknya berfungsi, tetapi kami benar-benar ingin kejelasan tentang hal ini, karena kami mem-porting layanan bisnis inti ke Azure Functions dan ingin mencari tahu yang ini sebelum diluncurkan ke produksi.

Mengikuti beberapa saran, kami telah menetapkan WEBSITE_CONTENTSHARE sebagai pengaturan slot untuk memastikan nilainya berbeda antara slot produksi dan staging. Hari ini, template ARM yang kami gunakan mulai gagal dengan 'WEBSITE_CONTENTSHARE' cannot be a slot setting. (walaupun saya mengkonfirmasi bahwa itu memang ditetapkan sebagai pengaturan slot di portal saat ini). Apakah sesuatu di sekitar perilaku ini berubah?

Kami telah memperhatikan masalah yang sama ini selama beberapa hari terakhir dan membutuhkan panduan tentang cara untuk melanjutkan. Kami juga telah mengikuti pendekatan pengaturan WEBSITE_CONTENTSHARE sebagai pengaturan slot untuk mengatasi masalah swap yang tidak disengaja tetapi sekarang tidak dapat digunakan karena kesalahan ini. Saya telah mencoba secara surut menghapus pengaturan ini dan WEBSITE_CONTENTAZUREFILECONNECTIONSTRING untuk beralih ke apa yang tampaknya merupakan pendekatan yang disarankan untuk tidak menggunakan keduanya, tetapi penerapan ini juga akan gagal.

Mengikuti beberapa saran, kami telah menetapkan WEBSITE_CONTENTSHARE sebagai pengaturan slot untuk memastikan nilainya berbeda antara slot produksi dan staging. Hari ini, template ARM yang kami gunakan mulai gagal dengan 'WEBSITE_CONTENTSHARE' cannot be a slot setting. (walaupun saya mengkonfirmasi bahwa itu memang ditetapkan sebagai pengaturan slot di portal saat ini). Apakah sesuatu di sekitar perilaku ini berubah?

Hapus dan biarkan runtime memilih nama. Ini adalah bagaimana saya melakukannya.

@jeffhollan, bisakah Anda memberi kami kejelasan?

Ini mengatakan bahwa WEBSITE_CONTENTSHARE dan WEBSITE_CONTENTAZUREFILECONNECTIONSTRING _diperlukan_: https://docs.microsoft.com/en-us/azure/azure-functions/functions-infrastructure-as-code#create -a-function-app

Komentator di sini berpikir mereka _tidak_ diperlukan; ARM berpikir mereka diperlukan?; Dukungan Azure menganggap bahwa WEBSITE_CONTENTSHARE merusak skenario slot.

Kami akhirnya memeriksa kode host fungsi Azure dan sepertinya , saat dijalankan dari paket, pengaturan WEBSITE_CONTENTAZUREFILECONNECTIONSTRING tidak digunakan .
Kami memverifikasinya dengan menghapus dari template ARM kami WEBSITE_CONTENTAZUREFILECONNECTIONSTRING dan WEBSITE_CONTENTSHARE dan memperoleh hasil yang baik: aplikasi fungsi kami tidak memiliki dua pengaturan itu sama sekali (bahkan tidak ditetapkan oleh runtime) dan keduanya jangan gunakan berbagi file di akun penyimpanan apa pun (setidaknya yang bisa kita lihat).

Jadi satu hal yang perlu diingat adalah bahwa sistem file untuk aplikasi webapp/fungsi terlihat seperti ini:

|-data
|-LogFiles
|-site
  |-deployments
  |-tools
  |-wwwroot

Saat Anda menggunakan paket run from, itu hanya menggantikan folder wwwroot di pohon ini. Segala sesuatu yang lain disediakan oleh sistem file utama. Jika Anda membuat aplikasi fungsi konsumsi atau premium elastis tanpa WEBSITE_CONTENTAZUREFILECONNECTIONSTRING maka sistem file utama tidak tersedia di luar unit skala tempat aplikasi fungsi dibuat. Ini bukan konfigurasi yang didukung/disarankan. Ini berarti bahwa aplikasi fungsi Anda mungkin tidak menskalakan melampaui batas unit skala tempat aplikasi itu dibuat, atau jika ya, Anda tidak akan dapat mempercayai bahwa status sistem file di luar wwwroot tetap konsisten.

Panduan terbaru yang saya lihat dari pengembang yang memiliki cara WEBSITE_CONTENTSHARE berinteraksi dengan slot adalah sebagai berikut:

  • WEBSITE_CONTENTSHARE TIDAK boleh menjadi pengaturan slot. Perubahan API yang memblokir ini diluncurkan pada saat penulisan.
  • Pada pembuatan awal sumber daya melalui ARM, WEBSITE_CONTENTSHARE harus disetel. Namun setelah pembuatan awal, pengaturan ini harus dihilangkan dari template ARM (karena jika disertakan, eksekusi lebih lanjut dari template ARM dapat menyebabkan pertukaran konten yang tidak diharapkan)

Mengikuti komentar saya di atas.. Saya juga menemukan bahwa sistem saat ini memiliki beberapa perilaku yang tidak konsisten dalam menghasilkan WEBSITE_CONTENTSHARE sehingga Anda bahkan tidak perlu menentukannya terlebih dahulu. Beberapa dari Anda mengatakan bahwa Anda tidak perlu menentukannya, sementara yang lain mendapatkan kesalahan saat mengatakan itu diperlukan. Sejauh yang saya tahu, perilaku ini berfungsi dengan benar untuk konsumsi (yaitu template ARM untuk konsumsi tidak memerlukan pengaturan ini pada awalnya) tetapi hal yang sama tidak berlaku untuk premium elastis. Perilaku itu sedang diperbaiki, tetapi mungkin perlu 1-2 bulan untuk keluar. Jadi sementara itu, panduan yang saya bagikan di atas (di mana Anda mengaturnya pada awalnya dan kemudian menghapusnya dari template ARM) berlaku.

@paulbatum

  • Pada pembuatan awal sumber daya melalui ARM, WEBSITE_CONTENTSHARE harus disetel. Namun setelah pembuatan awal, pengaturan ini harus dihilangkan dari template ARM (karena jika disertakan, eksekusi lebih lanjut dari template ARM dapat menyebabkan pertukaran konten yang tidak diharapkan)

Anda benar-benar menyadari tujuan dari template ARM, bukan?

Perilaku itu sedang diperbaiki, tetapi mungkin perlu 1-2 bulan untuk keluar. Jadi sementara itu, panduan yang saya bagikan di atas (di mana Anda mengaturnya pada awalnya dan kemudian menghapusnya dari template ARM) berlaku.

Apa konfigurasi akhir yang diharapkan di sini?
Bisakah kita mendapatkan pengumuman di Azure/app-service-announcements dengan konfigurasi yang tepat dan timeline resmi setelah semua ini benar-benar digunakan?

Hai, tidak yakin apakah ada perkembangan tentang ini. Saya masih kesulitan menggunakan template ARM dengan flag WEBSITE_CONTENTSHARE. @paulbatum bagaimana saya bisa menghilangkan konfigurasi dari template ARM? Saya harus sepenuhnya menonaktifkan langkah untuk membuatnya berfungsi.

@gustavobmichel Maaf, saya tidak mengerti pertanyaan Anda. Template ARM adalah JSON, Anda mengeditnya sesuai kebutuhan. Itu muncul sebagai bagian dari bagian pengaturan aplikasi, misalnya:

          "appSettings": [
            {
              "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING",
              "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]"
            },
            {
              "name": "WEBSITE_CONTENTSHARE",
              "value": "[toLower(variables('functionAppName'))]"
            },

Hai @paulbatum , terima kasih telah kembali kepada saya. Saya pikir Anda menyebutkan tentang menghilangkan pengaturan secara terprogram dari template JSON, jadi itu pertanyaan saya.

Seperti yang dinyatakan orang lain, saya juga berpikir dua pengaturan ini diperlukan, jadi saya menghapus keduanya dari template ARM saya.

Untuk menguji fitur ini dengan zero-downtime, saya membuat tes sederhana dengan infrastruktur mininum kosong untuk mengujinya. Saya menghapus semua sumber daya dari grup sumber daya saya dan menjalankan template ARM sebagai bagian dari saluran rilis untuk membuat sumber daya tanpa WEBSITE_CONTENTAZUREFILECONNECTIONSTRING, WEBSITE_CONTENTSHARE dan WEBSITE_RUN_FROM_PACKAGE.

Saya menjalankan beberapa tes dan semuanya masih berfungsi dengan baik menggunakan paket konsumsi. Saya akan melakukan beberapa tes minggu ini dengan tingkat premium.

Saya juga telah menambahkan konfigurasi ini WEBSITE_ADD_SITENAME_BINDINGS_IN_APPHOST_CONFIG ke 1 sesuai tautan ini: https://docs.microsoft.com/en-us/azure/app-service/deploy-staging-slots#troubleshoot -swaps

Saya telah melampirkan template ARM pengujian saya untuk referensi.
azuredeploy.txt

Hai @paulbatum , terima kasih telah kembali kepada saya. Saya pikir Anda menyebutkan tentang menghilangkan pengaturan secara terprogram dari template JSON, jadi itu pertanyaan saya.

Seperti yang dinyatakan orang lain, saya juga berpikir dua pengaturan ini diperlukan, jadi saya menghapus keduanya dari template ARM saya.

Untuk menguji fitur ini dengan zero-downtime, saya membuat tes sederhana dengan infrastruktur mininum kosong untuk mengujinya. Saya menghapus semua sumber daya dari grup sumber daya saya dan menjalankan template ARM sebagai bagian dari saluran rilis untuk membuat sumber daya tanpa WEBSITE_CONTENTAZUREFILECONNECTIONSTRING, WEBSITE_CONTENTSHARE dan WEBSITE_RUN_FROM_PACKAGE.

Saya menjalankan beberapa tes dan semuanya masih berfungsi dengan baik menggunakan paket konsumsi. Saya akan melakukan beberapa tes minggu ini dengan tingkat premium.

Saya juga telah menambahkan konfigurasi ini WEBSITE_ADD_SITENAME_BINDINGS_IN_APPHOST_CONFIG ke 1 sesuai tautan ini: https://docs.microsoft.com/en-us/azure/app-service/deploy-staging-slots#troubleshoot -swaps

Saya telah melampirkan template ARM pengujian saya untuk referensi.
azuredeploy.txt

Meninggalkan WEBSITE_CONTENTAZUREFILECONNECTIONSTRING, bagaimana fungsi Anda mengetahui dari mana mendapatkan kode aplikasi?

Jika itu membantu, kami telah menetapkan:

  • menyetel WEBSITE_CONTENTAZUREFILECONNECTIONSTRING ke akun penyimpanan yang kodenya ingin kami jalankan
  • tidak menentukan WEBSITE_CONTENTSHARE sama sekali di templat lengan (biarkan itu dibuat secara otomatis untuk kedua slot)
  • WEBSITE_RUN_FROM_PACKAGE = 1

Saya melakukan banyak pengujian di sekitar ini dan ini sepertinya konfigurasi terbaik untuk menghindari memicu swap yang tidak disengaja dan mengetahui di mana kode itu berada, dll. Juga tidak perlu mengelola pengaturan ini di luar template ARM, yang saya tidak suka ide (terasa seperti tidak banyak gunanya menggunakan template ARM pada saat itu).

Penyebaran juga tampaknya berfungsi tanpa menentukan nilai WEBSITE_CONTENTAZUREFILECONNECTIONSTRING sama sekali, tetapi seperti yang disebutkan, kami tidak dapat menemukan di mana kode itu berada dan petugas dukungan MS yang menangani tiket saya tampaknya menyarankan ini adalah bug dan tidak boleh diizinkan oleh platform.

Jika itu membantu, kami telah menetapkan:

  • menyetel WEBSITE_CONTENTAZUREFILECONNECTIONSTRING ke akun penyimpanan yang kodenya ingin kami jalankan
  • tidak menentukan WEBSITE_CONTENTSHARE sama sekali di templat lengan (biarkan itu dibuat secara otomatis untuk kedua slot)
  • WEBSITE_RUN_FROM_PACKAGE = 1

Saya melakukan banyak pengujian di sekitar ini dan ini sepertinya konfigurasi terbaik untuk menghindari memicu swap yang tidak disengaja dan mengetahui di mana kode itu berada, dll. Juga tidak perlu mengelola pengaturan ini di luar template ARM, yang saya tidak suka ide (terasa seperti tidak banyak gunanya menggunakan template ARM pada saat itu).

Penyebaran juga tampaknya berfungsi tanpa menentukan nilai WEBSITE_CONTENTAZUREFILECONNECTIONSTRING sama sekali, tetapi seperti yang disebutkan, kami tidak dapat menemukan di mana kode itu berada dan petugas dukungan MS yang menangani tiket saya tampaknya menyarankan ini adalah bug dan tidak boleh diizinkan oleh platform.

Ini adalah persis apa yang saya temukan juga. Terimakasih sudah mengkonfirmasi.

Fungsi saya mengalami masalah dengan mengakses penyimpanan setelah menambahkan WEBSITE_CONTENTAZUREFILECONNECTIONSTRING dan WEBSITE_RUN_FROM_PACKAGE. Apakah kalian menambahkan dua konfigurasi ini ke functionapp dan slot?

Kesalahan yang tepat adalah: Azure Functions Runtime tidak dapat dijangkau.

Itu setelah saya melakukan penyebaran pertama dan kemudian saya mencoba untuk menyebarkan versi baru.

Saya menambahkan file yml saya juga.
yml file.txt
menyebarkan.txt

Saya juga memperbarui template ARM saya.

Fungsi saya mengalami masalah dengan mengakses penyimpanan setelah menambahkan WEBSITE_CONTENTAZUREFILECONNECTIONSTRING dan WEBSITE_RUN_FROM_PACKAGE. Apakah kalian menambahkan dua konfigurasi ini ke functionapp dan slot?

Kesalahan yang tepat adalah: Azure Functions Runtime tidak dapat dijangkau.

Itu setelah saya melakukan penyebaran pertama dan kemudian saya mencoba untuk menyebarkan versi baru.

Saya menambahkan file yml saya juga.
yml file.txt
menyebarkan.txt

Saya juga memperbarui template ARM saya.

Saya memilikinya di keduanya. Sebenarnya saya tidak punya apa-apa di slot produksi saya dan menukar semuanya dari pementasan. Saya telah melihat ini ketika mendefinisikan WEBSITE_CONTENTSHARE atau tidak menunjuk ke akun penyimpanan yang benar tempat kode berada dengan WEBSITE_CONTENTAZUREFILECONNECTIONSTRING. Anda tidak perlu mengarahkan apa pun ke mana pun dengan WEBSITE_CONTENTSHARE. Saya benar-benar berpikir saya melihat kesalahan yang Anda rujuk karena penggunaan WEBSITE_CONTENTSHARE ke variabel lingkungan. Pastikan Anda tidak mendefinisikannya.

Hai @mslot , saya pikir masalahnya ada pada penerapan saya. Saya mengaturnya ke zipDeploy karena saya membaca di utas ini https://stackoverflow.com/a/56205917 tentang pengaturannya di Azure DevOps. Setelah saya mengubahnya ke penerapan standar, semuanya tampak berfungsi. Terima kasih atas bantuan Anda.

Perilaku itu sedang diperbaiki, tetapi mungkin perlu 1-2 bulan untuk keluar.

Setiap pembaruan tentang masalah ini? Apakah perilaku Konsumsi dan Premium sekarang selaras? Bisakah kita menghilangkan WEBSITE_CONTENTSHARE dari penerapan ARM awal dan penerapan selanjutnya? Bagaimana hal ini memengaruhi slot pementasan? Adakah dokumen yang diperbarui untuk ditautkan atau dijadikan panduan?

Kami pada dasarnya telah menetapkan pendekatan yang sama seperti @thomaswilkin dan @mslot tetapi hanya melalui eksperimen dan coba-coba. Masih tidak yakin bagaimana runtime tahu di mana menemukan file kami karena WEBSITE_CONTENTSHARE tidak disetel.

Hai. Tidak yakin bagaimana kalian bisa melakukannya, tetapi sepertinya saya tidak bisa menggunakan
WEBSITE_CONTENTAZUREFILECONNECTIONSTRING tanpa WEBSITE_CONTENTSHARE. Bahkan melalui portal, itu memberi saya kesalahan saat mencoba mengatur konfigurasi;
Failed to update web app settings: Required parameter WEBSITE_CONTENTSHARE is missing.

Pada halaman ikhtisar aplikasi fungsi, saya juga melihat pesan peringatan ini: Storage is not configured, Function scaling will be limited. Click to learn more. Saya menggunakan paket premium. Adakah pembaruan atau pedoman resmi tentang bagaimana kami harus mengonfigurasi aplikasi fungsi kami?

Untuk paket Premium (tidak 100% yakin tentang paket Konsumsi), berikut adalah matriks yang berfungsi/tidak berfungsi:

  • jika Anda menerapkan sumber daya baru:

    • jika Anda tidak memberikan pengaturan apa pun, penerapan berhasil, tetapi Anda berakhir dengan pesan Storage is not configured, Function scaling will be limited

    • jika Anda hanya menyediakan WEBSITE_CONTENTAZUREFILECONNECTIONSTRING , gagal dengan Required parameter WEBSITE_CONTENTSHARE is missing

    • jika Anda memberikan kedua nilai, itu berfungsi

  • jika Anda menerapkan ke sumber daya yang ada

    • jika Anda tidak memberikan pengaturan, penerapan berhasil, tetapi Anda berakhir dengan pesan Storage is not configured, Function scaling will be limited

    • jika Anda hanya menyediakan WEBSITE_CONTENTAZUREFILECONNECTIONSTRING , itu berhasil (dan tampaknya berfungsi dengan baik setelahnya) meskipun WEBSITE_CONTENTSHARE seharusnya diperlukan

    • jika Anda memberikan kedua nilai, itu 'berfungsi' karena bagian ARM tidak gagal, tetapi itu menyebabkan masalah multi-restart dan panduan MS di atas adalah untuk tidak mengatur WEBSITE_CONTENTSHARE pada pembaruan

Jadi tampaknya tidak ada cara untuk memiliki satu template ARM yang berfungsi untuk kedua skenario saat ini.

Saya juga melihat pesan peringatan ini: Storage is not configured, Function scaling will be limited. Click to learn more . Belum memiliki situs web WEBSITE_CONTENTAZUREFILECONNECTIONSTRING atau WEBSITE_CONTENTSHARE. Seperti yang Korkiak sebutkan, adakah pedoman yang diperbarui atau resmi?

Kami baru-baru ini mulai melihat pesan "Penyimpanan tidak dikonfigurasi, penskalaan fungsi akan dibatasi. Klik untuk mempelajari lebih lanjut" di Portal Azure untuk Fungsi Azure yang ada yang disebarkan empat minggu lalu. Kami tidak pernah menggunakan WEBSITE_CONTENTAZUREFILECONNECTIONSTRING atau WEBSITE_CONTENTSHARE dan itu berfungsi dengan baik sampai sekarang.

@paulbatum Sepertinya masalah ini mendapatkan lebih banyak aktivitas selama beberapa hari terakhir sejak pesan 'Penyimpanan tidak dikonfigurasi, Penskalaan fungsi akan dibatasi' mulai muncul di portal. Adakah panduan baru tentang cara yang benar untuk mengonfigurasi semua ini?

Saya baru saja menemukan 'WEBSITE_CONTENTSHARE' tidak dapat menjadi kesalahan pengaturan slot seperti yang disebutkan di atas ketika menggunakan Aplikasi Fungsi baru untuk pertama kalinya dalam beberapa bulan server menggunakan templat yang telah berfungsi dengan baik sebelumnya.
Template memiliki 'WEBSITE_CONTENTSHARE' sebagai pengaturan slot dan didefinisikan baik dalam Aplikasi Fungsi dan pengaturan aplikasi slot penyebaran sesuai artikel berikut yang juga telah disebutkan di atas:
https://nascent.blog/2017/06/27/azure-functions-slots-arm-templates-snags-2-redeploy-causes-unwanted-swap/
Membaca utas ini menghapus ini sebagai pengaturan slot dan mencoba berbagai kombinasi pengaturan 'WEBSITE_CONTENTSHARE' dan saya tidak mendapatkan perilaku yang sama seperti yang lain. Saya dapat menyebarkan tanpa kesalahan seperti di bawah ini:

  • Tentukan 'WEBSITE_CONTENTSHARE' untuk Aplikasi Fungsi & Slot Penerapan
  • Tentukan 'WEBSITE_CONTENTSHARE' hanya untuk Aplikasi Fungsi

Jika saya tidak menentukan 'WEBSITE_CONTENTSHARE' sama sekali di template, saya mendapatkan kesalahan "Parameter yang diperlukan WEBSITE_CONTENTSHARE tidak ada".

Jadi tolong bisakah kami mendapatkan pembaruan tentang seperti apa pengaturan sebenarnya karena saya tidak dapat menyebarkan ke produksi dengan perilaku saat ini.

Hai semuanya, maaf atas semua kebingungan di sini. Kami mencoba untuk menjadi pintar dengan meminta Portal Azure memberi tahu Anda ketika Anda mungkin mengalami masalah penskalaan dengan konfigurasi Anda, tetapi kami melakukan kesalahan logika dan jadi sekarang orang mungkin salah melihat peringatan itu. Kami sedang memperbaikinya, tetapi sementara ini, inilah cara memvalidasi apakah Anda mungkin mengalami masalah penskalaan dengan aplikasi Anda atau tidak:

Jika Anda menggunakan premi atau konsumsi elastis, maka Anda harus memenuhi salah satu kriteria berikut:

  1. Anda harus memiliki WEBSITE_CONTENTAZUREFILECONNECTIONSTRING dan WEBSITE_CONTENTSHARE yang ditentukan

atau

  1. Jika Anda menggunakan run from zip/package, maka Anda harus menyetel "WEBSITE_USE_ZIP", "WEBSITE_RUN_FROM_ZIP", atau "WEBSITE_RUN_FROM_PACKAGE" ke selain kosong, 0, atau 1

Kita harus memperbaikinya minggu depan kapan-kapan.

Terima kasih @ehamai - untuk # 2 ketika Anda mengatakan 'setel ke sesuatu selain kosong, 0, atau 1' - apakah itu benar? bukannya 0 dan 1 berlawanan? (Kami memiliki set kita untuk 1 dan kita mengasumsikan bahwa ya berarti / benar (jangan lari dari paket) sebagai didokumentasikan di sini: https://docs.microsoft.com/en-us/azure/azure-functions/run-functions-from -deployment-paket)

Hai Elliott, terima kasih banyak atas balasan yang sangat cepat.

Jadi hanya untuk memperjelas:
Saat menerapkan dari template ARM ke paket Konsumsi dan menggunakan slot penerapan tetapi Tanpa zip/paket

  • Saya harus mendefinisikan WEBSITE_CONTENTAZUREFILECONNECTIONSTRING dan WEBSITE_CONTENTSHARE pada slot Produksi dan Pementasan.

  • Saya TIDAK harus mendefinisikan WEBSITE_CONTENTSHARE sebagai pengaturan slot penyebaran di kedua slot.

Salam

Owain

Dari: Elliott Hamai [email protected]
Dikirim: 22 Juni 2020 17:31
Kepada: MicrosoftDocs/Azure-docs [email protected]
Tembuskan: Owain Winterbone (ITCS - Staf) [email protected] ; Manual [email protected]
Perihal: Re: [MicrosoftDocs/azure-docs] WEBSITE_CONTENTSHARE tidak boleh digunakan untuk mendukung (#36458)

Peringatan: Email ini dari luar sistem UEA. Jangan mengklik tautan atau lampiran kecuali Anda mengharapkannya dari pengirim dan mengetahui bahwa kontennya aman.

Hai semuanya, maaf atas semua kebingungan di sini. Kami mencoba untuk menjadi pintar dengan meminta Portal Azure memberi tahu Anda ketika Anda mungkin mengalami masalah penskalaan dengan konfigurasi Anda, tetapi kami melakukan kesalahan logika dan jadi sekarang orang mungkin salah melihat peringatan itu. Kami sedang memperbaikinya, tetapi sementara ini, inilah cara memvalidasi apakah Anda mungkin mengalami masalah penskalaan dengan aplikasi Anda atau tidak:

Jika Anda menggunakan premi atau konsumsi elastis, maka Anda harus memenuhi salah satu kriteria berikut:

  1. Anda harus memiliki WEBSITE_CONTENTAZUREFILECONNECTIONSTRING dan WEBSITE_CONTENTSHARE yang ditentukan

atau

  1. Jika Anda menggunakan run from zip/package, maka Anda harus menyetel "WEBSITE_USE_ZIP", "WEBSITE_RUN_FROM_ZIP", atau "WEBSITE_RUN_FROM_PACKAGE" ke selain kosong, 0, atau 1


Anda menerima ini karena Anda berlangganan utas ini.
Balas email ini secara langsung, lihat di GitHub https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2Fazure-docs%2Fissues%2F36458%23issuecomment-647631943&data = 02% 7C01% 7Co.winterbone% 40uea.ac.uk% 7Cecd3322262374fb9ffb608d816c9ad12% 7Cc65f8795ba3d43518a070865e5d8f090% 7C0% 7C0% 7C637284402737046987 & SDATA = woJvSwWrHgKQIV3xQ8QX3vIOULv6ZNfn5wln4tPn3EA% 3D & dicadangkan = 0 , atau berhenti berlangganan https://eur01.safelinks.protection.outlook.com/?url= https% 3A% 2F% 2Fgithub.com% 2Fnotifications% 2Funsubscribe-auth% 2FAGFS4PC23VOJOEKS6ESN2C3RX6BM5ANCNFSM4IJGDPBQ & data = 02% 7C01% 7Co.winterbone% 40uea.ac.uk% 7Cecd3322262374fb9ffb608d816c9ad12% 7Cc65f8795ba3d43518a070865e5d8f090% 7C0% 7C0% 7C637284402737056941 & SDATA = StHshC6EtV6A% 2BLi3g7x0xfNx56POAYnwjMWihEf% 2BCYM% 3D & dicadangkan = 0 .

@briandunnington - Ya maaf itu membingungkan.

  • 0 berarti dinonaktifkan
  • 1 berarti dijalankan dari zip lokal tetapi agar berfungsi dengan baik, Anda juga harus memiliki WEBSITE_CONTENTAZUREFILECONNECTIONSTRING dan WEBSITE_CONTENTSHARE yang ditentukan oleh pernyataan pertama.

@OwainWin - Maaf saya bingung dengan pertanyaan Anda. Anda bertanya apakah Anda harus dan tidak boleh menyertakan WEBSITE_CONTENTSHARE.

Saya yakin Anda harus memiliki WEBSITE_CONTENTAZUREFILECONNECTIONSTRING dan WEBSITE_CONTENTSHARE yang ditentukan pada slot produksi dan pementasan.

Terima kasih @ehamai - jadi kembali ke pertanyaan awal utas ini: apa panduan untuk menyetel WEBSITE_CONTENTAZUREFILECONNECTIONSTRING dan WEBSITE_CONTENTSHARE dalam template ARM yang berfungsi untuk penerapan awal dan selanjutnya? Untuk paket Premium (tidak 100% yakin tentang paket Konsumsi tetapi yakin itu sama), berikut adalah matriks yang berfungsi/tidak berfungsi:

  • jika Anda menerapkan sumber daya baru:

    • jika Anda tidak memberikan pengaturan apa pun, penerapan berhasil, tetapi Anda berakhir dengan Penyimpanan tidak dikonfigurasi, Penskalaan fungsi akan menjadi pesan terbatas

    • jika Anda hanya menyediakan WEBSITE_CONTENTAZUREFILECONNECTIONSTRING, itu gagal dengan parameter yang Diperlukan WEBSITE_CONTENTSHARE tidak ada

    • jika Anda memberikan kedua nilai, itu berfungsi

  • jika Anda menerapkan ke sumber daya yang ada

    • jika Anda tidak memberikan pengaturan apa pun, penerapan berhasil, tetapi Anda berakhir dengan Penyimpanan tidak dikonfigurasi, Penskalaan fungsi akan menjadi pesan terbatas

    • jika Anda hanya menyediakan WEBSITE_CONTENTAZUREFILECONNECTIONSTRING, itu berhasil (dan tampaknya berfungsi dengan baik setelahnya) meskipun WEBSITE_CONTENTSHARE seharusnya diperlukan

    • jika Anda memberikan kedua nilai, itu 'berfungsi' karena bagian ARM tidak gagal, tetapi itu menyebabkan masalah multi-restart dan panduan MS di atas adalah untuk tidak mengatur WEBSITE_CONTENTSHARE pada pembaruan

Jadi tampaknya tidak ada cara untuk memiliki satu template ARM yang berfungsi untuk kedua skenario saat ini.

Hai Elliott

Yang ingin saya katakan untuk poin kedua adalah bahwa WEBSITE_CONTENTSHARE harus didefinisikan sebagai pengaturan aplikasi tetapi tidak boleh dijadikan pengaturan slot Deployment.
Jadi seharusnya tidak ada centang seperti di bawah ini:

[cid:[email protected]]

Dari: Elliott Hamai [email protected]
Dikirim: 22 Juni 2020 18:38
Kepada: MicrosoftDocs/Azure-docs [email protected]
Tembuskan: Owain Winterbone (ITCS - Staf) [email protected] ; Sebutkan [email protected]
Perihal: Re: [MicrosoftDocs/azure-docs] WEBSITE_CONTENTSHARE tidak boleh digunakan untuk mendukung (#36458)

Peringatan: Email ini dari luar sistem UEA. Jangan mengklik tautan atau lampiran kecuali Anda mengharapkannya dari pengirim dan mengetahui bahwa kontennya aman.

@OwainWin https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FOwainWin&data=02%7C01%7Co.winterbone%40uea.ac.uk%7Cafedec71775f4f42d84108d816d2f9677%ba80654358795ad816d2f9677% %7C0%7C637284442665654874&sdata=x3m7KNp6hoQJMCqfb4aEUSNnmE6E5N7geDa8Vu7AUaw%3D&reserved=0 - Maaf saya bingung dengan pertanyaan Anda. Anda bertanya apakah Anda harus dan tidak boleh menyertakan WEBSITE_CONTENTSHARE.

Saya yakin Anda harus memiliki WEBSITE_CONTENTAZUREFILECONNECTIONSTRING dan WEBSITE_CONTENTSHARE yang ditentukan pada slot produksi dan pementasan.


Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2Fazure-docs%2Fissues%2F36458%23issuecomment-647674267&data = 02% 7C01% 7Co.winterbone% 40uea.ac.uk% 7Cafedec71775f4f42d84108d816d2f967% 7Cc65f8795ba3d43518a070865e5d8f090% 7C0% 7C0% 7C637284442665664832 & SDATA = ctK99d4qO2YuIN% 2F07lwuHC0wNut% 2Fx8LjgLd7v55rTAM% 3D & dicadangkan = 0 , atau berhenti berlangganan https://eur01.safelinks.protection.outlook.com /?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAGFS4PEPPJE7NN6RO5D4SSLRX6JGNANCNFSM4IJGDPBQ&data=02%7C01%7Co.winterbone%40uea.ac.uk%7Cafedec71775f4f42d84108d816d2f967%7Cc65f8795ba3d43518a070865e5d8f090%7C0%7C0%7C637284442665664832&sdata=wXaMW%2Fx% 2B5RXDtrfiQgHeZYtpc%2BhLyI9w6f9ut9NTFjM%3D&reserved=0 .

@paulbatum

  • Pada pembuatan awal sumber daya melalui ARM, WEBSITE_CONTENTSHARE harus disetel. Namun setelah pembuatan awal, pengaturan ini harus dihilangkan dari template ARM (karena jika disertakan, eksekusi lebih lanjut dari template ARM dapat menyebabkan pertukaran konten yang tidak diharapkan)

Anda benar-benar menyadari tujuan dari template ARM, bukan?

Perilaku itu sedang diperbaiki, tetapi mungkin perlu 1-2 bulan untuk keluar. Jadi sementara itu, panduan yang saya bagikan di atas (di mana Anda mengaturnya pada awalnya dan kemudian menghapusnya dari template ARM) berlaku.

Apa konfigurasi akhir yang diharapkan di sini?
Bisakah kita mendapatkan pengumuman di Azure/app-service-announcements dengan konfigurasi yang tepat dan timeline resmi setelah semua ini benar-benar digunakan?

Ini adalah penghalang besar bagi kami. Kami harus dapat menggunakan template ARM yang sama untuk diterapkan ke grup sumber daya baru yang akan kami gunakan untuk menerapkan ke grup sumber daya yang ada. Kami secara khusus menjalankan template ARM kami dalam mode Lengkap untuk membantu memberikan sedikit lebih banyak konteks.

Saat ini, template ARM kami terlihat seperti ini:

{
  "apiVersion": "2016-08-01",
  "type": "Microsoft.Web/sites",
  "name": "[variables('functionAppName')]",
  "location": "[variables('defaultLocation')]",
  "kind": "functionapp",
  "properties": {
    "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('functionAppName'))]"
  },
  "resources": [
    {
      "name": "slotconfignames",
      "type": "config",
      "apiVersion": "2016-08-01",
      "dependsOn": [
        "[resourceId('Microsoft.Web/sites', variables('functionAppName'))]"
      ],
      "properties": {
        "appSettingNames": [
          "SomeSlotSpecificSetting"
        ]
      }
    },
    {
      "name": "staging",
      "type": "slots",
      "apiVersion": "2016-08-01",
      "location": "[variables('defaultLocation')]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('functionAppName'))]",
        "[resourceId('Microsoft.Web/sites', variables('functionAppName'))]"
      ],
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('functionAppName'))]",
        "siteConfig": {
          "appSettings": [
            {
              "name": "AzureWebJobsStorage",
              "value": "[ourapp.storageConnectionString(listkeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageResourceName')), '2015-05-01-preview').key1, variables('storageResourceName'))]"
            },
            {
              "name": "AzureWebJobsDashboard",
              "value": "[ourapp.storageConnectionString(listkeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageResourceName')), '2015-05-01-preview').key1, variables('storageResourceName'))]"
            },
            {
              "name": "SomeSetting__Foo",
              "value": "[parameters('someSettings').foo]"
            },
            {
              "name": "SomeSetting__Bar",
              "value": "[parameters('someSettings').bar]"
            },
            {
              "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING",
              "value": "[ourapp.storageConnectionString(listkeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageResourceName')), '2015-05-01-preview').key1, variables('storageResourceName'))]"
            },
            {
              "name": "WEBSITE_CONTENTSHARE",
              "value": "[toLower(variables('functionAppName'))]"
            },
            {
              "name": "FUNCTIONS_EXTENSION_VERSION",
              "value": "~3"
            },
            {
              "name": "FUNCTIONS_WORKER_RUNTIME",
              "value": "dotnet"
            },
            {
              "name": "SomeSlotSpecificSetting",
              "value": "abc 123"
            },
            {
              "name": "WEBSITE_RUN_FROM_PACKAGE",
              "value": "1"
            }
          ]
        }
      }
    }
  ],
  "dependsOn": [
    "[resourceId('Microsoft.Storage/storageAccounts', variables('storageResourceName'))]",
    "[resourceId('Microsoft.Web/serverfarms', variables('functionAppName'))]"
  ]
}

Perhatikan detail berikut: Kami menetapkan konfigurasi kami _pada slot staging_, bukan slot produksi. Apa yang memungkinkan kami lakukan adalah menerapkan pengaturan baru (dan pembaruan ke yang sudah ada) ke slot pementasan terlebih dahulu. Jadi, saluran DevOps kami melakukan ini:

  • Langkah 1) Terapkan template ARM ke grup sumber daya
  • Langkah 2) Terapkan aplikasi fungsi ke slot pementasan
  • Langkah 3) Jalankan beberapa tes asap terhadap slot pementasan
  • Langkah 4) Tukar slot pementasan dan produksi

Masalahnya, karena WEBSITE_CONTENTSHARE sedang diatur di dalam template ARM, slot produksi dan slot staging segera mengambil versi baru aplikasi tepat setelah Langkah 2 (bahkan sebelum swap terjadi). Saya percaya inilah yang dibicarakan orang ketika mereka mengatakan "operasi pertukaran yang tidak disengaja".

Kami _DO NOT_ ingin mengatur pengaturan slot produksi di template ARM kami, dan kami _DO NOT_ ingin pengaturan slot produksi dihapus karena template ARM kami berjalan. Cara kerja template ARM dalam mode Lengkap adalah jika kita menentukan pengaturan apa pun untuk slot produksi, maka semua pengaturan yang tidak ditentukan secara eksplisit akan dihapus secara otomatis.

Saya harap ini semua masuk akal. Kami saat ini mencoba untuk menghapus WEBSITE_CONTENTSHARE dari template ARM kami, dengan harapan runtime akan menghasilkan nilai di semua skenario dan tidak lagi mengarah ke "pertukaran yang tidak diinginkan".

Hai semuanya, saya adalah pengembang utama untuk slot penerapan dan saya akan mengatasi masalah Anda terkait pengaturan WEBSITE_CONTENTSHARE, dan WEBSITE_CONTENTAZUREFILECONNECTIONSTRING:

Berikut panduan resminya:

WEBSITE_CONTENTAZUREFILECONNECTIONSTRING: Ini harus selalu disetel karena memberi tahu layanan aplikasi bahwa Anda menggunakan file Azure untuk penyimpanan konten.

SITUS WEB_CONTENTSHARE:

  • Ini sekarang dapat dihilangkan sepenuhnya dari template ARM Anda untuk fungsi sku Konsumsi yang akan menghasilkan bidang secara otomatis dan menghindari pertukaran yang tidak diinginkan. Ini berarti Anda dapat menggunakan template yang sama untuk pembuatan dan pembaruan setelahnya.
  • Sayangnya, kami menemukan bahwa pembuatan otomatis WEBSITE_CONTENTSHARE ini diabaikan untuk ski Premium Elastis sehingga masalah harus menyertakannya selama pembuatan dan menghilangkannya selama pembaruan tetap ada. Perbaikan untuk ini sedang diluncurkan dan telah mencapai setengah armada kami. Itu harus diluncurkan sepenuhnya dalam 2 minggu ke depan dan setelah dari panduan akan sama untuk kedua skus dan WEBSITE_CONTENTSHARE dapat dihilangkan sepenuhnya.

Harapan yang mengatasi beberapa kekhawatiran Anda!

@shubDhond Terima kasih banyak. Bisakah kami mendapatkan pembaruan resmi tentang dokumentasi?

@shubDhond untuk paket konsumsi windows jika saya hanya menyediakan WEBSITE_CONTENTAZUREFILECONNECTIONSTRING Saya mendapatkan kesalahan melalui penerapan templat lengan yang mengatakan WEBSITE_CONTENTSHARE hilang.
Saya tidak perlu menggunakan slot. Jika mengabaikan kedua penyebaran berjalan tetapi saya mendapatkan peringatan "penyimpanan tidak dikonfigurasi. penskalaan fungsi akan dibatasi".

Apa panduan tentang rencana konsumsi dengan dua parameter yang saya gunakan. Paket konsumsi net core windows?

Dito! Saya juga mendapatkan kesalahan ini. Kapan ini akan diperbaiki?

Saya memiliki masalah yang sama pada konsumsi dan paket elastis, ini menyebabkan banyak masalah bagi kami dengan penerapan otomatis.

Saya telah berhasil menghilangkan WEBSITE_CONTENTSHARE untuk Premium saat menerapkan pengaturan secara langsung di properti Microsoft.Web/sites (siteConfig, appSettings), tetapi tidak ketika menetapkan pengaturan sebagai sumber daya terpisah menggunakan Microsoft.Web/sites/config dengan "type": "config" .

@shubDhond Masalah ini jelas belum diperbaiki. Pada paket Konsumsi Windows jika Anda menggunakan template hanya dengan WEBSITE_CONTENTAZUREFILECONNECTIONSTRING dan tanpa WEBSITE_CONTENTSHARE Anda akan mendapatkan kesalahan "WEBSITE_CONTENTSHARE hilang".

Mencoba menggunakan tugas penerapan Layanan Aplikasi di Azure DevOps dan hanya menyetel WEBSITE_CONTENTAZUREFILECONNECTIONSTRING juga akan menghasilkan Kesalahan HTTP 400.

Otomatisasi aplikasi Fungsi Azure pada paket konsumsi saat ini benar-benar rusak.

Memiliki masalah yang sama dengan @clawrenceks

Kami juga mengalami masalah yang sama seperti @clawrenceks.
Kami juga tidak dapat menetapkan hanya WEBSITE_CONTENTAZUREFILECONNECTIONSTRING tanpa WEBSITE_CONTENTSHARE melalui portal Azure. Kami juga memiliki WEBSITE_RUN_FROM_PACKAGE disetel ke 1.
image

Saya juga tidak yakin bagaimana ini akan bekerja ketika mode penyebaran template ARM Anda disetel ke Complete ? Apakah itu tidak menghapus pengaturan aplikasi yang dihasilkan WEBSITE_CONTENTSHARE ?

Seperti kebanyakan, kami juga tersesat.

Saya sekarang memiliki template ARM saya yang berhasil menerapkan aplikasi fungsi saya ke dalam Rencana Konsumsi Windows. Saat digunakan, pesan Storage is not configured, Function scaling will be limited. Click to learn more tidak lagi ditampilkan. Pertukaran slot juga berfungsi seperti yang diharapkan.

Temuan utama saya dari proses ini adalah:

Jika saat ini Anda memiliki aplikasi Azure Function TANPA pengaturan aplikasi WEBSITE_CONTENTAZUREFILECONNECTIONSTRING dan WEBSITE_CONTENTSHARE , saya yakin satu-satunya cara untuk memperbaikinya adalah dengan menerapkan ulang aplikasi Anda, memastikan bahwa WEBSITE_CONTENTAZUREFILECONNECTIONSTRING ditetapkan sebagai bagian dari pembuatan layanan aplikasi.

Memiliki WEBSITE_CONTENTAZUREFILECONNECTIONSTRING sebagai bagian dari pembuatan sumber daya adalah kuncinya. Saat menggunakan ARM, temuan saya adalah bahwa itu harus digunakan sebagai pengaturan aplikasi selama penerapan layanan aplikasi utama, dengan jenis sumber daya Microsoft.Web/sites . Memiliki jenis sumber daya terpisah Microsoft.Web/sites/config di template ARM Anda untuk menerapkan pengaturan aplikasi tidak akan berfungsi.

Saya tidak menyertakan pengaturan WEBSITE_CONTENTSHARE di template ARM saya. Ini dibuat oleh runtime ketika template ARM saya digunakan. Ini adalah tanda bahwa penyebaran bekerja dengan baik. Dengan pendekatan yang dijelaskan di sini, saya dapat menerapkan sumber daya awal dan kemudian menerapkan ulang template beberapa kali tanpa menerima kesalahan terkait dengan pengaturan WEBSITE_CONTENTSHARE .

Persyaratan utama yang terpisah bagi saya adalah bahwa pengaturan aplikasi situs produksi hanya boleh digunakan selama pembuatan sumber daya awal. Satu-satunya cara saya ingin mendapatkan pengaturan aplikasi baru (masa depan) ke dalam situs produksi adalah melalui slot swap. Untuk mencapai ini, saya menambahkan beberapa logika ke dalam template ARM saya untuk menangani yang berikut ini.

1) Pengaturan aplikasi di template ARM hanya akan diterapkan ke situs produksi selama pembuatan situs awal, pengaturan tersebut tidak akan ditambahkan ke situs produksi sebagai bagian dari penerapan di masa mendatang.

2) Pengaturan aplikasi di template ARM selalu diterapkan ke slot staging. Mereka kemudian ditukar ke dalam produksi menggunakan slot swap.

Untuk mencapai hal di atas, appSettings untuk situs produksi di template ARM saya bersyarat. Jika sumber daya tidak ada, saya menerapkan set lengkap pengaturan aplikasi di template (untuk memastikan bahwa layanan aplikasi dibuat dengan benar). Jika sumber daya telah dibuat, saya memberikan nol untuk pengaturan aplikasi. Saat diterapkan, ini mempertahankan pengaturan aplikasi yang sudah ada untuk situs produksi.

Saya juga benar-benar bingung. Jika WEBSITE_CONTENTAZUREFILECONNECTIONSTRING diperlukan untuk paket Konsumsi, tetapi tidak dapat dikonfigurasi untuk tetap pada slot, bagaimana saya bisa menukar antara slot staging dan produksi di mana saya ingin masing-masing dijalankan pada akun penyimpanan yang berbeda? Ini dimungkinkan dengan Aplikasi Web selamanya, dan sepertinya kasus penggunaan yang sangat umum. Sejauh yang saya tahu, menukar slot fungsi aplikasi benar-benar rusak/tidak dapat digunakan sampai ini diperbaiki. Akan sangat senang jika seseorang memberi tahu saya mengapa / bagaimana saya salah! Saya tahu masalah asli mereferensikan template ARM, tetapi ini sepertinya masalah yang jauh lebih luas.

Masalah yang sama pada paket Premium Elastis. Menyebarkan ke slot panggung template ARM yang sama dengan WEBSITE_CONTENTSHARE yang sama membuat slot produksi menunjuk ke binari yang sama dengan slot panggung.
Tidak dapat menerapkan tanpa WEBSITE_CONTENTSHARE sama sekali karena saya mendapatkan kesalahan 2020-09-08T10:15:32.8385428Z ##[debug]Set-AzWebAppSlot : Operation returned an invalid status code 'BadRequest'

Saya bingung. Apa hal yang benar untuk dilakukan?

Jika Anda menggunakan premi atau konsumsi elastis, maka Anda harus memenuhi salah satu kriteria berikut:

Anda harus memiliki WEBSITE_CONTENTAZUREFILECONNECTIONSTRING dan WEBSITE_CONTENTSHARE yang ditentukan

atau

Jika Anda menggunakan run from zip/package, maka Anda harus menyetel "WEBSITE_USE_ZIP", "WEBSITE_RUN_FROM_ZIP", atau "WEBSITE_RUN_FROM_PACKAGE" ke selain kosong, 0, atau 1

seperti yang dikatakan @ehamai ?

atau

WEBSITE_CONTENTAZUREFILECONNECTIONSTRING: Ini harus selalu disetel karena memberi tahu layanan aplikasi bahwa Anda menggunakan file Azure untuk penyimpanan konten.

SITUS WEB_CONTENTSHARE:

Ini sekarang dapat dihilangkan sepenuhnya dari template ARM Anda untuk fungsi sku Konsumsi yang akan menghasilkan bidang secara otomatis dan menghindari pertukaran yang tidak diinginkan. Ini berarti Anda dapat menggunakan template yang sama untuk pembuatan dan pembaruan setelahnya.

Sayangnya, kami menemukan bahwa pembuatan otomatis WEBSITE_CONTENTSHARE ini diabaikan untuk ski Premium Elastis sehingga masalah harus menyertakannya selama pembuatan dan menghilangkannya selama pembaruan tetap ada. Perbaikan untuk ini sedang diluncurkan dan telah mencapai setengah armada kami. Itu harus diluncurkan sepenuhnya dalam 2 minggu ke depan dan setelah dari panduan akan sama untuk kedua skus dan WEBSITE_CONTENTSHARE dapat dihilangkan sepenuhnya.

Harapan yang mengatasi beberapa kekhawatiran Anda!

seperti yang dikatakan @shubDhond ?

Saya mendapatkan kesalahan jika saya memiliki fungsi Azure pada rencana konsumsi tanpa WEBSITE_CONTENTSHARE (sebenarnya slot produksi tidak memiliki pengaturan aplikasi sama sekali) di salah satu slot dan saya:

  1. menyebarkan ARM ke slot pementasan
  2. menukar
  3. pindahkan ke slot pementasan

Kemudian ia memberi tahu saya bahwa saya memerlukan WEBSITE_CONTENTSHARE. Sepertinya tidak dapat menghasilkan bagian untuk slot produksi lama. Saya belum mencoba menghapus WEBSITE_CONTENTAZUREFILECONNECTIONSTRING, karena utas ini mengatakan untuk tidak melakukannya, kecuali @ehamai , yang memberi tahu saya bahwa saya dapat melakukannya, jika saya melakukan "WEBSITE_RUN_FROM_PACKAGE".

Lucunya, saya memiliki fungsi yang berjalan dengan pengaturan ini, tetapi dengan ~2 runtime alih-alih ~3, dan berfungsi. Apakah ada masalah dengan ~3 dan slot penerapan?
Ini sangat membingungkan.

Tidak peduli apa swap slot spontan ini sangat menakutkan, bagaimanapun juga karena kita perlu membuat kedua variabel WEBSITE_ kita mengisi ARM yang terakhir sendiri juga sesuai definisi di sini . Alat diagnostik konfigurasi webapp di portal tidak menunjukkan kesalahan lagi.

menugaskan kembali: @mattchenderson

Ada pembaruan tentang ini?

Kami juga telah disarankan oleh dukungan Microsoft bahwa properti "WEBSITE_CONTENTSHARE" harus disetel. Ketika tidak memungkinkan untuk mengaturnya sebagai pengaturan slot, ini cukup bermasalah untuk pipeline build dan template ARM kami. Tolong saran!

Saya juga setuju. Saatnya untuk beberapa penjelasan tentang cara menggunakan slot di sini!

Saya juga setuju, utas ini dimulai lebih dari 15 bulan yang lalu dan masih belum ada resolusi yang stabil.
Kami tidak dapat menggunakan slot sampai ini diselesaikan dengan benar dengan solusi tepercaya, slot adalah fitur yang fantastis tetapi harus dapat diandalkan.

Halo semua,

Sangat menyesal atas keterlambatan tanggapan di sini, utas ini tidak dipantau sebagaimana mestinya.

Untuk mengatasi kebingungan, perilaku yang dijelaskan oleh @clawrenceks di atas sudah benar sampai sekarang. Untuk situs yang belum memiliki penyimpanan File Azure yang dikonfigurasi, Anda akan diminta untuk menyediakan WEBSITE_CONTENTAZUREFILECONNECTIONSTRING dan WEBSITE_CONTENTSHARE. Setelah ini disediakan dan aplikasi Anda sekarang dikonfigurasi untuk berjalan di Azure Files, Anda dapat menghilangkan WEBSITE_CONTENTSHARE dari template Anda setelahnya untuk menghindari pertukaran konten Anda secara tidak sengaja.

Cara kerja API saat ini adalah pada pembuatan situs (sumber daya 'Microsoft.Web/sites') jika Anda menyediakan WEBSITE_CONTENTAZUREFILECONNECTIONSTRING dan bukan WEBSITE_CONTENTSHARE, maka pembagian konten akan dibuat untuk Anda. Namun pada pembaruan sumber daya 'Microsoft.Web/sites' yang ada atau sumber daya 'Microsoft.Web/sites/config', API akan melihat apakah sudah ada nilai untuk WEBSITE_CONTENTSHARE untuk aplikasi dan jika tidak ada , itu melempar kesalahan.

Saya berasumsi ini untuk melindungi dari pelanggan yang secara tidak sengaja menghapus konten mereka saat beralih ke file biru, jika mereka menyediakan WEBSITE_CONTENTAZUREFILECONNECTIONSTRING dan kami membuat WEBSITE_CONTENTSHARE baru untuk mereka (pada dasarnya menghapus konten mereka karena pembagian ini akan menjadi baru). Ini jauh lebih aman selama pembuatan situs karena situs akan dimulai dengan yang bersih dan kami tidak mengambil risiko menghapus konten Anda.

Saya benar-benar dapat memahami kebingungan untuk Anda semua yang ingin file biru. Saya harus memikirkan cara terbaik untuk mengatasi ini sambil tetap menjaga operasi pembaruan kami aman dari menghapus konten Anda. Untuk saat ini panduan untuk Anda semua yang tidak memiliki file Azure yang dikonfigurasi dan ingin beralih, Anda harus memberikan WEBSITE_CONTENTAZUREFILECONNECTIONSTRING dan WEBSITE_CONTENTSHARE untuk peralihan awal dan kemudian panduannya akan sama untuk menghilangkan WEBSITE_CONTENTSHARE dari Anda templat setelahnya.

Jika ada saran tentang bagaimana Anda ingin melihat kasus pembaruan ditangani, itu akan sangat dihargai juga!

@shubDhond jadi kita perlu menerapkan connectionstring dan pengaturan aplikasi contentshare pada penerapan pertama ke slot produksi, tetapi tidak pada penerapan setelah itu. Apakah ada cara untuk melakukan ini secara otomatis? Seperti mendeteksi jika sumber daya telah digunakan melalui ARM? Atau apakah kita perlu secara manual meneruskan info ini ke ARM ( fx melalui parameter yang memberi tahu apakah ini adalah penerapan pertama?

@mslot sayangnya saya tidak berpikir itu mungkin untuk mengetahui dalam templat apakah sumber daya sudah ada atau tidak, tetapi ini harus dimungkinkan dengan ini (https://docs.microsoft.com/en-us/azure/azure-resource- manager/template/template-tutorial-use-conditions) dikombinasikan dengan parameter yang diteruskan ke template yang memberi tahu apakah situs sudah dikonfigurasi untuk File Azure. Ini dapat ditentukan dengan mendapatkan situs dan melihat apakah pengaturan aplikasi memiliki WEBSITE_CONTENTAZUREFILECONNECTIONSTRING dan WEBSITE_CONTENTSHARE.

@mslot sayangnya saya tidak berpikir itu mungkin untuk mengetahui dalam templat apakah sumber daya sudah ada atau tidak, tetapi ini harus dimungkinkan dengan ini (https://docs.microsoft.com/en-us/azure/azure-resource- manager/template/template-tutorial-use-conditions) dikombinasikan dengan parameter yang diteruskan ke template yang memberi tahu apakah situs sudah dikonfigurasi untuk File Azure. Ini dapat ditentukan dengan mendapatkan situs dan melihat apakah pengaturan aplikasi memiliki WEBSITE_CONTENTAZUREFILECONNECTIONSTRING dan WEBSITE_CONTENTSHARE.

Saya sangat berharap ini segera diperbaiki. Itu membuat penggunaan slot tidak berguna dalam alur kerja saya. Itu harus sepenuhnya otomatis. Solusi ini adalah solusi peretasan di mata saya dan tidak masuk akal untuk diperkenalkan ketika itu berfungsi untuk aplikasi web karena itu sangat menyimpang dari sesuatu yang seharusnya berfungsi sama dengan memperkenalkan "ilmu hitam" untuk orang lain yang masuk ke sebuah proyek.

Saya sangat berharap ini diperbaiki sehingga kami dapat mulai menggunakannya. Saya pikir itu membuat banyak orang tidak menggunakan fitur ini.

@mslot Saya benar-benar memahami rasa sakit Anda dengan ini dan saya minta maaf kami tidak dapat mengidentifikasi masalah ini lebih cepat. Saya akan berbicara dengan para pengembang yang awalnya menerapkan perilaku ini dalam minggu mendatang dan melihat apakah kami dapat menemukan perbaikan yang aman untuk masalah ini yang dapat menghindari kemungkinan pelanggan secara tidak sengaja pindah menggunakan file Azure kosong yang dibagikan untuk konten mereka. Setelah kami memiliki solusi yang diusulkan, saya akan memperbarui di sini.

@shubDhond Saya tidak begitu mengerti "bagian" File Azure ini. Saya menyebarkan proyek Fungsi Azure saya menggunakan Azure DevOps dengan terlebih dahulu membuat slot penyebaran, menyebarkan ke ini dan kemudian bertukar. Saya menggunakan metode penyebaran "RunFromPackage" dan ini sepertinya tidak berfungsi saat menggunakan StorageAccount klasik. Saya TIDAK menggunakan File Azure dan sepertinya saya memiliki masalah yang sama terkait dengan pengaturan WEBSITES_CONTENTSHARE untuk dua slot.

Hai @cannehag, bisakah Anda membuka masalah baru untuk ini? Mungkin ada beberapa perilaku aneh yang terjadi dengan pengaturan aplikasi RunFromPackage yang ditandai sebagai lengket yang menyebabkan gejala serupa dengan yang dijelaskan di sini. Saya akan menyarankan masalah baru sehingga kami tidak menambahkan kebingungan di sini karena masalah tersebut kemungkinan tidak terkait.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat