發表文章

目前顯示的是有「Azure」標籤的文章

Azure Static Web Apps 搭配後端 API 的實作心得

圖片
  開頭 如果你手上有一個靜態前端專案,但又需要一點後端能力,例如查詢資料、處理簡單商業邏輯,Azure Static Web Apps 是一條很值得考慮的路線。 這篇筆記整理的是我在 Azure Static Web Apps 免費方案下,搭配 Azure Functions 當後端 API 的實作觀察。重點不是把架構講得很大,而是記下真正上線時會碰到的幾個關鍵限制。 背景 我這次是拿一個 Blazor WebAssembly 測試網站來做實驗,想確認前端部署到 Azure Static Web Apps 之後,能不能順便把 API 一起帶上去。 結果是可以,但不是「把前端丟上去就結束」這麼簡單。實際上還要注意部署流程、專案相依關係,以及免費方案底下的受控模式限制。 說明 1. 免費方案下,API 其實是受控的 Azure Functions Azure Static Web Apps 的免費方案可以搭配後端 API,但那個 API 不是你平常獨立管理的 Function App,而是由 SWA 受控的 Azure Functions。 這代表幾件事: 你不會在 Azure Portal 的 Function Apps 清單裡看到它 它比較適合輕量 API 如果要做長時間執行、排程或佇列處理,就不太適合放在這裡 2. 部署流程要一起調整,不能只看前端 一開始如果是 Azure 自動產生的部署流程,常常只夠發前端。 但當你把 Function 一起加進來時,workflow 通常還要再調整一次,確保前端和 API 都有被正確發行。參考 github workflows yml 3. 專案之間不能互相依賴 當 Function 加進來之後,架構上要保持乾淨分離。 我在這次測試裡特別注意到: 前端專案與 Function 專案不能互相相依 TargetFramework 要從 net48 改成 net9.0 。 Azure Static Web Apps 不支援 .NET 10 。 如果目標框架不在 Azure Static Web Apps 支援範圍內,部署就會卡住 這類問題通常不是程式碼本身錯,而是平台與專案結構不合。 4. 免費方案有自己的配額與邊界 Azure Static Web Ap...

Docker Image To Azure Container App

圖片
  前言 續前一篇  Docker Image To GCP Cloud Run 本文記錄,將一個.NET Web程式,使用docker image放到Azure Container上。 由於Azure Container Registry,沒有免費的,本文採docker hub的方式(有免費額度) ps: GCP Azure Container,有每月前0.5G免費 使用方式 推送到Docker Hub 先到docker.com 註冊帳號 用command 登入,或直接用docker for window登入 docker login Build image docker build -f AzureConatinerLab/Dockerfile -t azurecontainerlab . 標記並推送到 Docker Hub docker tag azurecontainerlab:latest kimxinfo/azurecontainerlab:latest docker push kimxinfo/azurecontainerlab:latest Azure Container App 建立 Container App,輸入Hub上的image 設定 Ingress 完成後,Overview 可以使用Application Url瀏覽 其他 如果希望服務閒置時不持續計費,可以保留  Min replicas = 0 免費額度 請求次數 :每月前  200 萬次  請求免費。 CPU 資源 :每月前  180,000 vCPU-秒  免費。 記憶體資源 :每月前  360,000 GiB-秒  免費。 特點 :支援「縮減至零 (Scale to Zero)」,沒流量時不計費。 總結 本文重點是 Docker Hub + Azure Container App 的串接 相關參考 Docker Image To GCP Cloud Run

Application Insights 整合NLog

圖片
前言    這兩天將寫好的LineBot程式部署到Azure上測試,過程中發生錯誤及功能無法成功執行時候,要檢查是什麼原因? 頓覺寸步難行,沒有記錄可以查詢......也不知該如何查XD。花了些功夫,將這塊補上。 Application Insight - 啟用 App Service --> Application Insights 啟用。 啟用後,此時程式不用任何修改,只要有Request就可以在Azure上的Application Insights Transaction search查詢基本的資訊。 Application Insight - 程式修改 nuget參考  : Microsoft.ApplicationInsights.AspNetCore Program.cs  builder.Services.AddApplicationInsightsTelemetry(); appsettings.json 加入連線字串 (在Applicaiton Insights 頁面取得)     "ApplicationInsights": {         "ConnectionString": "Your Connection String"     } 此時你在本機測試(任何Request),可以在Azure上的Application Insights Transaction search查詢 或在Visual Studio查詢 Application Insight-搭配NLog 加入nuget參考 NLog.Web.AspNetCore Microsoft.ApplicationInsights.NLogTarget 新增NLog.config 設定如下, <instrumentationKey> 須換成你的 ,instrumentationKey在跟你取得ConnectionStrings同一位置。 設定內容:寫入檔案及Application Insights,並忽略開發時期的一堆底層資訊。 <?xml version="1.0" encoding="utf-8"?> <nlog xmlns...

