跳到主要內容

發表文章

目前顯示的是有「AWS」標籤的文章

[野人獻曝] 關於建立 AWS 服務架構的工具

通常為了要達成 IaC 的目標, 架構師還是 DevOps 工程師都會用很多工具來達成目標。 而比較通用的工具大概會是 Terraform / Ansible 之類的。 不過實際狀況是因為 AWS 服務眾多反而是使用 AWS 自家工具來做還比較方便。 所以用個表格來比較: 比較表 AWS CDK / CDK For Terraform GoFormation 原生 CloudFormation JSON / YAML 優勢 較為高階,有些細節不用特別處理(例如建立 Subnet 不用自己額外寫 RouteTable 那些東西) 跟程式語言結合,使用起來比較可讀好懂 跟 Terraform 結合的話要學的東西相對比較少一點 最接近原生 JSON / YAML 寫法,但又擁有建立每個資源時很快就可以知道要丟什麼東西進去的優勢 跟程式語言結合,可以做一些靈活變化 原生寫法不解釋 如果有新東西的話通常會第一支援 弱勢 因為太高階,比較細項的修改反而變得很麻煩 老實說,我覺得好像沒什麼弱勢!大概只有部分函式不能用還有需要產生檔案比較麻煩一點 很低階,所以在寫的時候要搭配文件才能知道需要丟什麼東西進去 一不小心會寫出上千行的檔案,也會不小心改錯項目出包

[野人獻曝] AWS Certified Solutions Architect 認證考試心得

大概是去年聖誕節前夕, 不知道被什麼打到, 突然想考一張 AWS 認證考試, 所以就很突然地報了 AWS Certified Solutions Architect - Associate 的考試! 為了那場考試我還買了對岸出的翻譯教科書( 原文版 、 簡體版 )讀。 只是......因為我真的很不會讀書, 外加我上班真的超懶, 那本書我只看了前面幾章, 然後隨便做了書內的練習題和 Google 到的考古題, 就直接上場考試了! 雖然是很有驚無險地通過了啦(720 分通過,我考 761 分)..... 然後今年十一月左右也是因為很突然就離職, 所以也是很突然就決定再去報 AWS Certified Solutions Architect - Professional 的考試! 這次考試比之前稍微認真一點, 除了把那本教科書的後面幾章......的練習題重做外, 也開始狂 K 官方的訓練課程, 外加又多冥想了各種考題方向, 也順便自己開了一些不常用的服務練習(估計帳單也......), 大概是花了一個星期時間專心(?)準備! 這次也依然是很驚險地通過(750 分通過,我考 797 分) ====== 以上都是廢話 ===== 其實我去年考的時候還不知道認證架構師是最難的考試, 不過考完架構師考試後, 其實就會理解到 AWS 認證架構師就某種程度是最了解 AWS 架構的人, 如果一間公司全部使用 AWS 服務的話, 這傢伙應該就是部門的 Center ! 只是有沒有必要考到 Professional 等級就因人而異啦, 畢竟 Professional 級的考題很刁鑽, 遠比 Associate 級更為刁鑽, 除了出現一堆你壓根沒聽過的 AWS 服務外(我看到考題才知道有 EFA 這玩意), 還需要你從安全面、成本面、可維護性去思考架構該怎麼設計(其實 Professional 級這幾個面向的考題遠比 Associate 多), 這就很吃使用經驗和你有沒有想過最佳實踐。 如果是半吊子以為只是比 Associate 難一點點就上場去考的話, 保證很容易就會 GG ! 再次聲明:我真的只是好運考過的 QQ ====== 怎麼準備 ===== 其實不是很建議無謀地只讀教科書就去考! 最好是先有一段時間的 AWS 操作經驗, 至少要理解 VPC / SecurityGroup...

[野人獻曝] AWS CDK8S 初步使用筆記

