# AWS - Service Catalog


# Service Catalog

AWS Service Catalog 允許組織創建和管理已批准的 IT 服務目錄,
這些服務可以在 AWS 上部署。


# 核心價值

  • 標準化部署
  • 治理與合規
  • 自助服務
  • 成本控制
  • 版本管理

# 主要用途

讓終端使用者 (開發者、數據科學家等) 能夠

  • 快速部署預批准的 IT 服務
  • 無需深入的 AWS 知識
  • 遵循組織標準和政策

# 核心組件


# Product (產品)

一個可部署的 IT 服務
基於 CloudFormation 模板或 Terraform 配置

# Product Type

CloudFormation Product

  • 使用 CloudFormation 模板
  • 最常見的類型
  • 原生 AWS 支持

Terraform Product

  • 使用 Terraform 配置
  • 支持多雲部署
  • 需要 Terraform Cloud/Enterprise

# Portfolio (產品組合)

產品的集合,用於組織和訪問控制

# 結構

1
2
3
4
5
6
7
8
9
Portfolio
├─ Product A(v1.0, v1.1)
├─ Product B(v2.0)
└─ Product C(v1.0)

訪問控制:
├─ IAM Users
├─ IAM Groups
└─ IAM Roles

# Portfolio Type

1
2
3
4
5
6
7
8
9
1. 本地 Portfolio
└─ 在同一帳戶內創建和管理

2. 共享 Portfolio
└─ 跨帳戶共享
└─ 使用 AWS Organizations

3. 導入 Portfolio
└─ 從其他帳戶導入

# Provisioned Product (已配置產品)

用戶啟動的產品實例,實際運行的 AWS 資源

# 生命週期

1
2
3
4
5
6
7
8
1. Launch(啟動)
└─ 創建資源

2. Update(更新)
└─ 修改配置或升級版本

3. Terminate(終止)
└─ 刪除資源

# Constraints (約束)

控制產品部署方式的規則

# Constraints Type

# Launch Constrain (啟動約束)

用途

  • 指定用於啟動產品的 IAM 角色
  • 用戶無需擁有創建資源的權限

示例

Product: RDS Database
Launch Role: ServiceCatalogRDSLaunchRole

  • 該角色有權限創建 RDS
  • 用戶只需啟動產品的權限
# Notification Constraint (通知約束)

用途

  • 發送生命週期事件通知
  • 使用 SNS Topic

事件

  • 產品啟動
  • 產品更新
  • 產品終止
  • 操作失敗
# Template Constraint (模板約束)

用途

  • 限制模板參數
  • 強制特定值

示例
限制實例類型

  • 只允許 t3.micro, t3.small
  • 禁止使用大型實例
# Stack Set Constraint (堆疊集約束)

用途

  • 跨多個帳戶和區域部署
  • 使用 CloudFormation StackSets
# Tag Update Constraint (標籤更新約束)

用途

  • 控制標籤更新權限
  • 允許 / 禁止用戶修改標籤

# Reference

  • AWS - AWS Service Catalog