View a markdown version of this page

適用於 PHP 的 Aurora DSQL 連接器 PDO_PGSQL - Amazon Aurora DSQL

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

適用於 PHP 的 Aurora DSQL 連接器 PDO_PGSQL

Aurora DSQL Connector for PHP 是建置在 上的 PHP 連接器PDO_PGSQL,整合 IAM 身分驗證,以將 PHP 應用程式連線至 Amazon Aurora DSQL 叢集。

連接器會處理字符產生、SSL 組態和連線管理,讓您可以專注於應用程式邏輯。

關於連接器

Aurora DSQL Connector for PHP 在 上新增了身分驗證層PDO_PGSQL,可處理產生 IAM 字符,讓您使用現有的 PDO 工作流程連線到 Aurora DSQL。Amazon Aurora DSQL 需要具有時間限制權杖的 IAM 身分驗證,連接器會自動為您管理權杖產生。

什麼是 Aurora DSQL 身分驗證?

在 Aurora DSQL 中,身分驗證涉及:

  • IAM 身分驗證:所有連線都使用具有時間限制權杖的 IAM 型身分驗證

  • 權杖產生:連接器使用 AWS 登入資料產生身分驗證權杖,這些權杖具有可設定的生命週期

Aurora DSQL Connector for PHP 了解這些要求,並在建立連線時自動產生 IAM 身分驗證字符。

功能

  • 自動 IAM 身分驗證 - 處理 Aurora DSQL 字符產生和重新整理

  • 建置於 PDO_PGSQL - 包裝適用於 PHP 的標準 PostgreSQL 延伸模組

  • 無縫整合 - 適用於現有的 PDO 工作流程

  • SSL 強制執行 - 一律使用 SSL 搭配 verify-full 模式和直接 TLS 交涉

  • 區域自動偵測 - 從 Aurora DSQL 叢集主機名稱擷取 AWS 區域

  • AWS 憑證支援 - 支援 AWS 設定檔和自訂憑證提供者

  • OCC 重試 - 選擇加入具有指數退避和抖動的樂觀並行控制重試

  • PSR-3 記錄 - 重試診斷的相容記錄

範例應用程式

如需完整範例,請參閱 GitHub 上的範例應用程式

快速入門指南

要求

  • PHP 8.2 或更新版本

  • ext-pdo_pgsql 延伸模組

  • 存取 Aurora DSQL 叢集

  • AWS 設定的登入資料 (透過 AWS CLI、環境變數或 IAM 角色)

安裝

將套件新增至您的專案:

composer require awslabs/aurora-dsql-pdo-pgsql

Usage

組態型連線

<?php require_once 'vendor/autoload.php'; use Aws\AuroraDsql\PdoPgsql\AuroraDsql; use Aws\AuroraDsql\PdoPgsql\DsqlConfig; $config = new DsqlConfig( host: 'your-cluster.dsql.us-east-1.on.aws', occMaxRetries: 3 ); $pdo = AuroraDsql::connect($config); // Read $stmt = $pdo->query('SELECT 1 AS result'); $row = $stmt->fetch(PDO::FETCH_ASSOC); echo "Connected: {$row['result']}\n"; // Transactional write with automatic OCC retry $id = $pdo->transaction(function (PDO $conn): string { $stmt = $conn->prepare('INSERT INTO users (name) VALUES (?) RETURNING id'); $stmt->execute(['Alice']); return $stmt->fetchColumn(); });

連線字串格式

對於簡單的指令碼或當您偏好連線字串語法時,連接器支援 postgres://和具有 Aurora DSQL 特定查詢參數的postgresql://連線字串:

$pdo = AuroraDsql::connectFromDsn( 'postgres://admin@your-cluster.dsql.us-east-1.on.aws/postgres?region=us-east-1' );

支援的查詢參數:regionprofiletokenDurationSecsormPrefix

OCC 重試

Aurora DSQL 使用樂觀並行控制 (OCC)。當兩個交易修改相同的資料時,第一個遞交獲勝,第二個收到 OCC 錯誤。

OCC 重試是選擇加入。在組態occMaxRetries中設定 ,以啟用具有指數退避和抖動的自動重試:

$config = new DsqlConfig( host: 'your-cluster.dsql.us-east-1.on.aws', occMaxRetries: 3 ); $pdo = AuroraDsql::connect($config); // Single statements are automatically retried via exec() $pdo->exec("CREATE INDEX ASYNC ON users (email)"); // Multi-statement transactions are retried via transaction() $pdo->transaction(function (PDO $conn) { $conn->exec("UPDATE accounts SET balance = balance - 100 WHERE id = 1"); $conn->exec("UPDATE accounts SET balance = balance + 100 WHERE id = 2"); });
重要

transaction() 會在內部管理 beginTransaction()/commit()/rollBack()。您的回呼應僅包含資料庫操作,並且可以安全地重試。

組態選項

連接器也接受具有 組態查詢參數的 postgres://postgresql://連線字串。支援的查詢參數:regiontokenDurationSecsprofileormPrefix

欄位 Type 預設 Description
host string (必要) 叢集端點或 26 個字元的叢集 ID
region ?string null (自動偵測) AWS region;如果 host 是叢集 ID,則為必要
user string "admin" 資料庫使用者
database string "postgres" 資料庫名稱
port int 5432 Database port (資料庫連線埠)
profile ?string null AWS 登入資料的設定檔名稱
credentialsProvider ?\Closure null 自訂 AWS 登入資料供應商
tokenDurationSecs int 900 (15 分鐘) 字符有效性持續時間,以秒為單位
occMaxRetries ?int null (已停用) exec() 和 的預設最大 OCC 重試次數 transaction()
ormPrefix ?string null 前綴為 的 ORM 字首 application_name
logger ?LoggerInterface null 用於重試警告和診斷的 PSR-3 記錄器

身分驗證

連接器會使用 AWS 登入資料產生字符,自動處理 Aurora DSQL 身分驗證。如果您未提供區域,連接器會從主機名稱剖析該 AWS 區域。

如需 Aurora DSQL 中身分驗證的詳細資訊,請參閱Aurora DSQL 的身分驗證和授權

管理員與一般使用者

  • 名為「admin」的使用者會自動使用管理員身分驗證字符

  • 所有其他使用者都使用一般身分驗證字符

  • 連接器會為每個連線動態產生字符