AWS AppStream 2.0 快速上手
- 作者 -
Sam Tu, Business Development Manager, AWS

.8fe029c2a7a30868c89ef133e4178179da39d22b.png)
Amazon AppStream 2.0是託管式程式串流服務,直接在遠端處理完程式要求後,只把畫面傳送到使用者瀏覽器上呈現結果
[挑戰/適用場景]
企業中推行一個軟體,要提供給使用者什麼樣的操作體驗,才能確保不會有各種的相容性問題,往往讓負責資訊的單位或是推行的單位煩心不已。甚至,當今天隨著企業允許使用者自帶設備(BYOD)來公司使用,內部的使用場景也跟著複雜了許多,這讓一些必要且重要的關鍵程式,為了適應各種使用者裝置,而需要考量更多。
但今天我們可以設想一種場景,所有程式操作在伺服器端完成運算,只把結果傳送到使用者的畫面上,是不是讓整件事情簡單多了?不用再去想說使用者的電腦是哪個版本的作業系統,不用去想更新作業系統後,而不用擔心關鍵程式不再相容所衍生出各種安全性問題,是不是美好多了呢?而AppStream2.0很適合上述的場景中使用,例如我之前所任職的公司,雖然允許員工攜帶自己的筆電上班,但是為了要讓自行開發的ERP系統給Mac使用者操作,花了許多的人力,特別把使用者介面另外寫了一套Web版本,這對使用者來說,要另外熟悉一種介面,而每次改版的速度也落後原生Windows的版本許多;對管理/開發者來說,要維持兩個不同的用戶端,盡量維持接近的體驗,每次改版都得花兩次工,實在是吃力不討好的事情,這個時候AppStream就派上用場囉!要先承認的是,我一開始的目的其實是玩以前Windows才能跑的小遊戲,但既然花了時間嘗試,就順便記下來,當成是一種紀錄跟分享。
在開始進入操作前,先說明一下根據以下步驟逐步做完,就可以建立一個供自己串流測試用的小程式 (這次是用免費的電路模擬軟體LCircuit做範例),當然也可以替換成自己想要嘗試的軟體,體驗看看囉。
[操作步驟]
步驟一 | 選定地理區域 |
步驟二 | 建立Image |
步驟三 | 設定要供串流存取的App |
步驟四 | 建立底層運作的Instance Fleet |
步驟五 | 設定供使用者連線的Stack |
步驟六 | 加入並設定可以使用的用戶資料 |
[建立流程]
一、選定區域
登入 AWS Console 後,從服務或尋找服務中搜尋 AppStream2.0。進入後從右上角選擇要建立服務的地理區域(很重要!選錯會讓 latency 飆高,預設是北維吉尼亞),台灣使用者建議使用東京。 >>回到步驟表<<
.e88f13b1b5177da1007929157bf060f501d9426f.png)
可以從這裡搜尋AWS的各項服務
.a1f033f6aad8837ee7f127bdd8549dd82d9c89c7.png)
二、使用"Image Builder"建立後續要用來串流使用的程式
1. 左側點選到Images選單後,切換上方的標籤頁選擇Image Builder,按下Launch Image Builder來開始我們的第一步囉
.31de455de4eb3e108f4fd319315ddeaf8b76cbd1.png)
.42a6d6a83c6a132ca5c89b6e88802102e7e98259.png)
.dc9968625097ccf6aa93e028a7bc146aa68c3fc0.png)
.6f80998f3c3776710373a979b9eab5e593acd9f1.png)
.3a4b1776c37ce28382a704cbd20a3ad2d9bfac51.png)
5. 下方的VPC Endpoints / IAM role的進階選項,可以根據需求設定。簡單來說,就是是否允許使用者在特定VPC(內網)中,以及使用特定的IAM role套用到Image builder中時使用。但因為我需要在Internet環境隨時可以存取,所以這邊選擇了預設值就好(如果是企業內部使用,建議先跟AWS架構師討論過再決定要怎麼連線喔)。
.08b8ea3070e81c6bbc5af5b46fc1745f46419c6d.png)
.2ed61fe6246d2126ff0a6d993b7da8fcabf0c478.png)
.e566ea2b3832116c768fc47f63329d974b3295eb.png)
.fd298fa52daadb00d9c98de327457821b1aabf60.png)
.f13a03f3e07648cad728aa1df42116b4340ccf53.png)
三、設定要提供存取的App內容
(這個步驟是整個AppStream設定中最重要的一步,因為程式的安裝及設定,還有測試,都在這個階段要完成,所以格外重要,讓我們一起來看看吧)
-
首先是選取我們建立好的Image,然後點選上方的"Connect"
-
等待連線後,會看到下方選擇使用者視窗
.32f8d16e91c287141c884dc7e640cd504111e1f3.png)
3. Administrator是安裝需要程式時候要選擇的使用者,安裝好程式後所做的設定不會保留下來,需要切換至Template User來進行設定
3.1 我們先以之前下載好的免費電路模擬軟體LCircuit當成例子。在下載(並且安裝完成)後,點選"Add App",並選擇該目標程式,在進行下一步前,建議先執行看看是不是可以正常運作。如果要讓使用者透過AppStream 2.0使用的程式不只一個,就逐一完成安裝並加入選單中
.93434d6f420cc85c2bcf342fe2717df7edb00b02.png)
3.2 可在開啟的視窗中設定該程式的顯示名稱等資訊,完成後選擇"Save"。此處要注意,若是無需安裝可直接執行的程式,不要將程式的資料夾放在桌面或使用者資料夾下的目錄中,因為在切換成其他使用者(如Template/Test User等)的時候,是無法進行存取的;建議可以放在共用目錄或是C:\下
.6e67f90776162f18d5cc986fd31494dc94b4369f.png)
4. Template User是針對安裝好的程式來進行使用者設定。常會使用在需要帶特定參數來啟動的程式上
4.1 選擇"Next",並在下個頁面選擇"Switch User"切換至Template User
.41ef3f3383765872641096a5c51b5193a822aa4d.png)
4.2 切換至Template User後,點選稍早加入的LCircuit,確認是否可以正常啟動。若無法正常啟動,建議一樣要切回Administrator檢查是不是因為安裝或是資料夾擺放的位置造成無法開啟的問題
.71bc1bb1ce89a15a7d680236d6e3246910559f9e.png)
1. 左側點選到Images選單後,切換上方的標籤頁選擇Image Builder,按下Launch Image Builder來開始我們的第一步囉
.4a8f40072537b6ec5f9ee549b41820d5ca70a0e0.png)
.fdea573c4aca5048b07841a89f015357c3377216.png)
5.2 看來使用上沒有問題,我們可以關閉程式後,再次點選"Switch User",切換回Administrator,並且點選右下角的"Next"
5.3 為了讓程式效能最佳化,我們要在這個頁面點選右上角的"Launch",讓系統可以針對程式利用的資源進行分析後進行優化
.0e860d630cc8f1bd30698a9b7ef5c2b4ced202bc.png)
.19046b56a71441d5488063b48330689b45b419b4.png)
.e5f7da29da027c49da1fc5ac76f7bfe13ad0af15.png)
.10bcece46026d1bc7479e28e40399378b932d2a1.png)
四、建立Fleets ,此為使用者連線時的底層設定(可以跟Image Builder的Instance type不同,這邊的為使用者連線時會啟用的Instance類型)
.9b8c2402f7ed24f1c4a3382b7d72d21dbf39d151.png)
.c1a355e36f0827dec48dcfefa0b3069979e27169.png)
.ec02228d44bbe8212793ec786299cc2852246b4b.png)
.9c123a4aebe5d7bf1120b1c9025afe2fb60dc312.png)
.f9c237f308a5cbc650380ae6f51f82b501333d4e.png)
.a5e93bb3306904e81db94389fffb5def2b8cdb1a.png)
.64fd6216d60a1a4b20df0460a2dd6486b4f2bddf.png)
.8f77dd4313b0325ed5ed236740a597d322c8f9d6.png)
.b81ee18c0371184c210b0ef661cf7255df5664ac.png)
.75cf89e65f06ed73ff78cb2466a93b4ac585922e.png)
五、設定供使用者存取的"Stack"
.75e4948d739cf711e10ca59789042f12e2e5b372.png)
.6628d6f5f55e8a9e1e4bd22a881821dd24f4bdfa.png)
3. Fleet的部分可以選擇稍早建立的Fleet作為運行的底層(此為Optional,也可以點選右側"Create new fleet"來在這邊建立Fleet)
.409bdb0ebf180ff086f3da0731ee816ba8af85f4.png)
.603ef446218292d2d9c95604780becacbc4f3a70.png)
.40713264fddeaf6eedcea71a1fc065d2c0fd33d0.png)
.25a57fe11af61c2063a588b45498cc9a1d3f1478.png)
六、User pool
.4135a9f6d57e670457790950b754f9e6b43d608a.png)
.8eb3af3fc6642ab6be112c2185ee7032715d3fa1.png)
.b7d412daf0692282df8b72de43868e63dd9244d4.png)
.667ab3578e095a0b964e2fdecaba894abc6bc3ac.png)
.226437bc20d6c74d97a3fcc1fc96aa481b2c1796.png)
七、後記
這個粗淺的操作說明,希望可以幫助到有需要類似需求的朋友們,當然AWS的業務還有架構師都非常樂意協助相關需求的建議及規劃,不管是針對文章內容有疑問、建議,或是想要進一步規劃類似架構需要諮詢,歡迎造訪台灣 AWS,可在網頁的最下方聯繫到我們喔!