AWS PrivateLink 深入教學:NLB、Dual-stack 與 Private DNS name 整合實作

在前一篇教學中 如何將現有 NLB IPv4-only 架構升級為 Dual-stack,我們已經配置好一個支援 Dual-stack 的 NLB 了。 現在假設有一個需求:「客戶需要調用我們的 API,且他們也使用 AWS。」有沒有辦法不經過 Internet,而是直接透過 AWS 的骨幹網路 (Backbone),將流量送到我們的 NLB?同時避免使用 VPC Peering 或 Transit Gateway,確保網路不完全打通,以降低潛在風險,例如資料洩漏或不必要的安全隱患。 答案就是 PrivateLink 什麼是 PrivateLink? AWS PrivateLink 是一種安全的網路技術,允許服務提供者 (Service Provider) 將他們的服務透過 VPC Endpoint 暴露給使用者 (Service Consumer),而不需要將流量經過公網 (Internet)。它能確保所有流量都在 AWS 的骨幹網路內部傳輸,提供高安全性、低延遲的解決方案。 PrivateLink 的核心特點: 避免暴露服務到公網: Service Provider 的服務不需要有 Public IP,Consumer 可以透過 Private IP 訪問這些服務。 簡化網路架構: 無需設定 VPC Peering、Transit Gateway,所以不用擔心整個網路打通的安全風險。 跨帳號支持: Service Provider 和 Consumer 可以位於不同 AWS 帳號,甚至不同 AWS 組織。 多 Region 支持: PrivateLink 現在也支援跨區域的流量傳輸 (需額外配置)。(Reference) 可以自定義的 Private DNS name: Consumer 可以直接使用 Service Provider 提供的 Private DNS Name 調用服務。 Terminology Service Consumer: 使用服務的一方。Consumer 會在自己的 VPC 中建立 VPC Interface Endpoint 來連接到 Provider 的 Endpoint service。Consumer 必須等待 Provider 接受連接請求後,才能開始使用服務。透過這種方式,Consumer 可以安全地存取 Provider 的服務,而無需經過公有網路。 Endpoint: VPC Interface Endpoint (VPCE) 是一個彈性網路介面,具有私有 IP 位址。它作為進入 AWS 服務的進入點,讓 VPC 中的資源可以私密地存取這些服務。在 PrivateLink 架構中,這是 Consumer 端建立的元件。 Service Provider: 提供服務的一方。Provider 需要建立 Endpoint service 並將其與 NLB 或是 GWLB 關聯,然後可以選擇性地允許哪些 AWS 帳戶可以連接到此服務。Provider 負責接受或拒絕來自 Consumer 的連接請求。 Endpoint service: Endpoint service 是由 Service Provider 建立的服務,可以與 Network Load Balancer (NLB) 或是 Gateway Load Balancer (GWLB) 關聯。這個服務允許其他 AWS 帳戶 (Consumer) 通過 VPC Interface Endpoint 連接到 Provider 的服務。 Section 1: 配置 PrivateLink Step 1: [Provider] 創建 Endpoint service 在 Section 1 - Step 1,我們要扮演 Service Provider,我們是提供 Service 的人。...

January 12, 2025 · 7 min

如何將現有 NLB IPv4-only 架構升級為 Dual-stack

目標 將現有的 IPv4-only NLB 升級為支援 dual-stack 讓 Target Group 從純 IPv4 轉換為支援 IPv6 確保整個架構能同時處理 IPv4 和 IPv6 的流量 我們將逐步完成這個轉換過程,包括配置 VPC、更新 NLB 設置、修改 security groups,以及設定 target groups。每個步驟都會提供詳細的操作說明和技術細節,幫助您順利完成這個升級過程。 現有架構 現在的架構是一個很基本的 IPv4 NLB(Internet-facing) → Target Group (IPv4 Instance type ) 的架構 點擊展開以查看詳細內容 VPC NLB Details Security Group Target Group Instance Security Group Section 1: NLB IPv4 → Dual-stack Step 1: VPC 新增 IPv6 CIDR 進入 VPC 頁面: 選取 VPC 展開 Actions menu 點擊 Edit CIDRs 新增 IPv6 CIDR:...