透過共用存取簽章上傳Azure Blob

圖片
  一般來說,在上傳檔案到Azure時,會先將檔案傳到本地的網站上,再由網站將檔案內容傳到Azure上,如下圖,網站扮演著Proxy Service的角色。 圖片來源:azure.microsoft.com 這樣的方式的好處是,安全性高(金鑰只有網站知道),且可以依商務邏輯調整。但相對的在頻寬及處理的須付出相對的成本。      另一種方式,不透過網站,直接由Client端上傳到Azure上,但這樣的方式要顧慮到金鑰的存取。我們不可能將金鑰放在Client端來使用,這樣太危險了,若是網站應用程式,只要按一下F12就可以輕鬆取得。針對此問題,azure有一解決方案,透過金鑰,依據所需權限、使用期限等..來產生Shared Access Token(簡稱 SAS)。如下圖 圖片來源:azure.microsoft.com

使用Azure Power Shell 變更資料庫服務層和效能層級

圖片
      目前的專案有一需求是在資料匯入時,將服務層級提高來加快匯入的速度,待完畢後再降回來,避免資源(金錢)的浪費。趁此K了一下最近剛入手的 Azure教戰手札 ,並撰寫一支Power Shell Script來玩玩。 前置工作   第一次使用PowerShell ,需設定ExecutionPolicy: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned ps:此動作要使用Administrator執行 先確定是否已安裝Azure Power Shell ps:安裝後,需要 重新開機 ,否則會出現找不指令錯誤

使用Visual Studio Online新的建置系統發佈到Azure

圖片
   這幾天在Survery Visual Studio Online CI相關技術,看到一篇文章介紹VSO全新的建置系統 。試玩一下,將VSO的專案發佈成Pacakge並發行到Azure,感覺還不錯用,將目前使用的功能記錄起來。 VSO專案先建立Azure Service 切換到Services Tab 加入Service 輸入Azure的訂閱資訊,若找不到,也可以從上圖紅框的”publishsettings xml file”下載取得。

[Azure] 使用SendGrid發信

圖片
系統本來是使用GMail的SMTP來發信,但在使用上有其他限制,例:1天只能發1000封、在 Azure上的安全性問題 等等。前兩天剛好同事提到Azure上有第三方的提供的SMTP服務"SendGrid",參考了相關文章後覺得還不錯,決定將發信功能改為SendGrid。 什麼是SendGrid 它是Cloud-base email service,提供高信賴、可擴展性、及時性的分析記錄及查詢報表等等。 提供彈性的API跟你的系統整合。 Free版本,一個月可以發25000封 更多請 參考官網 申請方式 在最下方功能列—>New—>Store

[Azure] 解決無法使用gmail的smtp寄信

圖片
  在系統上作了一個通知機制是當發生例外時,會透過gmail發信給管理者。但上了Azure後,明明有例外,卻遲遲收不到來信.......。到gmail上的設定檢查後,才知道由於網站是放在新加坡與我們平常存取時的位置差太遠,所以判定為異常而遭拒無法發信。

[Azure] Instance資源分配

圖片
釐清一下Instance的資源是怎麼樣分配。以Basic的方案來計算,若建立3個Instance(VM),而記憶體設定為7G,並建立了3個網站。 在分配上如下表 Instance RAM Web VM-1 7G Web-1 Web-2 Web-3 VM-2 7G Web-1 Web-2 Web-3 VM-3 7G Web-1 Web-2 Web-3 參考來源 http://msdn.microsoft.com/zh-tw/windowsazure/gg442342.aspx http://social.msdn.microsoft.com/Forums/zh-TW/bc646281-b411-4584-907d-1098e21b7a1b/azure-instance-?forum=winazurewebsite

Visual Studio Online MsBuild出現無法載入Nuget組件

圖片
目前的專案會透過Visual Studio Online簽入後,自動執行建置動作並發佈到Azure。但今天在測試時一直卡在Online Build時會發生錯誤訊息,無法載入某個內部Nuget組件。

[SQL Azure]資料庫匯入注意事項

圖片
本文記錄若要將本地資料庫的資料匯入SQLAzure時的相關動作 產生指令碼 重點1.產生結構及資料 重點2.選擇SQLAzure的類型 Ps:此選項好像只有SQL Server2008R2 才有