2024 伊雲谷實習計畫 - 雲端工程師實習心得

大家好,我是 Shiun,今天想和大家分享我在 eCloudValley MSP 部門擔任雲端工程師實習生的經歷。這段實習讓我學到了很多實用的雲端技術,同時也在工作中遇到了許多有趣的挑戰。 實習工作內容 在 eCloudValley 的實習期間,我主要負責以下幾項工作: 學習使用公有雲,包括 AWS 和 Azure。 開發公司內部的 GenAI 應用。 與同期且同部門實習生共同開發專案。 定期與 Mentor 開會。 參與最終展演。 撰寫系統文件。 實習期間大事紀 專案大改方向 在 eCloudValley 實習期間,我們的專案經歷了一次重大轉變。起初,我們的任務是開發一個 AI Bot 開單助理,目的是幫助客戶在雲端遇到問題時能夠迅速獲得支援。這個專案的初步構想是: 客戶向 AI 助理求助,並向 AI 助理提供必要資訊,例如: EC2 SG Inbound Rule, 健康檢查狀態… 等等 如果客戶提供的資訊不夠明確,AI 助理要明確地告知客戶還需提供哪些資訊。 AI 助理彙總客戶問題,轉化為技術人員易於理解的語言。 將資訊轉化後,開 ticket 到開單系統。 然而,在實作過程中,我們發現這個 AI 助理的效果不如預期,且後續優化存在技術瓶頸。客戶問題過於多樣化、且問題幾乎都很具情境,不是那種有標準解答或是標準 SOP 就能解決的問題,所以 AI 助理難以處理,導致準確率低,最終還是需要人工介入,反而增加了工作量。 因此,我們在 4 月底決定將專案轉變為一個「會議錄影機器人」。這個機器人會被邀請到 LINE 群組中,默默記錄每一條訊息以及圖片 (圖片透過 Claude 3 Sonnet 取得 Caption)。TAM 只需在群組中輸入特殊指令或貼圖即可控制錄影,最終在前端頁面查看記錄並由 LLM 總結,創建 Ticket 到 MSP 部門的 Ticket System。...

July 20, 2024 · 1 min

如何使用 Lambda 處理 AWS Cognito User 首次登入被系統要求強制變更密碼

情境描述 上圖顯示的是我剛在 Cognito User Pool 中新增了一個 user,可以注意到箭頭處顯示 Force change password。 當這個 user 嘗試首次登入時,他們會遇到這樣的情況: { "message": "New password required", "challengeName": "NEW_PASSWORD_REQUIRED", "session": "AYABeAsYJsR3yEr0iJssKPPUPEgAHQABAAdTZXJ2aWNlABBDb2duaXRvVXNlclBvb2xzAAEAB2F3cy1rbXMAS2Fybjphd3M6a21zOnVzLXdlc3QtMjowMTU3MzY3MjcxOTg6a2V5LzI5OTFhNGE5LTM5YTAtNDQ0Mi04MWU4LWRkYjY4NTllMTg2MQC4AQIBAHhPj7k9zU4nGXUQUvM0Ccwk42DS-fm3vKmH75ktTrktNQG1gnjl6HkUVUYN1J_HPow6AAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMulTha32s34j2CmQWAgEQgDtog8CDFh2e-4YyjM2kB_MXheMgmrdY_IF3aN9TImZXddMBj7djEAPPduLZnG3ddBLYQa8x3T3WPKUkvwIAAAAADAAAEAAAAAAAAAAAAAAAAADCbdmpLPo0E4QkWLlyH8ov_____wAAAAEAAAAAAAAAAAAAAAEAAAC1oMtgshmuUU4fk36WHKBzPgJEoE1MmL0PFyhR9lRcimImOIObhhxvC1fwiYylgbYx0Gu0i1cp5Le8AvrAnUGEJjZp54TMPP4N-JCT3qSrHeq_Kat_2CuECVSQqkc1qH4z9FVOTvAnos4FrDSn2W6KvFfLo8YQh2LJxM1h3GdIeyYqj7Ipfk6PZKGYmV5P741rRMNcuYBtvE8Hq9gVqMbEPG-c5MppY_q9JoG9TyQRN7rVGlZf62_WtTqST2F3-DZPoXTMTyY", "challengeParameters": { "USER_ID_FOR_SRP": "shiun", "requiredAttributes": "[]", "userAttributes": "{\"email\":\"xxxxx@gmail.com\"}" } } Cognito 回傳了一個 NEW_PASSWORD_REQUIRED 的 challenge,同時給了我們一個 session token。這就是我們需要處理的 case。 解決方案 要解決這個問題,我們需要提供一個 change-password 的 API endpoint,讓 user 可以順利更改密碼。整個 flow 大致如下: User 首次登入 Cognito 回傳 NEW_PASSWORD_REQUIRED challenge 和 session token 前端帶著 session token 呼叫我們的 change-password API 密碼更改成功,user 順利登入系統 以下是一個處理這種情況的 Lambda function 範例:...

July 19, 2024 · 2 min

深度解析 AWS API Gateway 的 Lambda Proxy Integration 功能

