
示例工程教程后端【免费下载链接】aws-doc-sdk-examplesWelcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below.项目地址https://gitcode.com/gh_mirrors/aw/aws-doc-sdk-examples点击查看免费下载导读本指南以 dotnet-tech.md 为骨架系统讲解aws-doc-sdk-examples仓库中 .NET 技术栈dotnetv4 目录的开发环境、目录组织、构建命令、编码规范、测试标准与排错协议。读者学完后将能独立读懂并复用仓库中任意服务的 Actions / Scenarios / Tests 三层工程结构掌握基于 AWS SDK for .NET v4 编写、构建、测试和运行示例代码的完整实战方法。一、.NET 技术栈总览aws-doc-sdk-examples仓库同时维护dotnetv3与dotnetv4两套 .NET 示例体系。本文关联的 dotnet-tech.md 明确约定除非用户明确要求否则一律在dotnetv4目录下创建示例。技术选型关注点约定构建系统dotnet CLIdotnet build/dotnet run/dotnet test包管理器NuGetPackageReference测试框架xUnit[Fact]、[Theory]代码格式化dotnet-formatSDK 版本AWS SDK for .NET v4.NET 版本.NET 8工程文件为net8.0根目录的 dotnetv4/Directory.Build.props 为所有 v4 项目注入了统一的编译告警抑制策略Debug 下忽略1701;1702;SA0001Release 下追加CA1416这也是 v4 与 v3 工程体系差异的源码级体现。常用构建命令# 构建与打包 dotnet build SOLUTION.sln # 构建整个解决方案 dotnet build PROJECT.csproj # 构建指定项目 dotnet clean # 清理构建产物 # 测试 dotnet test # 运行全部测试 dotnet test --filter CategoryIntegration # 仅运行集成测试 dotnet test --logger trx # 输出详细测试结果TRX 日志 # 运行 dotnet run # 运行当前项目 dotnet run --project PROJECT.csproj # 运行指定项目 # 代码质量 dotnet format # 格式化代码.editorconfig 驱动dotnet-format 的全局约定见 dotnetv4/README.md先dotnet tool install -g dotnet-format再在解决方案或项目目录执行dotnet format。仓库通过 CI.github/workflows/dotnet-check.yml对变更文件强制执行格式化检查。二、.NET 专属的模式要求文件命名规范类名与文件名统一使用PascalCase且一一对应服务动作文件{Service}Actions.cs如S3Actions.csHello 示例Hello{Service}.cs如HelloS3.cs测试文件{Service}Tests.cs。Hello 示例结构Hello 示例是每个服务的最小可运行入口结构要求如下类名Hello{Service}内含Main方法方法结构静态Main作为入口点文档要求用 XML 注释说明 Hello 示例的用途。以仓库真实实现 dotnetv4/Redshift/Actions/HelloRedshift.cs 为例它展示了 Hello 示例的完整形态// snippet-start:[Redshift.dotnetv4.Hello] public static async Task Main(string[] args) { var redshiftClient new AmazonRedshiftClient(); Console.WriteLine(Hello, Amazon Redshift! Lets list available clusters:); var clusters new ListCluster(); try { // 使用分页器获取全部集群。 var clustersPaginator redshiftClient.Paginators.DescribeClusters(new DescribeClustersRequest()); await foreach (var response in clustersPaginator.Responses) { if (response.Clusters ! null) clusters.AddRange(response.Clusters); } Console.WriteLine(${clusters.Count} cluster(s) retrieved.); foreach (var cluster in clusters) { Console.WriteLine($\t{cluster.ClusterIdentifier} (Status: {cluster.ClusterStatus})); } } catch (AmazonRedshiftException ex) { Console.WriteLine($Couldnt list clusters. Heres why: {ex.Message}); } catch (Exception ex) { Console.WriteLine($An error occurred: {ex.Message}); } } // snippet-end:[Redshift.dotnetv4.Hello]这段代码同时体现了 Hello 示例的三要素Main入口、服务调用DescribeClusters、以及配套的异常捕获。注意其中snippet-start/snippet-end标记的格式为[{Service}.dotnetv4.{ActionName}]仓库会据此把代码片段同步到官方文档因此每个动作方法都应包裹在正确的 snippet 标记内。代码结构标准命名空间使用文件级命名空间例如namespace RedshiftActions;而不是块级namespace X { }类结构每个文件一个与文件名一致的 public 类方法名 / 属性名 / 常量一律 PascalCase异步方法以Async后缀命名如ListBucketsAsync缩进4 个空格禁用 Tab文件级命名空间之后保持正确缩进目标框架TargetFrameworknet8.0/TargetFramework语言版本LangVersionlatest/LangVersion。上述约定在真实工程文件中逐条可验证。例如 dotnetv4/Redshift/Actions/RedshiftActions.csproj 同时包含net8.0、Nullableenable、LangVersionlatestdotnetv4/Redshift/Actions/RedshiftWrapper.cs 使用namespace RedshiftActions;文件级命名空间。三、依赖注入模式以 Generic Host 装配 AWS 客户端文档给出的 DI 模式模板取自 Control Tower 基础场景示范了如何用Host.CreateDefaultBuilder统一装配 AWS 服务客户端与业务包装类public static async Task Main(string[] args) { using var host Host.CreateDefaultBuilder(args) .ConfigureServices((_, services) services.AddAWSServiceIAmazonControlTower() .AddAWSServiceIAmazonControlCatalog() .AddAWSServiceIAmazonOrganizations() .AddAWSServiceIAmazonSecurityTokenService() .AddTransientControlTowerWrapper() ) .Build(); logger LoggerFactory.Create(builder { builder.AddConsole(); }) .CreateLoggerControlTowerBasics(); wrapper host.Services.GetRequiredServiceControlTowerWrapper(); orgClient host.Services.GetRequiredServiceIAmazonOrganizations(); stsClient host.Services.GetRequiredServiceIAmazonSecurityTokenService(); await RunScenario(); }该模式依赖AWSSDK.Extensions.NETCore.Setup包版本4.0.3.13见 dotnetv4/Redshift/Actions/RedshiftActions.csproj提供的AddAWSServiceT()扩展方法——它负责从配置源appsettings.json、环境变量等解析区域与凭证自动注册 AWS 服务客户端。仓库中 Redshift 场景完整复刻了这一模式见 dotnetv4/Redshift/Scenarios/RedshiftBasics.cs注册IAmazonRedshift、IAmazonRedshiftDataAPIService与RedshiftWrapper后通过host.Services.GetRequiredServiceRedshiftWrapper()取得包装类再进入场景主流程。从源码结构可以推断DI 注入已成为 v4 场景类Scenarios的标准装配方式。四、错误处理模式文档给出了 S3 示例的错误处理模板核心要点是三层防护using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; public class ExampleClass { public async Task ExampleMethodAsync() { var s3Client new AmazonS3Client(); try { var response await s3Client.ListBucketsAsync(); // 处理响应 Console.WriteLine($Found {response.Buckets.Count} buckets); } catch (AmazonS3Exception e) { // 处理 S3 特定异常 Console.WriteLine($S3 Error: {e.Message}); Console.WriteLine($Error Code: {e.ErrorCode}); throw; } catch (Exception e) { // 处理通用异常 Console.WriteLine($Error: {e.Message}); throw; } finally { s3Client?.Dispose(); } } }服务特定异常优先于通用异常捕获如AmazonS3Exception、AmazonRedshiftException捕获后打印可读信息e.Message/e.ErrorCode并throw重新抛出而不是吞掉异常finally中Dispose()AWS 客户端防止资源泄漏。仓库中 Redshift 包装类对每种操作都实现了服务特定异常 通用异常双层处理。以 dotnetv4/Redshift/Actions/RedshiftWrapper.cs 的CreateClusterAsync为例先捕获ClusterAlreadyExistsException打印集群已存在再捕获通用Exception且均通过throw向上传递。其他动作DescribeClustersAsync、ModifyClusterAsync、DeleteClusterWithoutSnapshotAsync则分别针对ClusterNotFoundException做细分处理。五、测试标准xUnit 集成测试测试层统一遵循以下标准框架xUnit使用[Fact]/[Theory]特性集成测试标记[Trait(Category, Integration)]异步测试测试方法返回async Task资源管理AWS 客户端使用using语句命名测试方法名描述其验证目的。文档明确约定Tests 项目只放集成测试不为 wrapper 方法单独写单元测试。仓库真实示例见 dotnetv4/Redshift/Tests/RedshiftIntegrationTests.cs[Fact] [Trait(Category, Integration)] public async Task TestScenarioIntegration() { // Arrange RedshiftBasics.RedshiftBasics.IsInteractive false; var loggerScenarioMock new MockILoggerRedshiftBasics.RedshiftBasics(); // ... 配置 logger Mock 捕获 LogLevel.Error ... // Act RedshiftBasics.RedshiftBasics.Wrapper new RedshiftWrapper( new AmazonRedshiftClient(), new AmazonRedshiftDataAPIServiceClient()); await RedshiftBasics.RedshiftBasics.RunScenarioAsync(); // Assert全程不应记录任何 Error 级别日志 loggerScenarioMock.Verify( logger logger.Log( It.IsLogLevel(logLevel logLevel LogLevel.Error), It.IsAnyEventId(), It.IsIt.IsAnyType((object, type) true), It.IsAnyException(), It.IsAnyFuncIt.IsAnyType, Exception?, string()), Times.Never); }测试项目 dotnetv4/Redshift/Tests/RedshiftTests.csproj 引用Microsoft.NET.Test.Sdk、xunit、xunit.runner.visualstudio、coverlet.collector与Moq用于模拟ILoggerT并通过ProjectReference同时引用 Actions 与 Scenarios 两个项目——这正是Tests 项目是唯一测试承载者这一规则的具体落地。全局运行方式为进入测试项目目录后执行dotnet test或按文档使用dotnet test --filter CategoryIntegration仅跑集成测试v4 顶层约定见 dotnetv4/README.md。六、项目结构与解决方案管理标准三层目录dotnetv4/{Service}/ ├── Actions/ │ ├── Hello{Service}.cs # Hello 示例含 Main 方法 │ ├── {Service}Wrapper.cs # 服务包装类 │ └── {Service}Actions.csproj # Actions 项目文件 ├── Scenarios/ │ ├── {Service}Basics.cs # 基础场景 │ └── {Service}Basics.csproj # Scenarios 项目文件 ├── Tests/ │ ├── {Service}IntegrationTests.cs # 仅集成测试 │ └── {Service}Tests.csproj # 测试项目文件 └── {Service}Examples.sln # 服务专属解决方案文件仓库中 Redshift 服务的目录树与模板完全一致见 dotnetv4/RedshiftActions/HelloRedshift.cs、Actions/RedshiftWrapper.cs505 行覆盖CreateCluster、DescribeClusters、ModifyCluster、DeleteCluster、ListDatabases、DescribeStatement、GetStatementResult等动作见 dotnetv4/Redshift/README.md 的动作清单Scenarios/RedshiftBasics.cs完整入门场景创建集群 → 建 Movies 表 → 加载数据 → 按年份查询 → 修改集群 → 删除集群Tests/RedshiftIntegrationTests.cs根级RedshiftExamples.sln。CRITICAL 组织规则✅ Hello 示例必须位于 Actions 项目内且带Main方法✅ 只做集成测试——wrapper 方法不另设单元测试✅不单独建 Hello 项目——Hello 是 Actions 的一部分✅不单独建 IntegrationTests 项目——所有测试都在 Tests 项目中✅ 每个服务创建专属解决方案文件{Service}Examples.sln✅ 解决方案只包含Actions、Scenarios、Tests 三个项目扁平结构、无解决方案文件夹。解决方案文件操作命令# 创建解决方案文件 dotnet new sln -n {Service}Examples -o dotnetv4/{Service} # 将项目加入解决方案 dotnet sln dotnetv4/{Service}/{Service}Examples.sln add dotnetv4/{Service}/Actions/{Service}Actions.csproj dotnet sln dotnetv4/{Service}/{Service}Examples.sln add dotnetv4/{Service}/Scenarios/{Service}Basics.csproj dotnet sln dotnetv4/{Service}/{Service}Examples.sln add dotnetv4/{Service}/Tests/{Service}Tests.csproj # 构建解决方案 dotnet build dotnetv4/{Service}/{Service}Examples.sln七、工程配置要求项目文件必选项目标框架TargetFrameworknet8.0/TargetFramework语言版本LangVersionlatest/LangVersion可空引用类型Nullableenable/NullableAWS SDK 包引入对应服务的 NuGet 包并保持最新版本测试包MSTest 与测试运行器仓库 Redshift 测试项目实际使用Microsoft.NET.Test.Sdkxunitcoverlet.collector配置支持appsettings.json 与环境变量双通道。包版本与配置文件的实践细节Actions 与 Scenarios 项目如 dotnetv4/Redshift/Actions/RedshiftActions.csproj、dotnetv4/Redshift/Scenarios/RedshiftBasics.csproj的包引用高度一致均包含AWSSDK.Extensions.NETCore.Setupv4 配置扩展服务 SDK 包如AWSSDK.Redshift、AWSSDK.RedshiftDataAPIServiceMicrosoft.Extensions.DependencyInjection/Hosting/Logging系列支撑 DI 与日志。两个 csproj 还都通过Content Includesettings.*.json将配置文件复制到输出目录CopyToOutputDirectoryPreserveNewest以支持AddAWSServiceT()从 settings 读取区域配置。文档同时要求及时更新包版本以避免 NU1603 警告。八、文档要求XML 文档类与方法一律使用///注释参数所有参数用param标注返回值用returns说明异常用exception说明可能抛出的异常README包含 .NET 环境准备与运行说明。仓库中每个方法都严格遵守该规范例如 dotnetv4/Redshift/Actions/RedshiftWrapper.cs 中CreateClusterAsync的param与returns注释。服务级 README 的书写范式可参考 dotnetv4/Redshift/README.md包含 Overview、收费警示⚠ Important、Hello 示例入口、Basics 场景能力清单、单动作清单附源码行号与测试说明。九、AWS 凭证处理与构建排错协议凭证测试协议Critical先验证凭证再排查代码任何疑似凭证问题时先执行aws sts get-caller-identity验证凭证有效性绝不未经验证就断言凭证错误若凭证测试通过但 .NET SDK 仍失败应排查 SDK 特有的凭证链问题例如EC2 实例元数据服务冲突、凭证提供程序链顺序等。构建排错协议Critical当出现项目文件不存在的提示时先用目录列举listDirectory确认正确的项目/解决方案文件路径再重新构建绝不在未定位真实文件结构前反复重试同一条构建命令。语言专属禁忌清单❌ 除非用户明确要求不要为 dotnetv3 创建示例❌不要对 .NET 类名/方法名使用 camelCase❌不要忘记释放 AWS 客户端必须用using❌不要忽略 AWS 操作的异常处理❌不要跳过 NuGet 包管理❌不要未经测试就臆断凭证问题❌不要套用其他语言目录的模式。十、最佳实践清单编写 dotnetv4 示例时应逐条对照以下最佳实践✅ 除非另有指示一律在 dotnetv4 目录创建示例✅一律遵循既定 .NET 项目结构✅一律对 .NET 标识符使用 PascalCase✅一律使用文件级命名空间namespace Name;✅一律用using管理 AWS 客户端生命周期✅一律为 AWS 服务调用加入完整异常处理✅一律在怀疑凭证问题前先测试凭证✅一律提供全面的 XML 文档✅一律对 AWS 操作使用 async/await✅一律对 AWS 服务使用依赖注入✅一律在 Actions 项目创建带Main方法的 Hello 示例✅一律创建服务专属解决方案文件如RedshiftExamples.sln✅一律以 .NET 8.0 最新语言版本为目标✅一律将集成测试放入 Tests 项目不另设 IntegrationTests 项目✅尽量在动作方法中直接输出打印语句✅一律更新包版本以消除 NU1603 警告。上述约定的仓库实证可对照 dotnetv4/Redshift 全目录Actions 内含HelloRedshift.cs带Main方法根级存在RedshiftExamples.slnTests 项目同时引用 Actions 与 Scenarios——每一条规则都有对应实现。十一、与知识库Knowledge Base的集成文档规定创建 .NET 代码示例前需按序执行查询coding-standards-KB中的DotNet-code-example-standards查询DotNet-premium-KB中的DotNet implementation patterns遵循 KB 中记载的项目结构与类组织模式仅在与 KB 比对之后再对照现有 .NET 示例做校验。这一流程表明dotnet-tech.md既是独立规范也是知识库检索链路的入口编码前先取标准、再取实现模式、最后与仓库现成示例对照从而保证新增示例与存量代码风格完全一致。仓库内其他语言如steering_docs/go-tech.md、steering_docs/java-tech.md存在同类文档可作横向参照但本文所有结论均以 .NET 技术栈为准。总结aws-doc-sdk-examples的 .NET 技术栈dotnetv4是一套高度工程化的示例生产规范——从net8.0 最新语言版本的技术基线到 Actions / Scenarios / Tests 三层目录、文件级命名空间、Async后缀、DI 装配、三层异常处理、xUnit 集成测试再到{Service}Examples.sln的解决方案管理每一环节都有明确的硬性规则与可验证的仓库实例。本文所引用的全部工程文件均可在仓库dotnetv4/Redshift、dotnetv4/ControlTower等目录中直接查看是复刻或扩展新服务示例的权威参照。赞分享示例工程教程后端【免费下载链接】aws-doc-sdk-examplesWelcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below.项目地址https://gitcode.com/gh_mirrors/aw/aws-doc-sdk-examples点击查看免费下载相关推荐AWS S3 Object Lock 场景化演练基于 aws-doc-sdk-examples 的完整技术规范与实现解析AWS S3 Object Lock 场景化演练基于 aws doc sdk examples 的完整技术规范与实现解析 Amazon S3 Object L示例工程教程后端基于 aws-doc-sdk-examples 仓库的 AWS SDK for .NET IAM 开发实战指南基于 aws doc sdk examples 仓库的 AWS SDK for .NET IAM 开发实战指南 本篇指南以 aws doc sdk exampl示例工程教程后端aws-doc-sdk-examples 仓库 .tools 工具链SDK 示例开发者的 Python 工具规范与工程实践aws doc sdk examples 仓库 .tools 工具链SDK 示例开发者的 Python 工具规范与工程实践 导读 aws doc sdk ex示例工程教程后端上一篇Slush.js 开源项目教程下一篇告别臃肿UIAlertViewRKDropdownAlert实现iOS轻量级通知创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考