iT邦幫忙

2025 iThome 鐵人賽

DAY 14
0
Build on AWS

一步步帶你認識 Cloud Native —— 用AWS免費服務打造雲原生專案系列 第 14

Day 14|小結:從 SDK 到 CDK,再到 CI/CD 與 IAM —— 專案藍圖回顧

  • 分享至 

  • xImage
  •  

在過去的 13 天裡,我們從 AWS 的基本操作開始,逐步探索了 SDK、CDK、CI/CD 和 IAM 等技術,逐步建立起雲原生應用的知識基礎。今天,我們不寫新程式碼,而是回顧這些技術,並對照我們的多人協作平台專案架構,釐清「工具鏈」與「核心元件」的角色,梳理它們如何協同運作。


1. SDK (Software Development Kit) —— 應用層的雲端操作橋樑

SDK 是程式碼與 AWS 服務互動的接口,允許我們用程式語言(如 Python 的 boto3)直接操作 AWS 資源,例如建立 S3 Bucket 或查詢 DynamoDB 資料。

角色

  • 工具鏈角色:SDK 是「應用程式層」的工具,負責在程式碼中實現業務邏輯與雲端服務的互動。
  • 限制:不適合直接用來定義或管理整個雲端架構,因為手動操作資源流程繁瑣,難以維護。

專案應用
在我們的多人協作平台中,SDK 主要用於後端應用程式(例如 Lambda 函數)與 AWS 服務的互動,例如上傳檔案到 S3 或查詢 DynamoDB 中的時間表資料。


2. CDK (Cloud Development Kit) —— 基礎設施的程式化管理

CDK 讓我們用熟悉的程式語言(如 TypeScript 或 Python)定義雲端基礎設施,最終生成 CloudFormation 模板,確保架構部署的一致性與安全性。

角色

  • 工具鏈角色:CDK 是「基礎設施管理」的核心工具,負責以程式碼方式定義和管理雲端資源(如 S3、Lambda、DynamoDB)。它簡化了手動配置的繁瑣流程,並提供版本控制與可重複部署的能力。
  • 優勢:解決了 SDK 手動管理資源的低效問題,適合大規模基礎設施建置。

專案應用
CDK 是我們專案中建置基礎設施的主力工具,負責定義和管理前端 S3 儲存、後端 API Gateway、Lambda 函數以及 DynamoDB 資料庫等核心元件。


3. CI/CD —— 自動化的部署引擎

CI/CD(持續整合與持續部署)透過自動化流程,將程式碼的提交、測試和部署串聯起來,確保專案快速且穩定地發布。

角色

  • 工具鏈角色:CI/CD 是「自動化部署」的核心工具,負責將程式碼和基礎設施變更(透過 CDK)快速推送到雲端環境。GitHub Actions 與 CDK 的結合,讓我們實現了從程式碼提交到部署的全自動化流程。
  • 進階應用:未來可升級為 DevSecOps,加入套件漏洞掃描或憑證洩漏檢查,提升安全性。

專案應用
在我們的協作平台中,CI/CD 確保前端(S3)、後端(Lambda)以及基礎設施(CDK 定義的資源)能自動化部署,讓開發者專注於功能開發而無需手動操作。


4. IAM (Identity and Access Management) —— 權限與安全的守門員

IAM 負責管理 AWS 環境中的存取權限,確保資源安全且符合最小權限原則(Principle of Least Privilege, PoLP)。

角色

  • 工具鏈角色:IAM 是「權限管理」的工具,透過 User和 Role 控制存取權限。特別是 Role 與 OIDC 的結合,讓 CI/CD 流程(如 GitHub Actions)能安全存取 AWS 資源。
  • 我們介紹過
    • User:給開發者或管理員使用(例如我們在 Day4 中透過 IAM 使得我們能使用 CLI 存取 AWS 資源)。
    • Role:為服務或臨時存取設計,例如 CI/CD 流程中的部署權限。

專案應用
IAM 確保我們的協作平台雲端環境安全,例如限制只有特定 Lambda 函數能存取 DynamoDB,或只有 CI/CD 流程能部署 CDK 定義的資源。


5. 專案架構與角色分工

我們的專案目標是打造一個多人協作平台,讓使用者可以登入帳號、建立與分享時間表,並支援多人編輯與查看。以下是架構中「核心元件」與「工具鏈」的對照:

核心元件(雲端服務組成的應用架構)

這些是構成協作平台功能的主要 AWS 服務:

  • 前端 (React / 靜態網站):托管於 S3,透過 CloudFront 提供全球低延遲存取。
  • 驗證系統:Cognito User Pool 管理使用者身份驗證與授權。
  • 後端 API:API Gateway 作為前端與後端的橋樑,串接 Lambda 函數處理業務邏輯。
  • 資料儲存:DynamoDB 儲存時間表與使用者資料,支援高效查詢與多人協作。

工具鏈(實現與管理核心元件的工具)

這些工具負責建置、管理與部署核心元件:

  • CDK:定義與部署所有核心元件(S3、CloudFront、API Gateway、Lambda、DynamoDB)。
  • SDK:在 Lambda 函數中實現業務邏輯與核心元件的互動(如存取 S3 或 DynamoDB)。
  • CI/CD:透過 GitHub Actions 自動化部署程式碼與基礎設施,確保快速迭代。
  • IAM:為核心元件與工具鏈提供安全的權限管理,保護雲端環境。

架構圖
架構圖


結語

工具鏈與核心元件的協同

透過這次回顧,我們釐清了「工具鏈」(SDK、CDK、CI/CD、IAM)與「核心元件」(S3、CloudFront、Cognito、API Gateway、Lambda、DynamoDB)的角色:

  • 工具鏈負責建置、管理和部署雲端應用,確保開發與運維的高效與安全。
  • 核心元件則是應用功能的具體實現,直接支撐協作平台的業務邏輯。

下一步
期待專案時做部分的各位,從明天起,我們將由工具鏈轉為聚焦於實作核心元件,探索 AWS Free Tier中的明星產品,從 Cognito(身份驗證)開始,逐步將我們的架構藍圖轉化為實際的雲原生應用,請各位敬請期待!


上一篇
Day 13|CI/CD Pipeline 還能升級嗎?走向 DevSecOps 的第一步
下一篇
Day15 「使用Google登入」? AWS Cognito 使用者管理 | AWS Cognito、 Amplify 和 JWT 簡介
系列文
一步步帶你認識 Cloud Native —— 用AWS免費服務打造雲原生專案24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言