iT邦幫忙

2025 iThome 鐵人賽

DAY 11
0

簡介

在上篇 「DAY10 雲端基礎章-VPC 基礎概念篇」 中,介紹 AWS 的網路服務 VPC (Virtual Private Cloud, 虛擬私有雲),了解它的基本組成與概念,為後續的實作鋪路。

本篇我們來實際盤點一下「本章節」會使用到的 AWS 服務,需要建立什麼樣的 VPC 網路環境,接著來實際建立。


本章節需使用到的服務

其他章節的服務應用,將於後續再陸續建立

  • S3:作為資料存放區
  • Lambda:運行邏輯處理
  • EventBridge:事件觸發(例如 S3 檔案上傳事件)

VPC 架構設計

1. VPC

  • CIDR Block10.0.0.0/16
    預留一個足夠大的 IP 區段,能容納多個子網路(Subnets),並且後續還能擴充 Glue、Athena 等服務。

2. 子網路(Subnets)

  • Private Subnet A10.0.1.0/24

    • 部署 Lambda Functions
    • 不分配 Public IP,確保只能透過 VPC Endpoint 與內部資源溝通
  • Private Subnet B10.0.2.0/24

    • 預留給後續的 Glue、Athena
    • 與 Private Subnet A 共同使用相同的 Route Table
  • Private Subnet C10.0.3.0/24

    • 預留給其餘服務

👉 設計重點:全部子網路都是私有子網 (Private Subnet),不會對外開放 Public IP。


3. VPC Endpoints

為了讓 Private Subnet 內的 Lambda 能與 AWS 服務安全互通,需要建立以下 VPC Endpoints:

  • S3 Gateway Endpoint
    • 讓 Lambda 直接讀寫 S3,不需經過 Public Internet
    • 建立後需關聯到 Private Route Table

👉 設計重點:
若沒有建立 Endpoint,Private Subnet 內的 Lambda 無法正確存取 S3。


4. Route Table

  • Private Route Table(與所有 Private Subnet 關聯)
    • 10.0.0.0/16 → local(VPC 內部流量)
    • pl-xxxxxx(S3 Prefix List)→ S3 Gateway Endpoint
    • 0.0.0.0/0 → NAT Gateway(選配,僅當 Lambda 需要安裝外部套件時才使用)

👉 設計重點:
若只是 S3、EventBridge、Lambda 內部互通,不需要 NAT Gateway;但若 Lambda 要存取外部 API,則必須建立 NAT Gateway。


5. Security Groups

  • Lambda Security Group
    • 僅允許 Lambda 透過 VPC Endpoint 存取 S3
    • 禁止對外開放 Public IP 連線

👉 設計重點:
Security Group 應該採用「最小權限原則」,只允許 Lambda 與必要的 AWS 服務互通。


建立步驟

還記得我們說過不應該使用 Root 帳號做更多的操作嗎?
所以本篇我們將使用 Joe 使用者來做建立,此使用者繼承的 Group 權限是 Admin 權限,所以可以用來建置 VPC 環境,接著請先依照 Day9 所介紹的登入方式,來登入使用者 Joe 吧!

Step1:尋找 VPC 服務
https://ithelp.ithome.com.tw/upload/images/20250925/20163443GuS4WeiV04.png

Step2:進入 VPC 儀板表頁面後,可以看到已經有很多預設正在運行的服務,但我們不使用預設的,我們要額外做建立,接著我們點擊「VPC」進入設定頁面
https://ithelp.ithome.com.tw/upload/images/20250925/20163443NCGbIapxCp.png

Step3:可以看到有一個預設的 VPC 已經有指派 Private IP,我們要額外建立,請點選右上角的「建立 VPC」
https://ithelp.ithome.com.tw/upload/images/20250925/20163443UuXvvQo5ud.png

Step4:接著依照我們上方規劃的內容建立 VPC Name 和填寫 CIDR

  • VPC Name:andy_ironman
  • CIDR Block:10.0.0.0/16
    https://ithelp.ithome.com.tw/upload/images/20250925/20163443Ky4ln2NZre.png

https://ithelp.ithome.com.tw/upload/images/20250925/20163443gIILXu52A0.png

https://ithelp.ithome.com.tw/upload/images/20250925/201634437nNC1AGogn.png

Step6:完成 VPC 的建置後,接著我們要來建立子網路,點選左邊的「子網路」頁籤
https://ithelp.ithome.com.tw/upload/images/20250925/20163443N5TxWLc1zX.png

Step7:進入「子網路」頁面後,可以看到有預設好的 Subnet,但我們一樣要建立自己環境的子網路,接著點選右上角的「建立子網路」
https://ithelp.ithome.com.tw/upload/images/20250925/20163443ywKVTE4H4W.png

Step8:選擇剛剛建立的 VPC:andy_ironman,然後開始分別新增所需的三個子網路,完成後點選「建立子網路」

  • Private Subnet A:10.0.1.0/24
  • Private Subnet B:10.0.2.0/24
  • Private Subnet C:10.0.3.0/24

首先要選擇剛剛建立好的 VPC
https://ithelp.ithome.com.tw/upload/images/20250925/20163443KEXut8HDgx.png

接著分別建立 andy_ironman_subnet_a
https://ithelp.ithome.com.tw/upload/images/20250925/20163443vxj9cTz6Mo.png

