AWS AppStream 2.0 快速上手

2023/06/05

作者Sam Tu, Business Development Manager, AWS

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來開始我們的第一步囉

Launch Image Builder

2.選擇要運行App的底層作業系統,因為我只是測試看看,就選擇standard.medium來跑一般的App

一般的App

可以根據列出的Image描述來選擇最適合的規格

Launch Image Builder

順帶一提,之前建立過的Image也會出現在這裡供選擇,但屬性是Private,不用擔心會被其他用戶看到

3.幫要建立的Image取個名字吧

幫要建立的Image取個名字

4.選擇底層的Instance type,這邊要注意的是,這個部分選擇的Instance大小,不是正式部署後的Instance類型,只是要建立Image時的Instance類型而已

選擇底層的Instance type

因為是測試用,我選擇了medium的大小,可以正常運作就好

5.下方的VPC Endpoints / IAM role的進階選項,可以根據需求設定。簡單來說,就是是否允許使用者在特定VPC(內網)中,以及使用特定的IAM role套用到Image builder中時使用。但因為我需要在Internet環境隨時可以存取,所以這邊選擇了預設值就好(如果是企業內部使用,建議先跟AWS架構師討論過再決定要怎麼連線喔)。

進階選項

進階選項2

6.選擇了Continue後,進入網路存取的設定頁面,因為我直接想要使用網際網路存取,所以勾選了"Default Internet Access",並且選擇預設的VPN,還有想要使用的Subnet / Security group

網路存取的設定頁面

7.針對有需要整合AD的用戶,可以在此頁的下半部選擇"Active Directory Domain (Optional)",將組織的AD還有OU資訊進行設定還有選擇,就可以讓使用者登入的部分更簡化囉,設定好後我們就按下“Review”來進行設定的確認,都沒有問題後就可以選擇"Launch"來建立我們的第一個Image

針對有需要整合AD的用戶

建立好後,就像是新增一台EC2 Instance,要給它一點時間啟動及設定,會在狀態顯示"Pending",可以點清單右上角的更新按鈕來查看目前Image建立的狀態

pending

Image建立好後就會顯示"Running",表示已經準備好了

三、設定要提供存取的App內容

(這個步驟是整個AppStream設定中最重要的一步,因為程式的安裝及設定,還有測試,都在這個階段要完成,所以格外重要,讓我們一起來看看吧)

1.首先是選取我們建立好的Image,然後點選上方的"Connect"

2.等待連線後,會看到下方選擇使用者視窗

設定要提供存取的App內容

3.Administrator是安裝需要程式時候要選擇的使用者,安裝好程式後所做的設定不會保留下來,需要切換至Template User來進行設定

3.1 我們先以之前下載好的免費電路模擬軟體LCircuit當成例子。在下載(並且安裝完成)後,點選"Add App",並選擇該目標程式,在進行下一步前,建議先執行看看是不是可以正常運作。如果要讓使用者透過AppStream 2.0使用的程式不只一個,就逐一完成安裝並加入選單中

add app

3.2 可在開啟的視窗中設定該程式的顯示名稱等資訊,完成後選擇"Save"。此處要注意,若是無需安裝可直接執行的程式,不要將程式的資料夾放在桌面或使用者資料夾下的目錄中,因為在切換成其他使用者(如Template/Test User等)的時候,是無法進行存取的;建議可以放在共用目錄或是C:下

共用目錄

4.Template User是針對安裝好的程式來進行使用者設定。常會使用在需要帶特定參數來啟動的程式上

4.1 選擇"Next",並在下個頁面選擇"Switch User"切換至Template 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,測試看看是不是可以正常使用


LCircuit App

5.2 看來使用上沒有問題,我們可以關閉程式後,再次點選"Switch User",切換回Administrator,並且點選右下角的"Next"

5.3 為了讓程式效能最佳化,我們要在這個頁面點選右上角的"Launch",讓系統可以針對程式利用的資源進行分析後進行優化

Launch

5.4 接著會看到以下彈出視窗,告知看到程式成功啟動後,點選"Continue"來繼續,可以協助系統判斷資源利用狀況


Continue

5.5 接著在 CONFIGURE IMAGE 頁面中,設定好這個 Image 的相關訊息,完成後點選"Next"


