
示例工程教程后端【免费下载链接】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点击查看免费下载导读本指南基于 swift/example_code/rds/README.md 及其配套场景示例系统讲解如何用 AWS SDK for Swift 与 Amazon Relational Database ServiceAmazon RDS交互。文章以仓库中的rds-scenario可执行示例为主线完整覆盖查询引擎版本 → 创建自定义 DB 参数组 → 修改参数 → 创建 DB 实例 → 等待就绪 → 创建快照 → 清理回收的端到端流程并逐一解析 12 个单动作 API 的入参与底层调用细节。读完本文你将能够独立构建、运行并读懂这套 RDS 入门场景代码掌握在 Swift 中通过 AWS SDK 管理关系型数据库实例的完整方法论。概述Amazon RDS 与 Swift SDK 的组合Amazon RDS 是一项让用户更容易在云中设置、运维和扩展关系型数据库的 Web 服务。它托管了 MySQL、PostgreSQL、MariaDB 等引擎的数据库实例并承担了补丁升级、备份、容错等繁重运维工作。本仓库中的 RDS 示例位于 swift/example_code/rds目标是用 AWS SDK for Swift引入 RDS 客户端所有调用均为异步 Swift 并发风格async/await符合 SDK for Swift 的现代编程范式。⚠费用提醒运行本示例或相关测试都可能对您的 AWS 账户产生费用。官方建议遵循最小权限原则仅授予完成任务所需的最低权限同时请注意这些代码并未在所有 AWS 区域做过测试请结合 AWS Regional Services 确认目标区域的可用性。前置条件运行 RDS 示例前需要先完成以下准备详见 swift/README.md拥有 AWS 账户并按 AWS SDK for Swift 开发者指南的 Getting started 章节配置好默认凭证与默认区域。安装 Swift 编译器5.4 或更高版本及配套工具若已安装新版 Xcode则已自带 Swift 工具链。部分示例对 Swift 工具版本有更高要求应以示例目录下Package.swift顶部注释声明的swift-tools-version为准——本 RDS 场景示例要求Swift 5.9见 scenario/Package.swift。代码示例一览单动作Single actions每个单动作都是一段聚焦单个服务 API 调用的代码摘录全部实现在场景入口文件 scenario/Sources/entry.swift 中列表如下单动作源码位置对应 APICreateDBInstanceentry.swift#L529createDBInstanceCreateDBParameterGroupentry.swift#L326createDBParameterGroupCreateDBSnapshotentry.swift#L627createDBSnapshotDeleteDBInstanceentry.swift#L705deleteDBInstanceDeleteDBParameterGroupentry.swift#L770deleteDBParameterGroupDescribeDBEngineVersionsentry.swift#L303describeDBEngineVersionsDescribeDBInstancesentry.swift#L581describeDBInstancesDescribeDBParameterGroupsentry.swift#L350describeDBParameterGroupsDescribeDBParametersentry.swift#L374describeDBParameters分页版describeDBParametersPaginatedDescribeDBSnapshotsentry.swift#L656describeDBSnapshotsDescribeOrderableDBInstanceOptionsentry.swift#L478describeOrderableDBInstanceOptions分页版ModifyDBParameterGroupentry.swift#L413modifyDBParameterGroup场景BasicsLearn the basicsLearn the basics 是一个完整的入门场景示例通过组合多个 RDS API 完成一条典型实例生命周期。它演示了以下四项核心能力创建自定义 DB 参数组并设置参数值。创建配置了该参数组、且内建一个数据库的 DB 实例。对该实例拍摄快照snapshot。删除实例与参数组。这一创建 → 使用 → 备份 → 清理的闭环正是生产环境中 RDS 资源治理的最小模型。运行示例构建方式从终端进入示例目录后执行$ swift build若要在 Xcode 中构建进入示例目录例如rds场景目录后输入xed .即可用 Xcode 打开该目录并按标准 Xcode 构建、运行命令执行。运行场景程序场景可执行目标名为rds-scenario见 Package.swift入口文件顶部通过ArgumentParser声明了三个命令行参数entry.swift#L15-L21参数默认值说明--aws-regionus-east-1发起 AWS API 调用的区域--db-usernameadmin数据库管理员用户名--db-password无默认值必填数据库管理员密码main入口entry.swift#L818-L831解析参数后调用ExampleCommand.runAsync()内部构造Example对象并执行主流程。构建完成后可通过类似方式携带参数运行$ swift run rds-scenario --db-password YourPassword场景主流程14 步全生命周期详解Example.run()entry.swift#L66-L291是场景的主干其每一步都可与上文列出的单动作一一对应下面按执行顺序展开。第 1 步探测 MySQL 引擎版本与参数组家族调用getDBEngineVersions(engineName: mysql)封装describeDBEngineVersionsentry.swift#L303-L324把返回结果中每个版本携带的dbParameterGroupFamily收集进一个SetString。这一步本质上是先摸清当前区域支持哪些 MySQL 参数组家族为后续创建参数组选定familyName。若未找到任何可用版本程序会直接清理退出。第 2 步选择家族并创建自定义 DB 参数组对家族集合排序后取最后一个作为selectedFamily再用tempName(prefix: rds-example)生成随机唯一名称随机数取自 100 万到 10 亿之间entry.swift#L799-L801随后调用createDBParameterGroupentry.swift#L326-L348。其入参为CreateDBParameterGroupInput( dbParameterGroupFamily: familyName, // 参数组家族如 mysql8.0 dbParameterGroupName: groupName, // 自定义参数组名称 description: Created using the AWS SDK for Swift )第 3 步核对参数组详情调用describeDBParameterGroupsentry.swift#L350-L371按名称查询刚创建的参数组并打印清单用于验证创建结果。此调用对应单动作列表中的DescribeDBParameterGroups。第 45 步分页拉取并解析全部参数describeDBParametersentry.swift#L373-L411展示了 SDK for Swift 的分页遍历模式let pages rdsClient.describeDBParametersPaginated( input: DescribeDBParametersInput( dbParameterGroupName: groupName, source: source // 可选user / system / engine-default ) ) for try await page in pages { parameterList page.parameters ?? [] }由于参数组内参数通常很多这里利用AsyncSequence风格的for try await逐页累加最终从完整列表里挑出auto_increment_offset与auto_increment_increment两个参数打印其parameterValue、dataType、description、allowedValues字段。source参数用于过滤参数来源user表示用户自定义的修改、system表示系统参数、engine-default表示引擎默认值。第 6 步一次调用修改两个参数modifyDBParametersentry.swift#L413-L446构造两个RDSClientTypes.Parameter对象let parameter1 RDSClientTypes.Parameter( applyMethod: RDSClientTypes.ApplyMethod.immediate, // 立即生效 parameterName: auto_increment_offset, parameterValue: 5 ) let parameter2 RDSClientTypes.Parameter( applyMethod: RDSClientTypes.ApplyMethod.immediate, parameterName: auto_increment_increment, parameterValue: 5 ) let parameterList [parameter1, parameter2] _ try await rdsClient.modifyDBParameterGroup( input: ModifyDBParameterGroupInput( dbParameterGroupName: groupName, parameters: parameterList ) )注意这里把两个参数打包在一次请求中提交applyMethod设为immediate表示无需重启实例即可生效另一个可选值为pending-reboot。第 7 步按来源过滤复核修改结果再次调用describeDBParameters(groupName:source: user)只取source user的参数并打印用于确认第 6 步的修改已经落库。这是先改后查的验证闭环也是排查参数是否生效的惯用手段。第 8 步列出该家族允许的引擎版本listAllowedEngines(family:)entry.swift#L453-L475再次调用describeDBEngineVersions同时传入dbParameterGroupFamily与engine: mysql打印该家族下每个版本号及其描述用于确认所选版本的合法性。第 9 步挑选 micro 规格的实例类型chooseMicroInstanceentry.swift#L477-L527使用describeOrderableDBInstanceOptionsPaginated按引擎与版本分页拉取可选实例规格仅保留类名包含micro的项并打印清单最终返回第一个匹配项。这一策略既规避了跨区域规格差异也控制了示例成本micro 规格通常属于低配档位。第 10 步创建带数据库的 DB 实例createDBInstanceentry.swift#L529-L579是场景的核心其入参体现了创建实例时最常用的配置维度CreateDBInstanceInput( allocatedStorage: 100, // 100 GB 通用存储 dbInstanceClass: instanceClass, // 上一步选出的 micro 规格 dbInstanceIdentifier: instanceIdentifier, // 随机唯一实例标识 dbName: name, // 形如 SampleDatabase随机9位 dbParameterGroupName: parameterGroupName, // 关联第 2 步创建的自定义参数组 engine: mysql, engineVersion: engineVersion, // 第 1 步选定的版本 masterUserPassword: password, masterUsername: username, storageType: gp2 // 通用型 SSD )成功后会返回并打印新实例的ARNdbInstanceArn失败则进入清理流程。第 11 步轮询等待实例就绪waitUntilDBInstanceReadyentry.swift#L581-L625演示了标准的轮询模式循环调用describeDBInstances检查dbInstanceStatus是否包含available否则每 15 秒Task.sleep(for: .seconds(15))重试一次并打印.提示进度。注释明确指出该过程最长可能超过 10 分钟实例创建与初始化期间状态会依次经历creating等中间态。实例就绪后取出endpoint主机名 端口并打印可直接使用的连接命令mysql -h endpointAddress -P endpointPort -u dbUsername第 1314 步创建快照并等待就绪createDBSnapshotentry.swift#L627-L654以实例标识和随机快照标识前缀sample-snapshot调用createDBSnapshot成功后打印快照的资源 IDdbiResourceId。随后waitUntilDBSnapshotReadyentry.swift#L656-L703沿用与第 11 步相同的 15 秒轮询节奏通过describeDBSnapshots检查快照status是否变为available。清理删除实例与参数组主流程结束时调用cleanUp()entry.swift#L293-L301依次执行deleteDBInstanceentry.swift#L705-L723——注意其入参同时设置了deleteAutomatedBackups: true删除自动备份与skipFinalSnapshot: true跳过最终快照避免遗留备份资源waitUntilDBInstanceDeletedentry.swift#L729-L768——轮询describeDBInstances直到目标实例从列表中消失同样 15 秒间隔deleteDBParameterGroupentry.swift#L770-L785——删除第 2 步创建的自定义参数组。任何步骤失败都会提前跳转到cleanUp()保证异常路径下资源也能被回收避免残留计费资源。工程细节Swift Package 配置场景的 Package.swift 定义了完整的 SwiftPM 工程关键配置如下swift-tools-version: 5.9声明构建所需的最低 Swift 工具版本文件顶部以注释形式同时出现在 snippet 首行是因为该声明必须位于文件第一行同时又要进入代码摘录块。平台声明platforms: [.macOS(.v13), .iOS(.v15)]即最低支持 macOS 13 与 iOS 15。依赖项https://github.com/awslabs/aws-sdk-swift版本约束from: 1.4.0提供AWSRDS产品模块https://github.com/apple/swift-argument-parser.gitmain分支提供ArgumentParser模块用于命令行参数解析。可执行目标rds-scenario依赖AWSRDS与ArgumentParser源码目录为Sources。测试说明⚠ 运行测试同样可能对 AWS 账户产生费用。Swift 示例的测试运行方式统一为在示例目录下执行swift test详见 swift/README.md#Tests。RDS 场景示例侧重演示真实云上资源操作其正确性最终由创建成功 → 状态可轮询到 available → 清理完毕这一运行链路上的打印输出与实际资源状态来验证。延伸阅读Amazon RDS 用户指南Amazon RDS User GuideAmazon RDS API ReferenceSDK for Swift Amazon RDS 参考AWSRDS 模块的 Swift 文档在仓库内还可继续探索swift/example_code/rds/scenario/Sources/entry.swift 的完整源码与 scenario/Package.swift 的工程配置以及 swift/example_code/swift-sdk 下的 ErrorHandling、Waiters、pagination 等主题示例——它们与本场景中for try await分页、轮询与错误处理等模式一脉相承。Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. SPDX-License-Identifier: Apache-2.0赞分享示例工程教程后端【免费下载链接】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 SDK for .NET 操作 Amazon RDS从 Hello 示例到实例生命周期管理实战使用 AWS SDK for .NET 操作 Amazon RDS从 Hello 示例到实例生命周期管理实战 导读 本文基于 aws doc sdk exam示例工程教程后端使用 AWS SDK for C 操作 Amazon RDS从 Hello World 到 DB 实例全生命周期管理使用 AWS SDK for C 操作 Amazon RDS从 Hello World 到 DB 实例全生命周期管理 本文基于 cpp/example_c示例工程教程后端使用 AWS SDK for Go V2 管理 Amazon RDS 数据库实例从 Hello 到完整生命周期实战使用 AWS SDK for Go V2 管理 Amazon RDS 数据库实例从 Hello 到完整生命周期实战 本指南基于仓库 gov2/rds http示例工程教程后端上一篇如何打造一份吸引 HR 的开源简历Open Source Education Path 给出终极指南下一篇Path of Building终极指南5分钟掌握流放之路最强Build规划工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考