AWS AppStream 2.0 快速上手
Amazon AppStream 2.0是託管式程式串流服務,直接在遠端處理完程式要求後,只把畫面傳送到使用者瀏覽器上呈現結果
[挑戰/適用場景]
企業中推行一個軟體,要提供給使用者什麼樣的操作體驗,才能確保不會有各種的相容性問題,往往讓負責資訊的單位或是推行的單位煩心不已。甚至,當今天隨著企業允許使用者自帶設備(BYOD)來公司使用,內部的使用場景也跟著複雜了許多,這讓一些必要且重要的關鍵程式,為了適應各種使用者裝置,而需要考量更多。
但今天我們可以設想一種場景,所有程式操作在伺服器端完成運算,只把結果傳送到使用者的畫面上,是不是讓整件事情簡單多了?不用再去想說使用者的電腦是哪個版本的作業系統,不用去想更新作業系統後,而不用擔心關鍵程式不再相容所衍生出各種安全性問題,是不是美好多了呢?而AppStream2.0很適合上述的場景中使用,例如我之前所任職的公司,雖然允許員工攜帶自己的筆電上班,但是為了要讓自行開發的ERP系統給Mac使用者操作,花了許多的人力,特別把使用者介面另外寫了一套Web版本,這對使用者來說,要另外熟悉一種介面,而每次改版的速度也落後原生Windows的版本許多;對管理/開發者來說,要維持兩個不同的用戶端,盡量維持接近的體驗,每次改版都得花兩次工,實在是吃力不討好的事情,這個時候AppStream就派上用場囉!要先承認的是,我一開始的目的其實是玩以前Windows才能跑的小遊戲,但既然花了時間嘗試,就順便記下來,當成是一種紀錄跟分享。
在開始進入操作前,先說明一下根據以下步驟逐步做完,就可以建立一個供自己串流測試用的小程式 (這次是用免費的電路模擬軟體LCircuit做範例),當然也可以替換成自己想要嘗試的軟體,體驗看看囉。
[操作步驟]
AppStream2.0的建立流程主要分成六大步驟,可以參考如下說明:
步驟一選定地理區域
步驟二建立Image
步驟三設定要供串流存取的App
步驟四建立底層運作的Instance Fleet
步驟五設定供使用者連線的Stack
步驟六加入並設定可以使用的用戶資料
[建立流程]
一、選定區域
登入 AWS Console 後,從服務或尋找服務中搜尋 AppStream2.0。進入後從右上角選擇要建立服務的地理區域(很重要!選錯會讓 latency 飆高,預設是北維吉尼亞),台灣使用者建議使用東京。
可以從這裡搜尋AWS的各項服務
二、使用"Image Builder"建立後續要用來串流使用的程式
1.左側點選到Images選單後,切換上方的標籤頁選擇Image Builder,按下Launch Image Builder來開始我們的第一步囉
2.選擇要運行App的底層作業系統,因為我只是測試看看,就選擇standard.medium來跑一般的App
可以根據列出的Image描述來選擇最適合的規格
順帶一提,之前建立過的Image也會出現在這裡供選擇,但屬性是Private,不用擔心會被其他用戶看到
3.幫要建立的Image取個名字吧
4.選擇底層的Instance type,這邊要注意的是,這個部分選擇的Instance大小,不是正式部署後的Instance類型,只是要建立Image時的Instance類型而已
因為是測試用,我選擇了medium的大小,可以正常運作就好
5.下方的VPC Endpoints / IAM role的進階選項,可以根據需求設定。簡單來說,就是是否允許使用者在特定VPC(內網)中,以及使用特定的IAM role套用到Image builder中時使用。但因為我需要在Internet環境隨時可以存取,所以這邊選擇了預設值就好(如果是企業內部使用,建議先跟AWS架構師討論過再決定要怎麼連線喔)。
6.選擇了Continue後,進入網路存取的設定頁面,因為我直接想要使用網際網路存取,所以勾選了"Default Internet Access",並且選擇預設的VPN,還有想要使用的Subnet / Security group
7.針對有需要整合AD的用戶,可以在此頁的下半部選擇"Active Directory Domain (Optional)",將組織的AD還有OU資訊進行設定還有選擇,就可以讓使用者登入的部分更簡化囉,設定好後我們就按下“Review”來進行設定的確認,都沒有問題後就可以選擇"Launch"來建立我們的第一個Image
建立好後,就像是新增一台EC2 Instance,要給它一點時間啟動及設定,會在狀態顯示"Pending",可以點清單右上角的更新按鈕來查看目前Image建立的狀態
Image建立好後就會顯示"Running",表示已經準備好了
三、設定要提供存取的App內容
(這個步驟是整個AppStream設定中最重要的一步,因為程式的安裝及設定,還有測試,都在這個階段要完成,所以格外重要,讓我們一起來看看吧)
1.首先是選取我們建立好的Image,然後點選上方的"Connect"
2.等待連線後,會看到下方選擇使用者視窗
3.Administrator是安裝需要程式時候要選擇的使用者,安裝好程式後所做的設定不會保留下來,需要切換至Template User來進行設定
3.1 我們先以之前下載好的免費電路模擬軟體LCircuit當成例子。在下載(並且安裝完成)後,點選"Add App",並選擇該目標程式,在進行下一步前,建議先執行看看是不是可以正常運作。如果要讓使用者透過AppStream 2.0使用的程式不只一個,就逐一完成安裝並加入選單中
3.2 可在開啟的視窗中設定該程式的顯示名稱等資訊,完成後選擇"Save"。此處要注意,若是無需安裝可直接執行的程式,不要將程式的資料夾放在桌面或使用者資料夾下的目錄中,因為在切換成其他使用者(如Template/Test User等)的時候,是無法進行存取的;建議可以放在共用目錄或是C:下
4.Template User是針對安裝好的程式來進行使用者設定。常會使用在需要帶特定參數來啟動的程式上
4.1 選擇"Next",並在下個頁面選擇"Switch User"切換至Template User
基本上只要照著此頁中的1~5步,就可以完成設定,我們一個一個來看看
4.2 切換至Template User後,點選稍早加入的LCircuit,確認是否可以正常啟動。若無法正常啟動,建議一樣要切回Administrator檢查是不是因為安裝或是資料夾擺放的位置造成無法開啟的問題
左側點選到Images選單後,切換上方的標籤頁選擇Image Builder,按下Launch Image Builder來開始我們的第一步囉
4.3 確認可以正常操作後關閉該程式,點選"Switch User"切換回Administrator,然後選擇1~5下方,位於視窗中央的"Save settings",此時可看到正在將程式的設定保存
4.4 完成設定保存後,就可以切換到Test User,來模擬正式上線後,使用者連線進來的樣子
5.Test User是模擬設定完成後,使用者連線所看到的樣子,可以當作完成前的最後預覽,確保使用上沒有問題再進行到下一步
5.1 一樣打開桌面的Image Assistant,然後點選稍早設定的LCircuit App,測試看看是不是可以正常使用
5.2 看來使用上沒有問題,我們可以關閉程式後,再次點選"Switch User",切換回Administrator,並且點選右下角的"Next"
5.3 為了讓程式效能最佳化,我們要在這個頁面點選右上角的"Launch",讓系統可以針對程式利用的資源進行分析後進行優化
5.4 接著會看到以下彈出視窗,告知看到程式成功啟動後,點選"Continue"來繼續,可以協助系統判斷資源利用狀況
5.5 接著在 CONFIGURE IMAGE 頁面中,設定好這個 Image 的相關訊息,完成後點選"Next"
5.6 在最後的REVIEW頁面確認完成資訊後,點選最右下角的"Disconnect and Create Image"就完成App的設定囉
四、建立Fleets ,此為使用者連線時的底層設定(可以跟Image Builder的Instance type不同,這邊的為使用者連線時會啟用的Instance類型)
1. 切換至Fleets,然後點選"Create Fleet",開始建立Streaming時候要使用的Instance fleet
2. 設定好Fleet的名稱/顯示名稱後點選下一步
3. 選擇稍早建立好要串流的Image後選擇"Next"
4. 跟建立Image時很相似地,選擇要供使用者串流時候的Instance Type
5. 設定Instance運作的模式是On-Demand或是Always running,在這裡,我選擇了On-Demand來確保使用時計價,讓成本較低
6.Session/連線時間是每次連線進來後允許的時間,還有閒置多久後會逾時的設定,先保持預設就可以了
7.Fleet capacity是指串流時Instances數量,併行的使用者數量是需要考量的部分,建議將併行執行的最多人數設定為Maximum Capacity的數量(例如同時最多有5位要使用,就將此值設定為5)
8. Scaling details這可以設定擴展的原則,根據自己想要出發的條件設定,或是保持預設值即可。如果使用者反應連入等待時間太久,有時候可以藉由在這邊進行調整會有很大的改善。完成設定後點選"Next"
9. 網路的設定也很類似Image Builder的設定,根據我們的需求將網路部分完成設定,以及是否要結合AD Domain,完成後點選"Next"就會進行Review,都沒有問題後點選"Create"就完成了Fleet的建立
五、設定供使用者存取的"Stack"
1.待 Fleet 建立好後,就要來進行我們的下一步,建立 Stack,左側切換到 Stacks 後,點選"Create Stack"
2.完成Stack的相關名稱/顯示名稱,還有結束串流及提供回應的URL位置(Optional)
3.Fleet的部分可以選擇稍早建立的Fleet作為運行的底層(此為Optional,也可以點選右側"Create new fleet"來在這邊建立Fleet)
4.下方的Embed AppStream2.0可以設定允許嵌入Streaming session的Domain(這邊只允許https的連線喔)
5.點選"Next"後,設定S3儲存位置 (包含使用者家目錄資料夾儲存的bucket)、是否允許使用 Google Drive for G Suite / OneDrive for Business可以根據需求來進行選擇
6.下一步,要來設定剪貼簿、本地檔案傳輸權限跟印表機權限。另外,程式的設定值是否允許儲存也是在這個頁面中設定
7. 進到下個頁面完成Review沒問題後,點選"Create"來建立需要的Stack
六、User pool
1.切換到User Pool後,點選"Create User",在彈出視窗後,填入相關資料後按下"Create User"
2.建立好使用者後,勾選使用這前方的選取框,並點選上方的"Actions"按鈕,選取"Assign Stack"來指派Stack
3.設定視窗也可以一併送出邀請信給該使用者,來通知對方可以開始使用
4.可以開始連線,開心使用AppStream2.0串流程式囉
七、後記
這個粗淺的操作說明,希望可以幫助到有需要類似需求的朋友們,當然AWS的業務還有架構師都非常樂意協助相關需求的建議及規劃,不管是針對文章內容有疑問、建議,或是想要進一步規劃類似架構需要諮詢,歡迎造訪台灣 AWS,可在網頁的最下方聯繫到我們喔!
來源網址:https://aws.amazon.com/tw/events/taiwan/techblogs/articles-app-stream/