55屆全國技能競賽雲端運算 賽後隨筆 - Part 4

早安,這是「第 55 屆全國技能競賽英雄榜暨第3屆亞洲技能競賽及第 48 屆國際技能競賽國手選拔賽青年組雲端運算職類」系列文章的第四篇,這次來分享科目四的題目和解題過程。

カズサ跟光比

科目四: 大雜燴

共有六大題,內容非常的廣,從 ECS 到 IoT,資料分析到資料串流,應有盡有。 題目大致如下:

  • 給一 ECR,把它用 ECS 跑起來
  • 把 AWS 的 IoT services 都用過一遍
  • EMR studio 分析 S3 資料
  • Kinesis Data Stream 串來串去
  • CodePipeline 增加 CodeDeploy 部署
  • SageMaker AI 模型訓練 (感謝 @garyellow 補充)

這場比完細節大概就快忘光了,歡迎其他選手留言補充,我會再補上 🙇。

ECR + ECS

這題給了一個放在 ECR 的 image,然後要把它用 ECS 跑起來。

花了點時間在看它跑在哪個 port 上,我是直接跑起來看 log 後才知道 port 是 8080,賽後交流才得知原始程式碼有放在 CodeCommit 上。

要做的事就只有建一個 ECS cluster,定義 task,然後跑起來即可。

IoT Services

這題用到了 IoT Core、IoT Greengrass、IoT Analytics、IoT SiteWise、IoT Events、IoT Device Management,對於沒用過的人(我)來說超級複雜,幸好之前碰過 Arduino 跟 ESP32,對於 IoT 的概念還算熟悉,難不倒我。

沒有很想開 IoT services 的服務來做實驗加上忘得差不多,這邊就不寫的太詳細了。

IoT Core MQTT client

這題很多步驟都圍繞著 IoT Core 的 MQTT client,必須使用它來收發訊息。

透過 AWS IoT Core 的 console 來開啟 MQTT client,然後訂閱一個 topic,接著就可以透過 publish 來發送訊息。

基本上都是題目叫你幹嘛就幹嘛。

IoT SiteWise 修正

這題提供的 SiteWise 有個設備的 data stream 的資料來源沒設定好,需要參考其他設備的設定來補上。

後續設定完成後要把四個設備的資料(溫度)在 dashboard 上放在同一圖表上做呈現。進編輯然後把四個設備的資料都拖進去即可。

IoT Greengrass deploy component

根據提供的 json 檔,建立一個 Greengrass component,然後 deploy 到 Greengrass core device。

首先先建立 component,設定完成後直接到 core devices 把它 deploy 上去即可。

IoT Device Management 更換憑證

這題要把 IoT Device 的憑證 deactivate,然後再 activate 一個新的憑證。

題目提供了一個 Certificate Signing Request(CSR),在 IoT Device Management 內建立憑證的某處可以選擇透過 CSR 來建立憑證,建立完然後 activate 即可。

EMR Studio 分析 S3 資料

這題給了一個 S3 bucket,裡面有一堆我看不懂的資料,然後要用 EMR Studio 來分析。 目標為找出資料內的 innermanaouter 的關聯性,看了半小時還是看不懂這三個東西是什麼鬼,幸好直接跑程式就可以拿到答案。

題目提供了一個 EMR studio 可以直接跑 spark job,也提供了對應的 Python 程式碼。 透過 EMR studio 建立 spark job,指定參數為 --inner xxx --outer yyy,然後跑起來即可。

這題做太慢會被扣分,後續還會要求接 S3 event 來自動化,但不知道是我做太慢還是怎樣,有好多檔案跑完沒得到分數。

Kinesis Data Stream 串來串去

這題要求建立一個 Kinesis Data Stream,提供名稱後會開始打資料到這個 stream。

收到 stream 後會要求將它丟到 Apache Flink 做分析,notebook 也有提供,就丟上去直接跑即可。

後面好像還有 Data Firehose 做 transform,但內容忘了,只記得被 Gameday 上的獨角獸說我做太慢。

CodePipeline 增加 CodeDeploy 部署

這題要求在 CodePipeline 上增加一個 CodeDeploy 的部署步驟。

前天就碰過 CodePipeline 了,沒什麼難度,建一個 CodeDeploy 設定部署到 auto scaling group,然後到 CodePipeline 增加一個 stage,把 CodeDeploy 加進去即可。

SageMaker AI 模型訓練

這題我因為點開 JupyterLab 後沒看到 code 以為是 bug 就先跳去做其他題了,所以沒印象。

感謝 @garyellow 的補充,這邊引用他的流言:

  1. 打開預先建立好的 JupyterLab (在 Amazon SageMaker AI 中)
  2. 將專案從 Gitea clone 到 JupyterLab 中
  3. 依說明修改專案中 jupyter notebook 檔案裡的 3 個地方
  4. 改完執行全部程式碼,然後等模型練好
  5. 把練好的模型部署到 Endpoint (用 Amazon SageMaker Studio)
  6. 回答有幾顆星星 (應該是用部署的模型去得出,這邊我沒弄出來)

科目心得

這題的難度比前面幾題高很多,沒記錯難度都是 300,因為涉及的服務非常多,對於沒碰過相關服務與領域的人來說有點難度。

在碰 IoT services 的過程感覺 AWS 這方面其實做的蠻好的,只是我沒錢沒機會用到而已。