引言#
今天這篇文章,我很偷懶的讓我們家 hana 幫我整理草稿跟大綱,這些是我自己在練習 ecs 佈署的過程當中,發生的事情跟感想跟大家分享,希望對大家有一些助益。
起點#
其實事情的一開始非常的單純,我就是看到論壇上面有夥伴在發問說為什麼他的 agy 登入後,放在 ecs 等一兩個小時後,就沒辦法維持登入狀態。 剛好我那幾天一直在測試東西,常常看到的錯誤訊息就很有感,覺得我好像可以解決,我就想說那我也來弄一下 deploy to ecs 然後看看問題能不能重現吧。 如果可以重現問題我就來看看是甚麼原因,如果不能重現問題那我就把我的步驟記下來,至少也有一個SOP去做deploy
第一版怎麼做出來#
其實所有的開始應該是源於虎哥這串教學
我也很想嘗試一下所有 token 放 secret 的感覺,用起來會是怎樣的一個體驗我原本還想找一下虎哥當初發的原始截圖,說明 pre-boot.sh的細節跟程式碼,但我找不到~好吧,反正就是這樣子,我覺得萬事俱備,如果人家把飯跟湯匙都放在桌上,我要做的就只有拿起來吃了吧?剛好那天晚上又跟虎哥聊了一下,直接丟給我一個超強的工具 ecsctl,整個開發體感跟在本地使用 kubectl 沒多大區別,我就依照著這些資源,手動試試看,將第一個 bot 跑起來
問題確認#
一開始我用的底層是 agy,想當然的我就登入容器做登入,然後就想說放著觀察,當然囉,實際測試後沒啥問題,於是我就很納悶,在想到底為什麼呢?在做 ecs 練習的這段期間,我將它做成了一個 repo,我真正的目標是期望由 coding agent 掌握這些知識然後將 ecs bot 的維運任務交給這個 coding agent 處理,未來或許再把這隻 coding agent 佈署成 main openab agent,不過那都是設想,也因此我自己做了一些機制來滿足我的一些想法,當中有一個是我希望佈署出去的 agent 一開始預設抓回來的靜態文件,必須要能夠依照特定的底層跟名字有不同的文件。所以我為這個東西準備了一個機制是將 repo 的文件複製到 s3 buecket 放著,這樣 pre-boot 的時候就會還原,其實這就是問題點,因為我沒有特意避開 layer 1 的容器狀態,所以我上傳後,容器的登入狀態就被蓋掉了。
為什麼開始變亂#
在這測試的過程當中,我當然一開始沒有全知視角,也是逐層問答,慢慢了解整個架構跟設計,而在這個過程當中 coding agent 也幫我準備了查看的工具,他幫我抓 aws 的資料,看 ecs 佈署的狀態,容器的 log 資料,我一開始真的沒有仔細看,傻傻地相信他給的這些狀態跟LOG,事後才發現,ECS 佈署的時候有個機制是新舊交替,所以同時間會有兩個容器在上面,因此他這個時候依據原先寫法抓到的 pre-boot log 其實會是錯誤的,這導致我一直在鬼打牆,並且耗費很多的時間等他 deploy 測試,接著他 deploy 又抓到錯誤的 log 給我…
真的是花惹發了~~
重構#
總之,我最後發現這件事情,同時我也覺得 repo 開始變得很亂,從文件到目錄,以及debug script、一些維運的 script 都很亂,有的還是錯誤的內容,因此決定來做重構。
其實在一開始的時候我曾經用 mimo 來幫我 review,他給的建議當中有一條是要把 pre-boot 去抓 aws cli 的時候,因為他說都是連外網,應該可以善用 s3 bucket 放在快取。 很妙對吧?但當時我根本沒仔細看,就 accept 按下去了,其實這個就是很愚蠢的建議,好在程式仍能跑,他有做 fallback,如果沒快取或失敗,那就還是從外網抓。
諸如此類的問題不影響功能,但查看程式碼邏輯就會覺得很妙,充斥著很多奇妙的 part。在重構的過程當中當然也有很多取捨,grok 給出建議要拿 aws cli 要指定版本,要做驗證相信來源。於是他把 pre-boot 塞入了一串 ssl 秘鑰,然後期望在 pre-boot 的時候針對工具來做驗證,當中佈署失敗,最後他告訴我,因為IMAGE沒有 GPG 還是啥的,所以不能驗證。
然後我們又把那部分調整給還原了,就安裝特定版本就好,別搞別的了,在這一連串的重構過程,遇到很多類似場景的決定,都需要自己進行取捨,也是因為在重構過程當中,慢慢了解整個東西,為什麼這樣做,我決定怎麼做的過程當中。學習到很多經驗
架構#

總之,我覺得這次的經驗讓我得到的收穫是,真正去 own 一個 public repo之後,自己心態上的轉變以及對於設計理念的取捨,反而不是技術上或功能上有什麼精進,更多的應該是思想上的收穫及想法,因為要思考的東西從自己一個人,變成了鑰思考其他人,這當中肯定會有衝突,但哪些東西要作,哪些東西不作,理由是什麼,都與當下的情境以及資源、用戶多寡有關係,重要的還有做這個REPO的動機跟初心是什麼,其實做任何事情都是這樣的,搞清楚動機。原本的目標,持續前進,中途遇到困難或轉折,想清楚要怎麼前進就好了~