首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >数据湖实战:用 Amazon Glue + Athena 构建企业级数据分析基座

数据湖实战:用 Amazon Glue + Athena 构建企业级数据分析基座

作者头像
掘金安东尼
发布2026-07-09 08:29:02
发布2026-07-09 08:29:02
110
举报
文章被收录于专栏:掘金安东尼掘金安东尼

从繁杂的 YAML 中解放出来,让你的基础设施也拥有“代码的优雅”。


🧭 背景:为什么我们开始用 CDK?

传统的基础设施即代码(IaC)方案,比如 Amazon CloudFormation 或 Terraform,大量依赖 YAML 或 JSON。这些声明式语言虽然直观,但在处理复杂逻辑、参数复用、模块化场景时,会让配置像一碗看不懂的“螺蛳粉”。

于是我们找到了 Amazon CDK(Cloud Development Kit) —— 一个用主流编程语言(如 Python、TypeScript)来定义 亚马逊云科技资源的 IaC 框架。CDK 让你可以像写业务代码一样来写基础设施逻辑,彻底摆脱 YAML 地狱。


✨ 项目目标:部署一个带 Amazon S3 + Amazon CloudFront 的静态网站托管架构

架构图:

代码语言:javascript
复制
@startuml
title 静态网站部署架构 - Amazon CDK

actor Developer
Developer -> CDK: cdk deploy

package Amazon  {
  [S3 Bucket] as S3
  [CloudFront Distribution] as CF
  [IAM Role] as IAM
}

CDK --> S3 : 创建存储桶
CDK --> CF : 创建CDN分发
CDK --> IAM : 设置访问权限
CF --> S3 : 读取静态资源

@enduml

🧰 项目准备

首先安装 CDK CLI 工具(使用 Python 示例):

代码语言:javascript
复制
npm install -g Amazon -cdk
pip install Amazon -cdk-lib constructs

初始化 CDK 项目:

代码语言:javascript
复制
mkdir cdk-static-site && cd cdk-static-site
cdk init app --language python

生成后会看到如下目录结构:

代码语言:javascript
复制
cdk-static-site/
├── app.py                # 入口文件
├── cdk_static_site/      # 核心 Stack 目录
│   └── cdk_static_site_stack.py
├── requirements.txt
└── cdk.json

💻 用 Python 编写资源定义逻辑

打开 cdk_static_site_stack.py,编写如下内容:

代码语言:javascript
复制
from Amazon _cdk import (
    Stack,
    Amazon _s3 as s3,
    Amazon _cloudfront as cloudfront,
    Amazon _s3_deployment as s3deploy,
)
from constructs import Construct

class CdkStaticSiteStack(Stack):
    def __init__(self, scope: Construct, id: str, **kwargs):
        super().__init__(scope, id, **kwargs)

        # 1. 创建 S3 桶
        site_bucket = s3.Bucket(self, "StaticSiteBucket",
            website_index_document="index.html",
            public_read_access=True,
            removal_policy=s3.RemovalPolicy.DESTROY
        )

        # 2. 创建 CloudFront 分发
        distribution = cloudfront.CloudFrontWebDistribution(self, "SiteDistribution",
            origin_configs=[cloudfront.SourceConfiguration(
                s3_origin_source=cloudfront.S3OriginConfig(
                    s3_bucket_source=site_bucket
                ),
                behaviors=[cloudfront.Behavior(is_default_behavior=True)]
            )]
        )

        # 3. 部署网站文件到 S3
        s3deploy.BucketDeployment(self, "DeployWebsite",
            sources=[s3deploy.Source.asset("./site-content")],
            destination_bucket=site_bucket,
            distribution=distribution,
            distribution_paths=["/*"]
        )

📦 添加依赖并创建网站资源

requirements.txt 中加入:

代码语言:javascript
复制
Amazon -cdk-lib==2.120.0
constructs>=10.0.0,<11.0.0

创建静态资源目录:

代码语言:javascript
复制
mkdir site-content
echo "<h1>Hello from CDK!</h1>" > site-content/index.html

🚀 一键部署

代码语言:javascript
复制
cdk bootstrap     # 初始化环境,仅首次执行
cdk deploy        # 部署上云

部署完成后,终端会输出 Amazon CloudFront 的访问 URL,你可以立刻访问部署好的静态网站。

示例 aws-cdk-examples


🧠 CDK vs YAML:从此不再写“看不懂的配置”

功能

CloudFormation(YAML)

Amazon CDK(Python)

逻辑复用

❌困难,需用 Fn::Join、Ref 等拼接

✅直接用函数和变量

条件判断

❌嵌套写 if 条件繁琐

✅用 if/else

模块化

❌使用模板嵌套,复杂

✅像写类一样组织 Stack

开发体验

😢 编辑体验差

🥳 可调试、可补全


📌 总结:为什么推荐用 CDK?

  • ✅ 编程语言即配置语言,天然支持变量、循环、逻辑判断
  • ✅ 更强的可读性和维护性
  • ✅ 支持多语言:TypeScript、Python、Java、C#
  • ✅ 与亚马逊云科技深度集成,CLI 生态完备

未来的云基础设施,理应像写应用一样优雅,而 Amazon CDK 正是这个未来的开始。


🪜 推荐阅读

  • Amazon CDK 官方文档(Python)
  • CDK Examples GitHub
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-07-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🧭 背景:为什么我们开始用 CDK?
  • ✨ 项目目标:部署一个带 Amazon S3 + Amazon CloudFront 的静态网站托管架构
    • 架构图:
  • 🧰 项目准备
  • 💻 用 Python 编写资源定义逻辑
  • 📦 添加依赖并创建网站资源
  • 🚀 一键部署
  • 🧠 CDK vs YAML:从此不再写“看不懂的配置”
  • 📌 总结:为什么推荐用 CDK?
  • 🪜 推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档