在 AWS API Gateway 創建 method 時,我們可以指定他要把請求傳到哪個 AWS 服務或是其他 HTTP Endpoint…等等,而如果你選擇 Lambda,你會看到有一個選項是 Lambda Proxy Integration,那我把它勾選起來會怎樣呢? TL;DR 如果有打開 Lambda Proxy Integration,接著我們到那個 Resource 的 Method 頁面看一下,會看到下圖的提示 Proxy integration For proxy integrations, API Gateway automatically passes the backend output to the caller as the complete payload. 但也許沒有很好理解,所以我們後面會實際打 Code 來示範,但我這邊先稍微解釋一下打開這個功能的影響: 完整的 HTTP 請求資訊:啟用 Lambda Proxy Integration 後,API Gateway 會將整個 HTTP 請求打包成單一的 event object,並傳遞給 Lambda Function 簡化的處理流程:Lambda Function 接收到的是一個包含了所有請求資訊的 event object,因此不需要再通過模板或轉換就可以直接處理請求。這樣簡化了函數的輸入處理,因為 Lambda Function 已經包含了所有必要的請求資訊 控制 HTTP Response:Lambda Function 需要返回一個特定格式的物件,這個物件包括 Status Code、Response Headers 和 Response Body。由於 Response 是直接由 Lambda Function 生成的,所以開發者可以完全控制 Response 的格式和內容 效能和成本效益:由於請求處理的過程更加直接,減少了中間的處理和轉換步驟,可以提高處理效率,可能也會在某種程度上降低成本 總之,選擇 Lambda Proxy Integration 可以使得與 AWS Lambda 的整合更加緊密、直接和高效。這適合需要精細控制 HTTP 響應的場景,或者希望簡化 API 與 Lambda 之間交互的架構設計...

June 14, 2024 · 4 min

要導入 IaC?用 Terraform Import 導入現有資源

Terraform Import 簡介 Terraform Import 是 Terraform 中的一個功能,允許你將現有的基礎設施資源導入到 Terraform 的狀態文件中。這樣,你可以將已有的基礎設施與 Terraform 的配置文件同步,並開始使用 Terraform 來管理這些資源 什麼時候需要用到 terraform import? terraform import 並不是一個自動偵測 AWS 資源上的東西,然後自動幫忙寫程式碼的工具 如果你以前沒有使用任何 IaC 的工具,都是直接在 AWS Console 上管理和創建資源,但現在想要導入 IaC,然後把那些「現有資源」導入到 Terraform 來管理,那你就會需要用到 terraform import terraform import 的主要目的是將已經存在的基礎設施資源導入到 Terraform 的狀態文件中,這樣你就可以用 Terraform 來管理這些資源。例如,如果你有一個已經存在的 AWS EC2 實例,而你現在想開始用 Terraform 來管理它,你需要導入這個實例以便 Terraform 知道它的存在和當前狀態 Synopsis $ terraform import [options] ADDRESS ID ADDRESS 是 Terraform 配置中資源的地址。例如,aws_instance.my_instance ID 是資源的唯一標識符,這個值根據不同的資源類型會有所不同。例如,對於 AWS EC2 實例,這個 ID 是實例的 ID(例如 i-1234567890abcdef0) Example $ terraform import aws_instance....

June 6, 2024 · 3 min

學生時期的最後一場比賽: 2024 GenAI Hackathon 比賽紀錄

比賽簡介 這場比賽是 DIGITIMES 主辦,AWS 作為技術支援,總共邀請六個企業來命題,分為黑客組和創意交流組(簡單來說就是技術和非技術組),而黑客組在這場比賽必須使用 AWS 相關的服務和模型依照企業命題打造出 LLM Application 比賽前 賽前工作坊 在比賽前,比賽主辦方有舉辦多場賽前工作坊,讓我們熟悉 AI 技術,而我只要有空都有去參加,我把我在的工作坊的學習筆記都寫在我的 Notion 日誌 2024/04/27 - 基礎 AI 工作坊 2024/04/28 - 基礎 AI 工作坊 2024/05/05 - 進階 AI 工作坊 (這場有 GameDay) 2024/05/07 - Gogoro 企業數據工作坊 其實 AI 這領域真的不是我的專長領域,我自己會開始開發 GenAI 應用是從加入伊雲谷後開始的,在伊雲谷執手的專案就是一個 LLM Application,加上 GenAI 話題真的是時下最火熱的話題,活在這時代,開發的日常要不碰到 AI 真的蠻難的 而賽前工作坊的主講者們真的人都很好,講解的也都很清楚,特別感謝 Roger 和 Ginny 在工作坊的教導,以及 Scott 在 GameDay 當天賽後的支援,在賽前工作坊也和現場的人交流,認識了不少技術高手! 比賽還沒開始,但光是前面的工作坊就覺得這次的參賽體驗真的很棒,賽前能跟這些技術大神學習,真的是一次難得的機會。 比賽題目公布 在報名時是要填寫競賽主題的志願序的,我們當初投的第一個志願是「智慧應用」第二為「智慧移動 - Gogoro」,最終我們被安排在智慧移動的組別。 而我們這組的題目如下: 官方提供的數據就是 Gogoro 官網上的車主手冊: https://support.gogoro.com/tw/manual/collections/236738689176894/ 基本上這個命題絕對逃不過 “RAG”...

May 21, 2024 · 3 min