首页 / 资讯中心 / 文章详情

AWS CDK Examples 官方示例仓库指南:五种语言示例的组织方式、运行方法与贡献规范

AWS CDK Examples 官方示例仓库指南:五种语言示例的组织方式、运行方法与贡献规范 ★ FEATURED ARTICLE
【免费下载链接】aws-cdk-examplesExample projects using the AWS CDK项目地址https://gitcode.com/gh_mirrors/aw/aws-cdk-examples点击查看免费下载本文基于 aws-cdk-examples 仓库的根目录 README 展开系统讲解这个 AWS CDK 官方示例集的定位、五大语言示例目录的组织与稳定性分级、各类语言示例的运行步骤以及如何借助仓库自带的scripts工具链与快照测试机制来验证示例。读完本文后你可以快速定位到适合自己语言的 CDK 示例、正确执行cdk synth/cdk deploy并理解仓库保证示例质量的工程化手段。一、仓库定位中间级的官方 CDK 示例集该仓库是 AWS 官方的 CDK 示例代码集合用于演示各类常见的 AWS 服务实现与基础设施模式。README 中对其定位有两条关键说明语言平行language parity目标仓库按语言划分为若干区块每种语言下有各自独立的示例子目录长期目标是让各语言之间保持“示例等价”——即同一个示例能在各语言中同时存在。中间级学习资源README 明确指出本仓库属于“intermediate learning resource”建议在阅读过 AWS CDK 的 Developer Guide 或 CDK Workshop 之后再参考本仓库的示例。README 给出的语言支持状态表如下五种语言在当前仓库中均为 JSII Stable语言示例目录JSII 稳定性TypeScripttypescriptStablePythonpythonStable.NET (C#)csharpStableJavajavaStableGogoStable从当前仓库的实际目录统计看各语言区块收录的示例规模并不完全对等这正体现了 README 所说的“向完全语言平行演进”的过程typescript/下有 79 个示例目录python/下 64 个java/下 22 个go/下 20 个csharp/下 17 个。TypeScript 区块覆盖面最广例如包含 appsync-graphql-dynamodb、stepfunctions-job-poller、cloudfront-functions、secrets-manager-rotation 等较复杂的场景而 lambda-cron 这类基础示例则横跨五个语言目录同时存在可以直接对比同一模式在不同语言中的写法。二、仓库顶层结构与配套文件仓库根目录除五个语言目录外还包含以下与“示例质量保障”直接相关的文件文件/目录作用README.md仓库总览、语言分区与学习资源索引本文主体文档CONTRIBUTING.md贡献规范新示例的准入标准、目录结构要求、各语言风格约定SNAPSHOT_TESTING.mdCDK 快照测试的 asset hash 归一化指南semantic.yml启用 Semantic Pull RequeststitleOnly: true规范 PR 标题格式scripts/仓库维护用的支持脚本README 声明为 maintainer 工具普通使用者无需关心LICENSEApache 2.0 许可README 的目录还列出了两个索引章节Learning Resources学习资源README 维护了一份学习资源清单官方资源包括 AWS CDK Developer Guide、API Reference、aws-cdk 主仓库、Construct Hub 与 CDK Workshop社区资源则收录了 AwesomeCDK 等。如果你自己创建了 CDK 学习资源并希望被收录需按 CONTRIBUTING.md 中 “Adding Learning Resources” 一节的要求提交 PR。Additional Examples大型示例外链README 中维护了一个独立仓库的复杂示例索引表用于收录“规模超出本仓库范围、但具有完整应用价值”的 CDK 项目例如 README 中列出的aws-cdk-changelogs-demo——一个用 CDK 部署的完整无服务器 Node.js 应用栈含 AWS Lambda、Fargate、DynamoDB、ElastiCache、S3 与 CloudFront。想让自己的仓库进入该表同样需要通过 PR 并在 CONTRIBUTING.md 的 “Linking External Examples” 一节指引下讨论。三、按语言运行示例命令与前提每个语言目录都有自己的 README说明该语言的运行前提和步骤。以下按 README 中各语言区块的说明整理。3.1 TypeScript 示例typescript/README.md$ npm install -g aws-cdk $ cd typescript/EXAMPLE_DIRECTORY $ npm install $ cdk deploy部署完成后销毁栈$ cdk destroytypescript/README.md 还额外说明了该目录下的.gitignore/.npmignore是各示例项目的参考配置模板前者排除编译产物、node_modules、CDK staging 与输出目录后者排除 TypeScript 源文件与测试文件。各具体示例可能在此基础上有自己的定制配置。3.2 Python 示例python/README.mdPython 区块多了一步虚拟环境管理# 1. 安装 CDK CLI $ npm install -g aws-cdk # 2. 创建虚拟环境 $ python3 -m venv .venv # 3. 激活虚拟环境macOS/Linux $ source .venv/bin/activate # Windows 则为 .venv\Scripts\activate.bat # 4. 安装依赖 $ pip install -r requirements.txt # 5. 合成或部署 $ cdk deploy结束后用cdk destroy销毁栈。Python 区块涵盖面很广python/README.md 的索引表列出了api-cors-lambda、application-load-balancer、custom-resource、rds、url-shortener、vpc-ec2-local-zones等示例及各自的一句话说明可作为选型入口。3.3 .NET 示例csharp/README.md$ npm install -g aws-cdk $ cd csharp/EXAMPLE_DIRECTORY $ cdk deploy # 部署后销毁 $ cdk destroy该 README 同时指出CDK 目前只支持 .NET Core 项目。注意各示例目录自带cdk.json与.sln/.csproj例如 csharp/lambda-cron/cdk.json无需额外初始化。3.4 示例目录的内部约定无论哪种语言一个可运行的示例通常遵循统一骨架。以 typescript/lambda-cron 为例目录内包含typescript/lambda-cron/ ├── README.md # 稳定性横幅 构建/测试/部署说明 ├── cdk.json # CDK CLI 配置app 入口 上下文开关 ├── index.ts # 应用入口App Stack ├── lambda-handler.py # Lambda 内联代码 ├── lambda-cron.test.ts # 基于 aws-cdk-lib/assertions 的测试 ├── jest.config.js ├── package.json └── tsconfig.json其中 cdk.json 的app字段为npx tsc npx tsx index.ts并附带一大段context特性开关如aws-cdk/aws-lambda:useCdkManagedLogGroup、aws-cdk/aws-s3:publicAccessBlockedByDefault等用于锁定示例在特定 CDK 版本下的合成行为。入口代码 index.ts 则展示了该示例的核心模式一个 Python 运行时lambda.Runtime.PYTHON_3_12的 Lambda 函数通过events.Rule挂接 cron 计划cron(0 18 ? * MON-FRI *)工作日 18:00 UTC再由rule.addTarget(new targets.LambdaFunction(lambdaFn))完成触发绑定——这正是 README “示例展示常见服务模式”定位的最小化体现。四、示例的稳定性分级与质量准入CONTRIBUTING.md 规定每个新示例必须携带一个Stability Banner用徽章标明其稳定性级别取示例所依赖模块中的最低等级Stable“应开箱即可构建”所依赖的 Construct Library 均为 Stable 且无基础设施前置条件Developer Preview“可能无法开箱构建”依赖的模块可能随破坏性变更未同步更新或需要先创建基础设施前置资源Cfn-Only依赖尚处于 CFN-only 状态的模块。你可以在 typescript/lambda-cron/README.md 看到 Stable 横幅的完整写法go/lambda-cron/README.md 则展示了早期 Developer Preview 时期 Go 区块的横幅写法“Go support is still in Developer Preview”。新示例的准入标准CONTRIBUTING.md “Added Value” 一节要求示例不得与现有示例重复并至少满足其一记录一种常见基础设施模式如静态网站、定时触发的 Lambda演示某个 L2 构造的使用方式覆盖一个不太显眼的实现如跨栈资源共享、escape hatch、合成期使用 SSM 值。新示例还须满足用npx cdk init app --language [LANGUAGE]生成标准结构如 TypeScript 应用入口位于./bin/example-name.ts栈位于./lib/example-name-stack.ts、通过cdk synth、通过仓库 scripts 目录下的自动化测试并按语言风格约定如 Java 尽量使用 builder、配合 google-java-format格式化代码。五、仓库的工程化支撑synth 脚本与快照测试5.1scripts/synth.shCI 中的统一合成验证scripts/synth.sh 是维护者在 CI 中批量验证示例可合成性的核心脚本逻辑简洁#!/bin/bash set -euxo pipefail scriptdir$(cd $(dirname $0) pwd) export AWS_DEFAULT_REGIONus-east-1 # if cdk.context.json is not provided, copy a fake one fake_contextfalse [ ! -f cdk.context.json ] fake_contexttrue if $fake_context; then cp $scriptdir/fake.context.json cdk.context.json fi cdk synth if $fake_context; then rm -f cdk.context.json fi要点有三固定AWS_DEFAULT_REGIONus-east-1保证区域一致若示例目录缺少cdk.context.json则临时复制 scripts/fake.context.json内容仅为{x: y}的占位文件以避免 CLI 上下文提示干扰合成验证完成后清理该临时文件。这正是 CONTRIBUTING.md 中“确保示例通过cdk synth与本地自动化测试”要求的落地手段。同目录下的 update-cdk-packages.ts 则负责把各示例中的aws-cdk依赖版本跟随 CLI 模板统一升级保证仓库示例与最新 CDK 版本同步——这也是各语言package.json如 csharp/package.json 中锁定aws-cdk: 2.1133.0能长期可构建的原因。5.2 快照测试与 asset hash 归一化SNAPSHOT_TESTING.md对于带 Jest 快照测试的 TypeScript 示例仓库提供了共享工具 typescript/test-utils/normalize-template.ts 来解决“同一基础设施在不同环境下资产哈希不同导致快照误报”的问题。该工具递归遍历模板对两类环境相关值做替换见 normalize-template.tsS3 资产 KeyS3Key中形如 64 位十六进制串的资产哈希替换为NORMALIZED_ASSET_HASH带/不带.zip后缀两种模式Docker 镜像摘要以sha256:开头的ImageDigest替换为NORMALIZED_IMAGE_DIGEST。典型用法摘自 SNAPSHOT_TESTING.mdimport { App } from aws-cdk-lib; import { Template } from aws-cdk-lib/assertions; import { YourStack } from ../lib/your-stack; import { normalizeTemplate } from ../../test-utils/normalize-template; test(YourStack creates the expected resources, () { const app new App(); const stack new YourStack(app, TestStack); const template Template.fromStack(stack); const normalizedTemplate normalizeTemplate(template.toJSON()); expect(normalizedTemplate).toMatchSnapshot(); });若工具文件位于项目目录之外还需按 SNAPSHOT_TESTING.md 的说明调整tsconfig.json将rootDir指向../..、通过paths映射../../test-utils/*并在include中加入外部工具文件。该工具目前已被ec2-instance、inspector2、api-gateway-lambda-token-authorizer、aws-transfer-sftp-server等多个示例的测试引用。指南同时给出最佳实践始终在快照比较前先归一化、仅在预期变更时才用npm test -- -u更新快照并人工复核 diff。六、如何向仓库贡献README 欢迎两类贡献修复现有示例或新增示例。完整流程见 CONTRIBUTING.md关键步骤包括基于master最新代码开发先检索 issue / PR 避免重复Fork 仓库后聚焦单一改动提交不要顺带全量重排格式确保示例通过cdk synth如无法通过需在 PR 中说明并通过 scripts 中的自动化测试提交 PR 后关注 CI 结果并跟进评审。此外仓库通过 semantic.yml 启用了 Semantic Pull RequeststitleOnly: truePR 标题需符合约定式提交格式安全类问题则不通过公开 issue 上报。所有示例代码以 Apache 2.0 许可见 LICENSE发布可自由用于学习与二次开发。七、延伸阅读各语言示例总表typescript/README.md、python/README.md、csharp/README.mdjava、go 区块的索引直接查看各自目录贡献与样式规范CONTRIBUTING.md快照测试机制SNAPSHOT_TESTING.md 与 typescript/test-utils/normalize-template.tsCI 合成验证脚本scripts/synth.sh、scripts/update-cdk-packages.ts。赞分享【免费下载链接】aws-cdk-examplesExample projects using the AWS CDK项目地址https://gitcode.com/gh_mirrors/aw/aws-cdk-examples点击查看免费下载相关推荐TensorFlow.js 官方示例集tfjs-examples仓库全景、示例矩阵与本地运行指南TensorFlow.js 官方示例集tfjs examples仓库全景、示例矩阵与本地运行指南 本文是一份针对 TensorFlow.js 官方示例仓库示例工程Agent Governance Toolkit 示例生态指南基于 examples/AGENTS.md 的示例贡献规范、实践路径与仓库全景Agent Governance Toolkit 示例生态指南基于 examples/AGENTS.md 的示例贡献规范、实践路径与仓库全景 导读 本文围绕仓人工智能AI AgentAI 安全治理策略引擎认证鉴权Agent 沙箱可观测性Kubernetes Examples 仓库示例贡献指南从规范制定到高质量示例落地的完整实践Kubernetes Examples 仓库示例贡献指南从规范制定到高质量示例落地的完整实践 本文基于本仓库根目录下的 guidelines.md https示例工程上一篇Agentic Awesome Skills 后端开发模式指南从 RESTful API 设计到可观测性治理的完整实战手册下一篇EMQX 连接终止日志分级优化当报文超过 mqtt.max_packet_size 时以 warning 记录 emsgsize 断开原因创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站