Next

5.6 在最後的REVIEW頁面確認完成資訊後,點選最右下角的"Disconnect and Create Image"就完成App的設定囉


Disconnect and Create Image

 

四、建立Fleets ,此為使用者連線時的底層設定(可以跟Image Builder的Instance type不同,這邊的為使用者連線時會啟用的Instance類型)

1. 切換至Fleets,然後點選"Create Fleet",開始建立Streaming時候要使用的Instance fleet


Create Fleet

2. 設定好Fleet的名稱/顯示名稱後點選下一步

設定好Fleet的名稱/顯示名稱後點選下一步

3. 選擇稍早建立好要串流的Image後選擇"Next"

建立好要串流的Image

4. 跟建立Image時很相似地,選擇要供使用者串流時候的Instance Type

選擇要供使用者串流時候的Instance Type

選擇要供使用者串流時候的Instance Type2

5. 設定Instance運作的模式是On-Demand或是Always running,在這裡,我選擇了On-Demand來確保使用時計價,讓成本較低

選擇On-Demand

6.Session/連線時間是每次連線進來後允許的時間,還有閒置多久後會逾時的設定,先保持預設就可以了

保持預設

7.Fleet capacity是指串流時Instances數量,併行的使用者數量是需要考量的部分,建議將併行執行的最多人數設定為Maximum Capacity的數量(例如同時最多有5位要使用,就將此值設定為5)

Fleet capacity是指串流時Instances數量

8. Scaling details這可以設定擴展的原則,根據自己想要出發的條件設定,或是保持預設值即可。如果使用者反應連入等待時間太久,有時候可以藉由在這邊進行調整會有很大的改善。完成設定後點選"Next"

Scaling details這可以設定擴展的原則

9. 網路的設定也很類似Image Builder的設定,根據我們的需求將網路部分完成設定,以及是否要結合AD Domain,完成後點選"Next"就會進行Review,都沒有問題後點選"Create"就完成了Fleet的建立

完成建立

五、設定供使用者存取的"Stack"

1.待 Fleet 建立好後,就要來進行我們的下一步,建立 Stack,左側切換到 Stacks 後,點選"Create Stack"

Create Stack

2.完成Stack的相關名稱/顯示名稱,還有結束串流及提供回應的URL位置(Optional)

完成Stack的相關名稱

3.Fleet的部分可以選擇稍早建立的Fleet作為運行的底層(此為Optional,也可以點選右側"Create new fleet"來在這邊建立Fleet)

選擇稍早建立的Fleet作為運行的底層

4.下方的Embed AppStream2.0可以設定允許嵌入Streaming session的Domain(這邊只允許https的連線喔)

這邊只允許https的連線喔

5.點選"Next"後,設定S3儲存位置 (包含使用者家目錄資料夾儲存的bucket)、是否允許使用 Google Drive for G Suite / OneDrive for Business可以根據需求來進行選擇

設定S3儲存位置

6.下一步,要來設定剪貼簿、本地檔案傳輸權限跟印表機權限。另外,程式的設定值是否允許儲存也是在這個頁面中設定

設定剪貼簿、本地檔案傳輸權限跟印表機權限

7. 進到下個頁面完成Review沒問題後,點選"Create"來建立需要的Stack

六、User pool

1.切換到User Pool後,點選"Create User",在彈出視窗後,填入相關資料後按下"Create User"

Create User

2.建立好使用者後,勾選使用這前方的選取框,並點選上方的"Actions"按鈕,選取"Assign Stack"來指派Stack

Assign Stack

3.設定視窗也可以一併送出邀請信給該使用者,來通知對方可以開始使用

設定視窗也可以一併送出邀請信給該使用者

4.可以開始連線,開心使用AppStream2.0串流程式囉

可以開始連線

可以開始連線2

七、後記

這個粗淺的操作說明,希望可以幫助到有需要類似需求的朋友們,當然AWS的業務還有架構師都非常樂意協助相關需求的建議及規劃,不管是針對文章內容有疑問、建議,或是想要進一步規劃類似架構需要諮詢,歡迎造訪台灣 AWS,可在網頁的最下方聯繫到我們喔!


來源網址:https://aws.amazon.com/tw/events/taiwan/techblogs/articles-app-stream/



其他動態