andy_ironman_subnet_b
https://ithelp.ithome.com.tw/upload/images/20250925/20163443LsU16nRVOM.png

andy_ironman_subnet_c,當你確認三個都新增完後,點選右下角的「建立」按鈕
https://ithelp.ithome.com.tw/upload/images/20250925/20163443Vd55Vl4UEZ.png

Step9:完成建立後,我們回到子網路頁面即可以看到剛剛建立的三個子網路
https://ithelp.ithome.com.tw/upload/images/20250925/20163443LLs8MfvKjg.png

Step10:接著我們要來建立 Route Table,一樣於左邊頁籤,點選「路由表」
https://ithelp.ithome.com.tw/upload/images/20250925/20163443zwGD5clCzl.png

Step11:進入路由表頁面後,我們會看到一個預設的路由表,但我們不使用他,一樣點選右上「建立路由表」來建新的路由表
https://ithelp.ithome.com.tw/upload/images/20250925/201634439OVxdPkaBc.png

Step12:一樣做命名與選擇剛剛建立的 VPC,然後點選右下角的「建立路由表」即可
https://ithelp.ithome.com.tw/upload/images/20250925/20163443JGNuMQi7K4.png

Step13:完成後即可以看到 Route table 與 VPC 做關聯,以及顯示路由的目的地 IP
https://ithelp.ithome.com.tw/upload/images/20250925/20163443BntIzHP1QB.png

Step14:接著我們要來建立子網路的關聯,我們點選同頁面的「子網路關聯」即可跳轉頁面
https://ithelp.ithome.com.tw/upload/images/20250925/20163443m3hWV5pf4k.png

Step15:進入子網路關聯頁面後,可以看到下方有三個「沒有明確關聯的子網路」,我們需要把它跟 Route Table 做關聯,故點選圖片內步驟 2 的 「編輯子網路關聯」
https://ithelp.ithome.com.tw/upload/images/20250925/20163443ygiLP2mEGk.png

Step16:我們先點選下圖序號 1 的全選按鈕,接著確認下方都有被選擇後,點選序號 2 的「儲存關聯」按鈕來完成子網路的關聯
https://ithelp.ithome.com.tw/upload/images/20250925/20163443CIW1eKkJDK.png

Step17:可以看到 Route Table 已完成了跟子網路的關聯
https://ithelp.ithome.com.tw/upload/images/20250925/20163443KaHuuRTWSk.png

Step18:接著我們要來建立需使用的 Endpoint,一樣於左邊的清單找到「端點」點擊後進入頁面
https://ithelp.ithome.com.tw/upload/images/20250925/20163443NVFT9bXu3O.png

Step19:端點並無預設內容,於是我們就直接針對要使用的服務,來建立他們連結的端點,一樣於右上角點選「建立端點」進入頁面
https://ithelp.ithome.com.tw/upload/images/20250925/20163443C10cyxgpu0.png

Step20:首先我們先來建立 S3 Endpint (Gateway),透過搜尋「S3」尋找對應的 Endpoint
https://ithelp.ithome.com.tw/upload/images/20250925/20163443o93oRloHuL.png

選擇剛剛建立的 VPC 和 Route Table,政策預設即可
https://ithelp.ithome.com.tw/upload/images/20250925/20163443DCCKx9qpGm.png

確認選擇完畢後,一樣點選右下角的「建立端點」按鈕即可
https://ithelp.ithome.com.tw/upload/images/20250925/20163443ff50NaIjfH.png

回到頁面後,記得在確認一次你選擇的是 S3 Gateway 不是 instance,即完成 S3 Endpoint 的建立
https://ithelp.ithome.com.tw/upload/images/20250925/20163443BbQMW4V0zA.png

Step21:最後我們回到 Route Table 內確認剛剛建立的 S3 Endpoint 是否有正常顯示
https://ithelp.ithome.com.tw/upload/images/20250925/20163443M7fqDpyec7.png

經過以上步驟後,我們即完成了本章節目前所需的 VPC 網路環境建置!

注意事項

  • Lambda 與 Private VPC
    需要 Interface Endpoint 才能連到 EventBridge 或存取其他服務。
  • S3 Gateway Endpoint
    必須加到 Route Table,否則 Private Subnet 內的服務無法直接訪問 S3。

結論與建議

透過 VPC 建置能確保 AWS 服務都能在 Private VPC 中安全運作,並且透過 VPC Endpoint 與 S3、EventBridge 互通。後續我們會在這個架構中加入 Glue、Athena、Lake Formation、QuickSight,形成完整的資料湖環境。

下篇預告

下篇我們將進入 「DAY12 雲端基礎章-S3 Data Lakehouse 儲存結構設計」,介紹 Lakehouse 架構下的 S3 該如何做設計。

參考連結

[1] What is Amazon VPC?
[2] Gateway endpoints for Amazon S3
[3] Configuring a Lambda function to access resources in a VPC
[4] Amazon EventBridge Interface VPC endpoints
[5] Interface VPC endpoints


上一篇
DAY10 雲端基礎章-VPC 基礎概念篇
下一篇
DAY12 雲端基礎章-S3 Data Lakehouse 儲存結構設計
系列文
動漫宅的 30 天 AWS Lakehouse 修行日誌13
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言