使用 AWS SDK for PHP 操作 Amazon RDS 实例的完整指南(php/example_code/rds)

发布时间:2026/9/27 9:27:19
使用 AWS SDK for PHP 操作 Amazon RDS 实例的完整指南(php/example_code/rds) 示例工程教程后端【免费下载链接】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-doc-sdk-examples仓库中 php/example_code/rds 目录下的官方示例系统讲解如何通过 AWS SDK for PHP v3 调用 Amazon Relational Database ServiceAmazon RDS的核心 API。你将掌握创建数据库实例、创建快照、描述实例、删除实例、启停实例、创建只读副本与查询事件等完整的实战流程并了解示例的运行前提、依赖安装与测试方式。Amazon RDS 是一种云托管的关系数据库 Web 服务它让用户在云中更容易地设置、操作和扩展关系数据库。通过本仓库的 PHP 示例代码可以在 PHP 应用中以最小代码量完成数据库实例的全生命周期管理。示例概览php/example_code/rds目录下的示例展示了使用 AWS SDK for PHP 处理 Amazon RDS 的典型操作主要分为「单动作Single actions」——即对单个服务函数的一次性调用例如创建实例、创建快照、查询实例列表等。目录内容如下CreateDBInstance.php创建数据库实例CreateDBInstanceReadReplica.php为已有实例创建只读副本CreateDBSnapshot.php为实例创建手动快照DeleteInstance.php删除数据库实例DescribeInstance.php列出并描述数据库实例DescribeEvents.php查询实例相关事件StartInstance.php启动已停止的实例StopInstance.php停止实例仅对可暂停的引擎生效此外目录中还包含 composer.json 和composer.lock前者声明了依赖aws/aws-sdk-php: ^3.209与phpunit/phpunit: ^9.5。运行前提Prerequisites根据 php/README.md 的说明运行这些示例需要满足以下环境条件PHP版本 8.1 或更高Composer用于依赖管理PHPUnit用于单元测试AWS SDK for PHP由 Composer 自动安装AWS 凭证已配置好可用于调用 AWS API 的凭证。默认情况下这些示例使用 AWS 默认的凭证提供程序链default AWS credential provider chain运行即读取~/.aws/credentials与~/.aws/config共享文件中的default配置文件。请确保你的本地环境已经通过 AWS CLI 或手动方式配置好凭证。⚠️重要提示运行这些代码可能在你的 AWS 账户中产生费用具体见 AWS Pricing 与 Free Tier 说明运行测试同样可能产生费用建议按最小权限原则least privilege授权仅授予完成任务所需的最低权限这些代码并未在每一个 AWS 区域做过测试请确认目标区域支持你使用的引擎与功能。环境搭建与运行方式安装依赖在包含composer.json的示例目录即php/example_code/rds中执行composer install该命令会根据 composer.json 安装aws/aws-sdk-php^3.209与phpunit/phpunit^9.5并在目录下生成vendor/autoload.php——所有示例源码的第一行require __DIR__ . /vendor/autoload.php;正是依赖它完成自动加载。运行示例这些示例直接从命令行以 PHP 脚本方式运行。推荐在仓库克隆目录结构中、且位于包含起始代码的目录内运行以确保支持文件可以被正确访问。例如php CreateDBInstance.php部分示例项目带有Runner.php用于抽象运行逻辑凡包含该文件的目录均可通过php Runner.php运行。RDS 目录的示例未提供Runner.php直接运行各.php文件即可。核心单动作示例详解以下四个动作是 README.md 中明确列出的「Single actions」示例其余文件只读副本、启停、事件查询则是同一目录下可扩展的配套动作。创建数据库实例CreateDBInstance.phpCreateDBInstance.php 演示如何调用createDBInstanceAPI 创建一个新的 RDS 数据库实例。其核心逻辑如下$rdsClient new Aws\Rds\RdsClient([ region us-east-2 ]); $dbIdentifier {{db-identifier}}; $dbClass db.t2.micro; $storage 5; $engine MySQL; $username MyUser; $password MyPassword; try { $result $rdsClient-createDBInstance([ DBInstanceIdentifier $dbIdentifier, DBInstanceClass $dbClass, AllocatedStorage $storage, Engine $engine, MasterUsername $username, MasterUserPassword $password, ]); var_dump($result); } catch (AwsException $e) { echo $e-getMessage(); echo \n; }关键参数说明参数含义示例取值DBInstanceIdentifier实例的唯一标识符创建后不可更改需替换占位符{{db-identifier}}DBInstanceClass实例的计算与内存规格db.t2.micro可选用db.t3.*、db.r5.*等AllocatedStorage分配的存储容量GB5最低视引擎而定Engine数据库引擎MySQL也可用postgres、mariadb、oracle-se2、sqlserver-*等MasterUsername主数据库管理员用户名自定义字符串MasterUserPassword主数据库管理员密码自定义字符串从源码结构看该示例只提供了创建实例的最小必填参数集未配置 VPC 安全组、子网组、多可用区等高阶选项——这些参数可按需追加到createDBInstance数组中。创建是异步操作返回结果中通常包含DBInstance对象及其DBInstanceStatus初始为creating需要通过describeDBInstances轮询实例进入available状态后才能连接使用。创建数据库快照CreateDBSnapshot.phpCreateDBSnapshot.php 演示调用createDBSnapshotAPI 为已存在实例创建手动快照用于备份、恢复或跨环境复制$rdsClient new Aws\Rds\RdsClient([ region us-east-2 ]); $dbIdentifier {{db-identifier}}; $snapshotName {{backup_2018_12_25}}; try { $result $rdsClient-createDBSnapshot([ DBInstanceIdentifier $dbIdentifier, DBSnapshotIdentifier $snapshotName, ]); var_dump($result); } catch (AwsException $e) { echo $e-getMessage(); echo \n; }参数说明参数含义DBInstanceIdentifier被备份的源数据库实例标识符DBSnapshotIdentifier快照标识符示例占位符{{backup_2018_12_25}}提示了按日期命名的惯例快照创建是异步过程创建完成后可通过 RDS 控制台或describeDBSnapshots查看快照状态creating→available之后可基于快照恢复出新实例。删除数据库实例DeleteInstance.phpDeleteInstance.php 演示调用deleteDBInstanceAPI 删除实例。注意该文件中的客户端使用了us-east-1区域与其他示例的us-east-2不同运行前请确认你的凭证所在区域$rdsClient new Aws\Rds\RdsClient([ region us-east-1 ]); $dbIdentifier {{db-identifier}}; try { $result $rdsClient-deleteDBInstance([ DBInstanceIdentifier $dbIdentifier, ]); var_dump($result); } catch (AwsException $e) { echo $e-getMessage(); echo \n; }默认情况下deleteDBInstance会创建最终快照FinalSnapshot如需跳过可在调用中加入SkipFinalSnapshot true或通过FinalDBSnapshotIdentifier指定最终快照名称。删除操作同样为异步过程。描述数据库实例DescribeInstance.phpDescribeInstance.php 演示调用describeDBInstancesAPI 分页列出所有实例并解析返回结果中的关键字段$rdsClient new Aws\Rds\RdsClient([ region us-east-2 ]); try { $result $rdsClient-describeDBInstances(); foreach ($result[DBInstances] as $instance) { print(pDB Identifier: . $instance[DBInstanceIdentifier]); print(br /Endpoint: . $instance[Endpoint][Address] . : . $instance[Endpoint][Port]); print(br /Current Status: . $instance[DBInstanceStatus]); print(/p); } print( Raw Result ); var_dump($result); } catch (AwsException $e) { echo $e-getMessage(); echo \n; }该示例的返回值解析很有代表性结果数组$result[DBInstances]包含每个实例的完整信息其中Endpoint为嵌套数组Address为主机地址、Port为端口DBInstanceStatus为实例当前状态available、creating、stopped、deleting等。这也印证了创建实例后需通过本 API 轮询状态直至available的调用链关系。目录中的扩展动作示例README 的「Single actions」清单之外同一目录还提供了以下四个可选的单动作示例它们与上述核心 API 同属RdsClient的常用方法创建只读副本CreateDBInstanceReadReplica.phpCreateDBInstanceReadReplica.php 调用createDBInstanceReadReplicaAPI为现有实例创建只读副本read replica可用于读写分离、横向扩展读能力$rdsClient new Aws\Rds\RdsClient([ region us-east-2 ]); $replicaDBIdentifier {{name-for-db-replica}}; $sourceDBIdentifier {{db-identifier-of-db-to-replicate}}; try { $result $rdsClient-createDBInstanceReadReplica([ DBInstanceIdentifier $replicaDBIdentifier, SourceDBInstanceIdentifier $sourceDBIdentifier, ]); var_dump($result); } catch (AwsException $e) { echo $e-getMessage(); echo \n; }两个参数分别对应副本实例的新标识符与源实例标识符。创建副本要求源实例开启自动备份功能。启动实例StartInstance.phpStartInstance.php 调用startDBInstanceAPI 启动一个已停止的实例。该示例额外展示了客户端配置的完整形式——显式指定profile与 APIversion$rdsClient new Aws\Rds\RdsClient([ profile default, version 2014-10-31, region us-east-2 ]); $dbIdentifier {{db-identifier}}; try { $result $rdsClient-startDBInstance([ DBInstanceIdentifier $dbIdentifier, ]); var_dump($result); } catch (AwsException $e) { echo $e-getMessage(); echo \n; }version 2014-10-31指定了 RDS API 的版本号该日期为 RDS API 的 2014-10-31 版本profile default指定使用共享凭证文件中的 default 配置。当客户端只设置region时SDK 会自动使用默认 profile 与最新可用版本这两种写法效果等价。停止实例StopInstance.phpStopInstance.php 调用stopDBInstanceAPI 停止实例$rdsClient new Aws\Rds\RdsClient([ region us-east-2 ]); $dbIdentifier {{db-identifier}}; try { $result $rdsClient-stopDBInstance([ DBInstanceIdentifier $dbIdentifier, ]); var_dump($result); } catch (AwsException $e) { echo $e-getMessage(); echo \n; }注意并非所有引擎都支持停止操作。RDS 仅允许对满足条件例如非多可用区部署、非只读副本的实例执行停止停止期间不会产生实例计算费用但存储费用仍然计费。查询实例事件DescribeEvents.phpDescribeEvents.php 调用describeEventsAPI 查询与实例生命周期相关的系统事件如创建、备份、故障转移、维护等通知$rdsClient new Aws\Rds\RdsClient([ region us-east-2 ]); $dbIdentifier {{db-identifier}}; try { $result $rdsClient-describeEvents([ SourceIdentifier $dbIdentifier, SourceType db-instance, ]); var_dump($result); } catch (AwsException $e) { echo $e-getMessage(); echo \n; }SourceIdentifier指定事件来源SourceType db-instance限定来源类型为数据库实例其他可取值为db-snapshot、db-parameter-group、db-security-group、db-cluster等。错误处理模式上述所有示例统一采用try/catch包裹 API 调用并捕获Aws\Exception\AwsException在文件头部通过use Aws\Exception\AwsException;引入。一旦 API 调用失败如凭证无效、权限不足、参数不合法、实例不存在、配额超限等SDK 会抛出该异常示例直接输出$e-getMessage()并结束执行。在实际生产代码中建议在此基础上补充更细粒度的异常类型判断如Aws\Rds\Exception\RdsException和重试、日志记录等逻辑。测试⚠ 运行测试可能对你的 AWS 账户产生费用。php/example_code/rds目录目前未包含独立的测试文件。根据 php/README.md 的说明仓库中带测试的示例其测试文件通常以Test.php结尾、位于示例旁边的tests目录中需要借助 PHPUnit 运行先执行composer install。若要运行仓库级的 PHP 测试套件可在php/example_code目录下执行phpunit常用过滤方式# 按测试套件过滤先通过 --list-suites 查看可用的套件名 phpunit --testsuite testsuite-name # 按集成测试或单元测试过滤 phpunit --group integ phpunit --group unit套件过滤与分组过滤可组合使用。代码规范与质量检查仓库使用 PHP_CodeSnifferphpcs保持 PHP 代码风格一致。如需对 RDS 示例目录做静态检查可在php目录下先执行composer install安装依赖然后运行vendor/bin/phpcs --standard../.github/linters/phpcs.xml --extensionsphp --ignorevendor example_code/rds简单错误可用 phpcbf 自动修复vendor/bin/phpcbf --standard../.github/linters/phpcs.xml --extensionsphp --ignorevendor example_code/rds运行前注意事项示例使用{{...}}形式的占位符标记需要替换的值运行前务必全部替换否则 API 调用会因非法标识符而失败创建实例、创建快照、创建只读副本均为有费用的操作测试完毕后请及时删除资源以避免持续计费若删除实例时希望跳过最终快照以节省存储费用可参考DeleteInstance.php并添加SkipFinalSnapshot true参数各示例指定的区域不同多数为us-east-2删除示例为us-east-1请确保目标区域支持所选引擎且凭证拥有相应权限。其他资源本目录源码php/example_code/rdsPHP 语言级示例总览与运行说明php/README.mdAWS SDK for PHP v3 的 API 参考文档与开发者指南可在 AWS 官方文档站查阅Aws\Rds\RdsClient类及其全部方法签名、参数与返回类型。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 Kotlin 操作 Amazon RDS完整示例与源码级实战指南使用 AWS SDK for Kotlin 操作 Amazon RDS完整示例与源码级实战指南 本篇技术指南以 aws doc sdk examples 仓库示例工程教程后端使用Java SDK 2.x操作Amazon RDS的完整指南使用Java SDK 2.x操作Amazon RDS的完整指南 还在为如何高效管理Amazon RDS数据库实例而烦恼本文将为你提供一份完整的Java SDK示例工程教程后端使用 AWS SDK for PHP 操作 Amazon EC2完整代码示例与实践指南使用 AWS SDK for PHP 操作 Amazon EC2完整代码示例与实践指南 导读 本文以 AWS 官方代码示例仓库 aws doc sdk exa示例工程教程后端上一篇颠覆传统输入5步掌握SharpKeys系统级键盘重映射效率工具下一篇GitHub加速工具告别卡顿畅享极速体验创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询