January 8, 2025 · 6 min

[Terraform Module] 一個低成本、高靈活性,輕鬆預熱上百個 Lambda Function 的解決方案:Tag-Based Lambda Warmer

前言 - 現有架構的挑戰 最近,我在一個 Serverless 專案中遇到了一個讓人頭疼的挑戰。這個專案運行在多個 Lambda Functions 之上,為了避免冷啟動帶來的延遲問題影響使用者體驗,需要確保 Functions 處於「熱啟動」狀態(Warm Start),如何有效管理大量的預熱 (prewarm) 操作變得非常棘手。 常見的解決方案之一,是為每個 Lambda Function 配置一個 EventBridge Scheduler,雖然可以達到預熱效果,但: 管理成本高:需要單獨為每個 Lambda Function 配置 Scheduler,數量多難以管理。 靈活性不足:難以快速響應需求變更,重新部署新的 Lambda Function 時,需要修改 Scheduler 的 Target。 基於這些挑戰,我開發了 Tag-Based Lambda Warmer Terraform Module,提供了一種低成本、高靈活性的解決方案。 Tag-Based Lambda Warmer 介紹 Tag-Based Lambda Warmer 的核心理念非常簡單: 將需要被預熱 (prewarm) 的 Lambda Function 加上指定的 Tag(例如:Prewarm=true)。 當你部署 Terraform Module 後,EventBridge Schduler 會定期調用 Tag-Based Lambda Warmer,Warmer 會根據 Tag 自動篩選需要被預熱的 Lambda Functions 這套解決方案特別適合以下情境: 低流量、間歇性工作負載:例如開發環境或小型應用中的 Lambda Functions,需要偶爾處於熱啟動狀態,但不需要持續高效能。 多環境管理:通過不同的 Tag(例如 Environment=dev 或 Environment=prod),可以輕鬆在多個環境中靈活部署。 成本敏感型專案:對於中小型 Serverless 應用,這種解決方案能有效降低運維成本。 還是要提醒,這種透過定期調用來保持熱啟動狀態的解決方案,只能讓你保持至少有一個熱啟動狀態的 Execution Environment,今天流量突然有一個高峰,碰上冷啟動是不可避免的...

December 30, 2024 · 2 min

一起回顧我的 AWS Educate 雲端大使成長之旅

