# [Module 5] AWS Microservices Messaging & Eventing (.NET version) ## Overview Module tutorial: https://workshops.devax.academy/monoliths-to-microservices-dotnet/module5.html AWS Event Engine: https://dashboard.eventengine.run/login?hash=657c-1db7462984-04 ## 環境初始設定 1. 這一個步驟必須先執行,可以參考 https://workshops.devax.academy/monoliths-to-microservices-dotnet/module0.html ,相關的遠端環境已經把需要的開發工具都已經安裝好 2. 將[步驟 1.1.2](https://workshops.devax.academy/monoliths-to-microservices-dotnet/module0/remote_environment/install_cli/provided_account.html) 完成後,才能繼續往下一步。 3. 將以下 code 複製到記事本,接著再把從[上一步](https://workshops.devax.academy/monoliths-to-microservices-dotnet/module0/remote_environment/install_cli/provided_account.html)取得的 access keys 更新 code 內的 keys。開啟一個 terminal 貼上,即可在該 terminal 內使用 aws cli。 ``` aws configure set profile.devaxacademy.region ap-northeast-1 aws configure set profile.devaxacademy.aws_access_key_id ASIAWLBJNxxxxxx aws configure set profile.devaxacademy.aws_secret_access_key 0kKlyvxxxxx aws configure set profile.devaxacademy.aws_session_token IQoJb3JpZ2luX2VjELz...很長一串 # 跑這行看到 JSON 表示成功 aws sts get-caller-identity --profile devaxacademy { "UserId": "AROAWLBJNXZLY123456JKB:MasterKey", "Account": "43602123456", "Arn": "arn:aws:sts::43602123456:assumed-role/TeamRole/MasterKey" } ``` 4. 上述步驟完成後,就可以開始今天的 [Lab 5.1.1](https://workshops.devax.academy/monoliths-to-microservices-dotnet/module5/explore_messaging_options/install_prerequisite_tools.html) ## 各步驟需注意事項 ### 5.1. Exploring Messaging Options #### 1.1 Install & Configure Pre-Requisites ![](https://i.imgur.com/fBtfzUU.png) 這部分就填上你的公司信箱跟自己的英文名字即可 --- #### 1.2 Setup S3 bucket website ##### 步驟1: 請把"<" ">" 去掉,並且把initial換成你喜歡的英文單字或名字,例如 idevelop-lab5-kerriganlin123 ##### 步驟2 : 下載Message.zip檔案請使用Chrome(已安裝)瀏覽器來進行下載。使用IE會出現安全性警訊無法下載。 ##### 步驟3: * 這邊會有一個步驟使用PowerShell切換到Bash模式。![](https://i.imgur.com/gLwANAA.png) * **執行完bash指令。請在輸入一個指令export AWS_DEFAULT_PROFILE=devaxacademy**![](https://i.imgur.com/f8v0eIf.png) * aws-config.js檔案內容都要更換,改完之後應該類似下圖 ![](https://i.imgur.com/ovOj6oN.png) ##### 步驟5: 在執行說明文件中的aws s3 website ....... 這樣的指令之前,記得在PowerShell中切換到Messaging目錄下才可執行。 ##### 補充 如果開啟靜態網站的時候,頁面呈現一直無法完成載入的狀態,通常問題都會是aws-config.js檔案內容有錯誤,請重新確認內容之後。再執行 aws s3 cp . s3://idevelop-lab5-<initial> --recursive --region $(aws configure get region) --profile devaxacademy 讓檔案重新更新到S3 --- #### 1.2 到 1.6 的部份是在詳細說明實作方式以及原理。有興趣可以自行參閱。 --- #### 1.7 Kinesis Publisher To SQS Subscriber ##### 步驟6 這邊需要建立一個nuget.config檔案,內容就如說明文件。另外存放位置如下圖 ![](https://i.imgur.com/Kzrc4w8.png) ##### 步驟13 說明文件中所提到的Put Records(Bytes)跟目前最新版本呈現略有不同,但不影響整體功能。這邊主要是要呈現如何用監控來看前端所送出的訊息數量跟延遲狀況。 ##### 步驟19 這邊要確定你的畫面這部份要跟說明文件是一致的。才算正式生效。 * 一開始會如下圖: ![](https://i.imgur.com/OM4DvwA.png) * 成功後如下圖: ![](https://i.imgur.com/3G3Y5yE.png) ###### 等待過程大概數分鐘,可以按下圖的refresh重新整理 ![](https://i.imgur.com/RszY4ko.png) ##### 步驟20到22 * 在描述如何檢查Lambda function是否有正常運行,這部份必須確實完成。才能繼續後續的步驟。 * 這步驟檢查方式可以直接回到前面所建立的靜態網站,然後選擇 ![](https://i.imgur.com/2fSVJOL.png) * 試著畫圖產生message。這時候右邊的結果沒出現是正常的。因為我們只把訊息網後端送,但Lambda function尚未處理並送回。![](https://i.imgur.com/3RRGQ2h.png) ##### 步驟24 : 執行完步驟23之後,應該會發現Function.cs檔案編譯錯誤,這是因為尚未把相關的重要lib(AWS SQS and SixLabors)加入。 * 在專案上的package選擇相關依賴管理 ![](https://i.imgur.com/Hgxbc8l.png) * 選擇適當的lib跟版本 **Amazon SQS** 版本直接選擇最新版即可,使用說明文件上的版本會有錯誤 ![](https://i.imgur.com/ZCcn1bF.png) **SixLabors.ImageSharp**,版本一樣選擇最新版本 ![](https://i.imgur.com/s5Fhvs0.png) * 確認沒有編譯錯誤後,執行clean and build 然後透過IDE重新將Lambda Function上傳 ![](https://i.imgur.com/P4wVhWH.png) * 所有設定都不需要修改,直些上傳 ![](https://i.imgur.com/h4chOjR.png) * 檢查一下是否上傳成功,時間應該會是當下上傳的時間。畫面可以重新整理一下,確定是最新資料 ![](https://i.imgur.com/o70h8yW.png) --- #### 1.8 MQTT Publisher to MQTT Subscriber 這部份也是在敘述整個流程合原理,有興趣可以自行參閱