說到 K8S 喔,就不得不提到那精美的 YAML , 當你想佈個 Service / Deployment 時, 可能會因為你常打還知道怎麼打出來! 一旦你要用的元件是不常用的時候, 你應該會很幹的去翻 K8S 官網文件查! (就跟我之前為了要寫 AWS Cloudformation 時還要翻那該死的文件一樣) 因此 AWS 推出 CDK8S , 讓你開發時比較不需要花太多時間翻文件! CDK8S 目前支援 TypeScript / Python / Java, 不過這裡直接用 TypeScript 做個說明好了。 安裝 CDK8S 工具 npm install -g cdk8s-cli 建立新專案 mkdir /helloworld cd /helloworld cdk8s init typescript-app 開始開發 打開專案的 main.ts ,那就是開發的起點了! 部署 雖然一般都會直覺想到用 npm run build , 但是實際上這會跑 compile / test / generate yaml 三個動作。 在還沒有寫測試之前,建議直接跑 npm run compile && npm run synth , 這樣就能直接產生 K8S 所需要的 YAML(在 dist/ 目錄內) 接著輸入 kubectl apply -f dist/* 就可以開始部署到你的 K8S Cluster 上。 感想 老實說,這其實是個還蠻方便的玩意, 除了常用的一堆元件外, 也可以針對各種少見但就是會用到的元件寫自己的宣告(?), 下次要寫的時候可以提示哪些參數是必須或是該填些什麼, 能夠省下每次翻文件的時間。

[野人獻曝] AWS Go CDK 初步使用筆記

AWS 之前推出了 Cloud Development Kit (CDK) 工具, 讓以前寫 YAML 透過 CloudFormation 建立資源的麻煩和不便減少許多, 只是彼時只支援 C#、Java、JavaScript / TypeScript 以及 Python。 不過最近開始支援 Go 了, 所以我就來稍微試用一下! 為了要使用 CDK Go, 必須確認開發機器上是否有以下工具: aws-cdk :CDK 工具,可以透過這個工具進行建立新專案 / 部署等動作,最新版本: 1.100.0。 Go :由於 CDK 會使用到 Go 內建的 embed 套件,所以版本必須為 1.16.x 以上 aws-cdk-go :CDK 的 Go 函式庫,目前還在 preview 階段,最新版本是:1.100.0 以上工具安裝完後,即可開始建立新專案。 建立新專案 建立一個目錄後並切換到該目錄, 接著輸入: cdk init --language go  然後就會在該目錄下建立出相關的專案檔 開發 使用你習慣的 IDE,打開以該目錄為檔名的 .go 檔, 你所有需要的程式碼即會集中在這裡。 部署 輸入以下指令即可開始部署作業: cdk deploy 輸入以下指令則可以確認這次修改後會有什麼樣的資源變動 cdk diff 輸入以下指令則可以刪除 cdk destroy 注意事項  CDK 有兩種類型的物件: awscdk.NewCfn* 和 awscdk.New* , 前者是為了仍在使用 YAML 操作重複類型資源的狀況下使用, 只需要帶入模板檔路徑與該模板所需參數即可建立相應資源; 後者則偏向懶人包, 可以在建立資源時一併設定其他相依資源的屬性以便一起建立, 如果未設定的狀況下也會以預設的屬性直接建立。

[野人獻曝] 設定 AWS Elasticsearch Service

AWS 什麼錢都要賺, 所以他們就拿 Elasticsearch 來賺錢了, 對於不想自己管 Elasticsearch 服務的人, 只要簡單拿出信用卡解決問題就好了。 設定步驟其實很簡單,大概只有以下三個內容要填: 設定這個 ES Instance 的名稱 設定這個 ES Instance 要使用的機器規格及數目 / 空間類型 / 大小 設定這個 ES Instance 要使用的存取規則 前兩點其實沒什麼, 至於第三點的部分就比較需要談了。 關於存取規則這部分, 如果是 AWS 初學使用者的話建議使用「Allow access from specific IPs」, 這樣就會只限定特定機器可以存取 ES, 後續要使用像是 Logstash 之類的東西同步資料會比較方便(因為不用做身份驗證)。 如果使用「Allow or deny access to one or more IAM users / AWS accounts」的話, 用 Logstash 同步的話就可能要用 logstash-output-amazon_es 這個 plugin 才有可能同步。 不過不知道為何我用這玩意就是會出問題, 也因為如此我才使用限定 IP 的方式來做, 這樣我就可以直接用 elasticsearch 這個 plugin 同步資料。 另外 AWS Elasticsearch Service 設定完後也會有設定好 kibana, 有需要可以再針對這部份善加利用。

[野人獻曝] 在EC2多掛一塊檔案空間

因為我的micro EC2才小小一塊10G空間, 然後被我拿去當畜生機堆著抓到的檔案...... 所以我要準備一塊比較大的空間來放檔案。 幸好AWS真是方便(又云會騙錢), 只要新開一個Volume就可以擁有一塊空間放檔案。 那基本上本文就是稍微為這次行動留個記錄兼教學。 首先請進到AWS Console的EC2部分, 然後再選擇「Elastic Block Store」下的Volumes, 你會看到如圖一的列表, 這是所有的EBS空間。 接著再依圖二指示,選擇Create Volumes, 會出現如圖三的視窗, 基本上由於是要開來做儲存用的, 所以只要輸入空間大小即可。 輸入完成後就會如圖四一樣, 有一塊可用的空間了。 圖一:ebs列表 圖二:選擇Create Volume 圖三:輸入所需空間 圖四:新增完成了 不過這只是把空間開好,實際上這塊空間並沒有掛上你的機器上, 所以接下來要把它掛到你目前的EC2上, 如圖五所示,點擊後會出現如圖六的視窗, Instances選擇需要掛的機器,至於Devices這個欄位請先記下來, 待會需要進SSH做設定。 總之,到這裡web介面的部份就完成了。 圖五:準備掛到機器上囉 圖六:注意highlight的地方 接下來請登入你的SSH, 然後輸入以下指令: sudo mkfs.ext3 {圖六中的Devices名稱} 這個指令會把這塊空間做類似格式化的動作, 可以直接按「y」繼續進行。 接著請再打開/etc/fstab這個檔案,把以下內容貼上去: {圖六中的Devices名稱}          {預定要放在哪個目錄下}    ext3    noatime   0     0 由於這個檔案應該是唯讀的,所以請務必使用sudo編輯此檔。 而內容部分中的  {預定要放在哪個目錄下} 代表這塊空間的路徑, 比方說你想要讓他放在自己的家目錄下, 可以輸入  /home/{your_username}/{blockname} 就可以了。 不過為了解說方便,我這裡假設要放在...

[野人獻曝] 開台新的EC2作台網站主機用吧

一切都是youtube的陰謀...... 其實我這篇文章真的是老梗中的老梗, 相信搜尋「開EC2 教學」應該就會有一狗票文章了。 所以我寫這篇的話,會比較著重於新手開新主機會碰到的狀況。 (再更精準地說,是要拿來給自己做筆記用的 :p) 基本上開EC2的流程, 就是以下的項目: 選擇機器的所在地:如果是要做計算資源的話其實也沒差啦.......這對於網站類型會比較有影響。 選擇要用的作業系統,也就是AMI:選擇你要用的AMI檔對之後的用途會有一些影響,比方說,若是你需要架個網站,但你要是選了一個沒有預先包好LAMP的AMI檔時,你就要在啟動主機後,自己安裝那些東西,會有點麻煩(但如果你有要自定編譯安裝的項目時,這一點其實未必需要)。 設定要跑的instance類型:這個嘛......跟錢有關......不過如果是做需要高資源的運算,還是用比較好的instance會比較好。 設定登入用的private key和security groups:private key是未來登入的根據,當然啦,未來是可以改成要輸入帳號密碼才能登入的機制,這點可以去Google一下就行了。至於security groups的部份,則關係服務是否可以正常運作的要素;比方說你開了一個apache,你必須要在security groups設定允許80這個port,才能讓apache運作,MySQL則是3306,而SSH就是22。如果你的某項服務不是用預設的port號時(如apache用8080時),則記得要改。 SSH登入主機:要上傳檔案還是管理系統、安裝程式都要用到SSH,所以如果上一步驟沒有設定允許22這個port時,那就是沒辦法登入了。另外要注意一點:一般狀況下,大部分AMI的預設登入帳號是 ec2-user ,但部分AMI檔的預設登入帳號就未必是這樣, 比方說 bitnami 開頭的AMI,預設的帳號就是 bitnami ,這點可能要多加注意。 嗯......基本上應該是這樣, 剩下的就是考驗自己的 *nix 管理能力了...... 之後有機會的話再來說說怎麼拿EC2幹些方便的壞事。

[野人獻曝] 讓你的S3上雲端(CDN的意味)

前因太複雜了,所以暫且不表(懶)。 反正後果就是我開了一個CDN來作吐圖的工作。 至於什麼是CDN,請參閱 這裡的說明 。 而這裡嘛,我假設正在看此文的人都有對 AWS 的服務有些概念, 所以就直接進入正題了。 要弄出一個CDN, 你首先必須要有一組AWS S3的bucket, 並且已經註冊了AWS Cloudfront, 這樣才能繼續以下的作業。 如果可以的話,順便多弄幾個domain names, 稍後會有機會用到(但非必須)。 以上準備工作完成後, 請打開瀏覽器,登入AWS Management Console, 然後跳到Amazon Cloudfront那一頁後, 再選擇 Create Distribution , 會跳出以下的視窗。 這個視窗是要指示你的資料來源, 主要分成Amazon S3和你自己的來源, 因為本文是講S3的部份,因此請選擇Amazon S3後, 再選擇放檔案的bucket後按下一步。 (至於那個Download和Streaming目前就不用理會了......我想一般個人是不會有機會作Streaming吧......所以只要選Download就好了) 接著出現的視窗會跟你提示一些設定, 主要就是: 要不要設定多個網域:比方說一個頁面如果用了來自一個網域的多張圖片時,因為瀏覽器的限制會導致所有圖片無法同時被載入。因此設置多個網域對應時,會增進頁面讀取速度。 要不要設定log紀錄:這個嘛......基本上我是沒設定啦,因為我也不會去看那些log。如果你有需要的話可以啟用這個功能? 使用的連線類型:基本上就是選HTTP and HTTPS就好,這個選項同時也會包括HTTPS。如果你的內容僅限使用HTTPS時,請選擇HTTPS Only。 是否啟用:基本上是選Enable啦。不過由於在設定完成後,AWS會先進行一次同步作業,所以你也可以先設定Disable。等到好了以後再開啟他。 Comments:啊......就是備註,要填不填隨便你啦。 Default Root Object:這東西應該就像是找不到資源時所吐的預設值吧?我是沒設定啦,或許哪位可以踹踹看? 按下Continue後, 就會跳到確認頁。 若是確認沒問題的話,按下完成後就可以了。 然後...

[野人獻曝] 為你的Amazon S3設置一個網域

用過 Amazon S3 服務的人都會知道, 當檔案傳到S3後,如果要access那個檔案的話, 要用 http://{bucket-name}.s3.amazonaws.com/{檔案路徑名稱} 才行。 但是這個方法太麻煩了, 所以就可以為這個bucket設置一個像是 store.example.com 的 CNAME 方便存取。 那麼以下就以 store.example.com 的網域(當然這裡的網域請替換成你自己的)為例子吧: 請先到 Amazon S3 的控制台, 新增一個名叫「 store.example.com 」的bucket 接著再到你的dns管理介面新增一組cname,如名稱是「 store 」CNAME的值則為「 store.example.com.s3.amazonaws.com 」 以上兩個步驟就完工了。 接著你就可以在瀏覽器輸入 store.example.com 這個網域看看有沒有問題。 如果出現404之類的狀態的話就代表你設定好, 請檢查上述設定是否有確實做好。