(原本沒打算寫那麼多,結果每個故事的前因後果,一個連結一個,就越寫越多了) 最近我從第六屆 AWS Educate 雲端大使計劃畢業了!第六屆大使計劃任職期間真的非常充實且充滿挑戰,我也在這段旅程中成長了非常非常多。 這篇文章會從我踏上資訊科技之路開始說起,一直到我加入 AWS Educate 雲端大使計劃,再一一回顧我在第六屆 AWS Educate 雲端大使中的一些成就和重要活動,最後也會分享一些我在這段旅程中的收穫和成長,以及我的近期未來規劃。 我和 AWS 的淵源,我又是怎麼一路成為 AWS Educate 雲端大使 「我覺得我很幸運,我算是在很早期就對於職涯目標很明確,而且到越後期越明確。」 講到這個,回憶起高中時,學校為了我們選組還有選大學科系有做了兩次興趣測驗,我只知道測驗結果顯示我的興趣鑑別度很明確,而且我在資訊管理學系超級高分,重測一次的結果也是一樣,也因此我很早的志願就是「資訊管理學系」,所以學測完申請學校時,每個學校都填資訊管理學系。後來就進入了輔仁大學讀資管系,現在回頭看,真的沒選錯路,完完全全選對路。 2022 踏入職場後與 AWS 的第一次接觸 我是從大二開始進入職場實習的,這間公司叫做 eGroupAI,主要產品有兩個,分別是人臉辨識系統和 SaaS 企業管理平台,當時我就是以一個菜鳥實習生身份進入,也是第一次見證到真正業界的開發流程,當時的公司主要使用 Spring Boot,如果要加入公司的正式開發的行列,需要歷經一個實習生考試,沒有考過就是直接掰掰,所以當時白天實習,晚上回到家要瘋狂讀課程和寫作業,還好最後考過了。 加入正式開發的行列後,第一件事情就是要配置好開發環境,光是裝 IDE, JDK, 配置一堆有的沒的就可以用掉一整個工作天,我當時跟 AWS 的第一次接觸,就是主管叫我去安裝 AWS CLI,配給我一個 IAM User 的 Access Key ID 和 Secret Access Key (簡稱 AKSK),然後輸入一些指令,當時我其實也不知道那是什麼,問了主管這個是什麼東西,他說因為開發會有一段會經過雲,後端有用到 DynamoDB,這樣你在本地開發時才有權限去處理那邊的東西。 而也隨著我在學習的過程,我開始對整個軟體的運作流程以及架構逐漸明朗,也因此我與雲端的淵源越來越深,認識的也越來越多。2022 年的某天,我參加了 AWS Educate 舉辦的工作坊,而且是辦在 AWS 辦公室裡面,正好可以去參觀一下。當時在工作坊尾聲時,有一個最大獎,只要回答出今天講的服務的一個實際應用案例,就可以拿走,正好我當時開發時就有處理過 S3 相關的東西,所以我腦海馬上蹦出我在開發上的實踐,最後這個大獎就被我拿走了,當時這個小小成就感影響我蠻大的,讓我有繼續探索雲端技術的動力。 不夠自信讓我差點卻步申請 AWS Educate 雲端大使計劃 隨後就是我迷上了雲端技術,當時 AWS 大大小小的活動我都一定會參加,但是 AWS 的活動都舉辦在平日,為了參加活動我都必須翹課,而且排班時都要避開 AWS 活動日,而當時我對容器化很感興趣,所以每個活動的下午分場議程我都專挑一些 Modernization 或是 Container 相關的主題,那時候有一個 Solutions Architect (SA) 他叫做 Kerrigan ,我特別喜歡他的演講風格,而且他演講的主題多半都和我感興趣技術有關,那時候我剛開始經營 LinkedIn,當時我認為建立關係是一個很謹慎且重大的事,很怕一個菜雞學生跟大神建立關係會被拒絕,某次演講結束後我就寫了一段訊息然後鼓起勇氣去建立關係,這是我第一次跟原本不認識的人建立關係,而沒多久後我看到被接受邀請的通知就超開心,而且 Kerrigan 也有給予我一些正面回應。現在回頭看,雖然好像只是簡單的建立關係,但對當時的我來說是相當大的鼓舞,這是能讓我繼續往雲端技術探索動力來源之一。...

November 17, 2024 · 4 min

AWS Site-to-Site VPN with Libreswan 建置教學 (Step-by-Step)

最近正在準備 AWS ANS 證照剛好學到 AWS Site-to-Site VPN,也因此實作練習對我來說很重要所以打算寫這篇文章,一方面記錄實作過程一方面留著可以作為教學文章供他人參考 這篇文章將教學如何在 AWS 上建立 Site-to-Site VPN,我們會使用 Libreswan 來配置 VPN Server,這樣就可以在 AWS VPC 和 Data Center (本文示範會在 N. Virginia Region 中建立 VPC 來模擬 Data Center) 之間建立一個安全的 VPN Tunnel,讓兩者可以互相通信 一、創建 VPC (Oregon Region) 首先我們先創建架構圖右邊 AWS 的 VPC,因此我切換到 Oregon Region,並且依照下圖配置 VPC 以及 Subnet 二、配置 Route Table (Oregon Region) 然後創建 Route Table,並和上一步創建的 Subnet 建立 Association 我們要修改 Subnet 的 Association,確保該子網與我們剛才創建的路由表關聯在一起 如下圖配置 Route Table association 三、創建 EC2 Instance (Oregon Region) 接著進入 EC2 Console 頁面,現在要在剛才的 Subnet 啟動一台 EC2 Instance,若沒提到的地方可以保持預設...

October 22, 2024 · 5 min