在上一篇文章裡,我們已經在儲存體帳戶中開啟了 SFTP 的功能,並使用 FileZilla 將檔案上傳至容器中,如果還沒看過的話可以進入下方連結查看。
接續前篇一開始提到的,SFTP 功能在開啟的期間都會被收取費用,這邊會介紹使用 Azure Automation Runbook 這個服務,將開關 SFTP 的 PowerShell 腳本做成定時執行,來達到節省 SFTP 費用的目標。
相關連結:【Azure Blob Storage】用高 CP 值的方式在 Azure Blob Storage 上開啟 SFTP 功能(上)
建立 Azure Automation
從 Portal 進入 Azure Automation 介面,中文可以搜尋「自動化帳戶」,點擊左上角「建立」。
設定的選項不多,很簡單就能建起來(就喜歡這種單純的服務),其中第二個「進階」的頁籤中建議使用系統指派的受控識別,在服務建立起來時會順便把受控識別拉起來,等一下做授權時會比較方便,其他只要跟著 Portal 繼續下一步並建立即可。
建議在「進階」頁籤中勾選「系統指派」的受控識別 |
賦予 Automation 權限
因為接下來會使用 Automation 操作 SFTP 的開關,所以『他』必須具備對應的權限才能執行操作,而其中這個『他』就是剛剛自動建起來的受控識別。
首先回到稍早開啟 SFTP 的那一個儲存體帳戶,進入左側的「存取控制 (IAM)」,選擇「新增角色指派」。
在 IAM 中新增角色指派 |
這邊的權限為求方便,可以先給到「參與者」的角色,確保一定可以做開關 SFTP 的操作,後續可以依需求再自行做調整。
其中受控識別的名稱會與 Automation 服務名稱相同,直接在成員搜尋就會找到。
賦予 Automation 在儲存體帳戶中參與者的角色 |
在 Automation 中建立 Runbook
回到 Automation 的頁面,進入「程序自動化」→「Runbook」,點擊左上角「建立 Runbook」。
使用以下設定建立 Runbook:
- 名稱:自行命名,這邊使用 sftp-disable
- Runbook類型:PowerShell
- 執行階段版本:7.2
建立 Runbook 時的設定 |
編輯 PowerShell Runbook
Runbook 建立完成後會進入一個編輯畫面,貼上下面這段關閉 SFTP 功能的 PowerShell 腳本。
Connect-AzAccount -Identity
# 設定變數
$resourceGroupName = "charlie-test"
$storageAccountName = "charliestoragedemo"
# 關閉 SFTP
Set-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName -EnableSftp $false
在編輯頁面中貼上 PowerShell 腳本 |
編輯完成後直接由左上角點擊「發行」即可,再來回到 Runbook 畫面點擊左上角「啟動」。
從畫面直接啟動 Runbook |
大約一分鐘的時間,就可以看到 Runbook 執行成功的畫面,接著直接回到儲存體帳戶的「SFTP」頁籤。
已停用此帳戶的本機使用者和/或 SFTP |
只要看到畫面上方會多一個已經停用 SFTP 的訊息就成功囉!
幫 Runbook 掛上排程
最後只差把 Runbook 掛上排程,就能做到定時自動關閉 SFTP,而排程的部分在 Automation 的介面做的不錯,這邊就不多贅述跟著畫面操作即可,設定完成就會如下:
排程設定完成的畫面 |
總結
本篇建立了一個 Automation Runbook 的服務,並透過定時執行 PowerShell 腳本來做到自動關閉 SFTP 功能,另外也可以再建立另一個 Runbook,稍微修改 PowerShell 腳本也能做到自動開啟 SFTP 功能。
試想一下,如果只有在上班時間的 8 小時內有使用 SFTP 的需求,掛上這兩個排程腳本後,就能省下 2/3 的費用,詳細的 SFTP 計價方式可以參考下方微軟文檔,另外也可以根據使用情境,再自行設定開關的時間,大家一起省錢吧!
留言
張貼留言