掘金 人工智能 07月25日 14:23
数据湖实战:用 Amazon Glue + Athena 构建企业级数据分析基座
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了如何利用 Amazon CDK(Cloud Development Kit)这一基础设施即代码(IaC)框架,通过主流编程语言(如 Python)来定义和部署亚马逊云科技资源,从而摆脱传统 YAML/JSON 配置的繁琐。文章以部署一个包含 Amazon S3 和 Amazon CloudFront 的静态网站托管架构为例,详细阐述了 CDK 的项目初始化、资源定义、依赖添加和一键部署流程。通过与 CloudFormation 的对比,强调了 CDK 在逻辑复用、条件判断、模块化和开发体验上的优势,鼓励开发者拥抱 CDK,实现基础设施配置的“代码优雅”。

📦 CDK 替代 YAML/JSON:Amazon CDK 允许开发者使用 Python、TypeScript 等主流编程语言来编写基础设施即代码(IaC),解决了传统 IaC 工具(如 CloudFormation、Terraform)在处理复杂逻辑、参数复用和模块化场景时,YAML/JSON 配置易变得晦涩难懂的问题,让基础设施的定义如同业务代码一样清晰优雅。

🚀 静态网站部署实践:文章以构建一个包含 Amazon S3 存储桶和 Amazon CloudFront CDN 分发的静态网站托管架构为例,展示了如何使用 CDK 初始化项目、编写 Python 代码来创建 S3 存储桶、配置 CloudFront 分发以及部署网站内容到 S3。整个过程通过 `cdk bootstrap` 和 `cdk deploy` 命令即可完成。

💡 CDK 的优势分析:相比于 YAML 配置,CDK 提供了编程语言的原生能力,如变量、循环、函数和类,极大地增强了配置的可读性、可维护性和复用性。它支持多语言,拥有完善的 CLI 工具,能够提供更好的开发体验,包括调试和代码补全,使得基础设施的管理更加现代化和高效。

💰 新用户福利:文章中提及亚马逊云科技为新用户提供了高达 200 美元的免费服务抵扣金,以及长达 6 个月的免费套餐试用期,鼓励用户在免费额度内探索和使用亚马逊云科技的服务,降低了上云的门槛。

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


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

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

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

新用户可获得高达 200 美元的服务抵扣金

亚马逊云科技新用户可以免费使用亚马逊云科技免费套餐(Amazon Free Tier)。注册即可获得 100 美元的服务抵扣金,在探索关键亚马逊云科技服务时可以再额外获得最多 100 美元的服务抵扣金。使用免费计划试用亚马逊云科技服务,最长可达 6 个月,无需支付任何费用,除非您选择付费计划。付费计划允许您扩展运营并获得超过 150 项亚马逊云科技服务的访问权限。

—— 传送门


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

架构图:

@startumltitle 静态网站部署架构 - Amazon CDKactor DeveloperDeveloper -> CDK: cdk deploypackage 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 示例):

npm install -g Amazon -cdkpip install Amazon -cdk-lib constructs

初始化 CDK 项目:

mkdir cdk-static-site && cd cdk-static-sitecdk init app --language python

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

cdk-static-site/├── app.py                # 入口文件├── cdk_static_site/      # 核心 Stack 目录│   └── cdk_static_site_stack.py├── requirements.txt└── cdk.json

💻 用 Python 编写资源定义逻辑

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

from Amazon _cdk import (    Stack,    Amazon _s3 as s3,    Amazon _cloudfront as cloudfront,    Amazon _s3_deployment as s3deploy,)from constructs import Constructclass 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 中加入:

Amazon -cdk-lib==2.120.0constructs>=10.0.0,<11.0.0

创建静态资源目录:

mkdir site-contentecho "<h1>Hello from CDK!</h1>" > site-content/index.html

🚀 一键部署

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?

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


🪜 推荐阅读


以上就是本文的全部内容啦。最后提醒一下各位工友,如果后续不再使用相关服务,别忘了在控制台关闭,避免超出免费额度产生费用~

如果你觉得这篇文章有帮助,欢迎 👍 点赞 + 🧠 收藏 + 📬 关注后续,我将持续分享关于大模型、云原生和自动化部署的实战干货!

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Amazon CDK Infrastructure as Code 静态网站托管 Amazon S3 Amazon CloudFront
相关文章