craftcms / yii2-dynamodb
Yii2 实现的适用于 DynamoDB 的缓存、会话和队列驱动程序
Requires
- ext-json: *
- aws/aws-sdk-php: >=2.4
- yiisoft/yii2: ^2.0.45
- yiisoft/yii2-queue: ^2.3.2
Requires (Dev)
- craftcms/ecs: dev-main
- craftcms/phpstan: dev-main
- craftcms/rector: dev-main
- phpunit/phpunit: ^8.5
This package is auto-updated.
Last update: 2024-08-25 10:48:12 UTC
README
使用此库将 DynamoDB 作为一个 缓存、会话 或 队列,轻松地在您的 Yii2 或 Craft CMS 项目中使用。
注意:目前 Craft 支持 Yii2 Queue 版本 2.3.0,因此此软件包基于 yii2-queue 的 2.3.0 版本。
安装
您可以通过 composer 安装此软件包
composer require craftcms/yii2-dynamodb
使用方法
此软件包为 DynamoDB 提供了三个 Yii 组件:缓存、会话和队列。
缓存组件
创建 DynamoDB 缓存表
由于 DynamoDB 是一个 NoSQL 数据库,您必须指定的唯一键是主键。您可以使用以下 AWS CLI 命令生成缓存表。
aws dynamodb create-table --table-name=my-app-cache-table \ --attribute-definitions=AttributeName=id,AttributeType=S \ --key-schema=AttributeName=id,KeyType=HASH \ --billing-mode=PAY_PER_REQUEST
注意:由于 ID 可以包含除了数字以外的内容,它需要以字符串形式在 DynamoDB 中指定。
配置缓存组件
在您的 app.php
中,将 cache
组件配置为使用驱动程序。
use craftcms\dynamodb\DynamoDbCache; return [ 'bootstrap' => [ 'cache', ], 'components' => [ 'cache' => [ 'class' => DynamoDbCache::class, 'dataAttribute' => 'data', // optional: defaults to data 'dynamoDb' => [ 'table' => 'my-app-cache-table', 'partitionKeyAttribute' => 'id', // optional: defaults to 'PK' 'endpoint' => 'http://localhost:8000', // optional: used for local or when using DAX 'region' => '<region>', // optional: defaults to AWS_REGION env var 'ttl' => 60*60*24, // optional: number of seconds until items are considered expired 'ttlAttribute' => 'expires' // optional: defaults to 'TTL' 'credentials' => [ 'key' => '<key>', // optional: defaults to AWS_ACCESS_KEY_ID env var 'secret' => '<secret>', // optional: defaults to AWS_SECRET_ACCESS_KEY env var ], ], ], ], ];
会话组件
创建 DynamoDB 会话表
由于 DynamoDB 是一个 NoSQL 数据库,您必须指定的唯一键是主键。您可以使用以下 AWS CLI 命令生成会话表。
aws dynamodb create-table --table-name=my-app-session-table \ --attribute-definitions=AttributeName=id,AttributeType=S \ --key-schema=AttributeName=id,KeyType=HASH \ --billing-mode=PAY_PER_REQUEST
注意:由于 ID 可以包含除了数字以外的内容,它需要以字符串形式在 DynamoDB 中指定。
配置会话组件
在您的 app.php
中,将 session
组件配置为使用驱动程序。
use craftcms\dynamodb\DynamoDbSession; return [ 'bootstrap' => [ 'session', ], 'components' => [ 'session' => [ 'class' => DynamoDbSession::class, 'dataAttribute' => 'data', // optional: defaults to data 'dynamoDb' => [ 'table' => 'my-app-session-table', 'partitionKeyAttribute' => 'id', // optional: defaults to 'PK' 'endpoint' => 'http://localhost:8000', // optional: used for local or when using DAX 'region' => '<region>', // optional: defaults to AWS_REGION env var 'ttl' => 60*60*24, // optional: number of seconds until items are considered expired 'ttlAttribute' => 'expires' // optional: defaults to 'TTL' 'credentials' => [ 'key' => '<key>', // optional: defaults to AWS_ACCESS_KEY_ID env var 'secret' => '<secret>', // optional: defaults to AWS_SECRET_ACCESS_KEY env var ], ], ], ], ];
队列组件
创建 DynamoDB 队列表
由于 DynamoDB 是一个 NoSQL 数据库,您必须指定的唯一键是主键。您可以使用以下 AWS CLI 命令生成队列表。
aws dynamodb create-table --table-name=my-app-queue-table \ --attribute-definitions=AttributeName=id,AttributeType=S \ --key-schema=AttributeName=id,KeyType=HASH \ --billing-mode=PAY_PER_REQUEST
注意:由于 ID 可以包含除了数字以外的内容,它需要以字符串形式在 DynamoDB 中指定。
配置队列组件
在您的 app.php
中,将 queue
组件配置为使用驱动程序。
use craftcms\dynamodb\DynamoDbQueue; return [ 'bootstrap' => [ 'queue', ], 'components' => [ 'queue' => [ 'class' => DynamoDbQueue::class, 'dynamoDb' => [ 'table' => 'my-app-queue-table', 'partitionKeyAttribute' => 'id', // optional: defaults to 'PK' 'endpoint' => 'http://localhost:8000', // optional: used for local or when using DAX 'region' => '<region>', // optional: defaults to AWS_REGION env var 'ttl' => 60*60*24, // optional: number of seconds until items are considered expired 'ttlAttribute' => 'expires' // optional: defaults to 'TTL' 'credentials' => [ 'key' => '<key>', // optional: defaults to AWS_ACCESS_KEY_ID env var 'secret' => '<secret>', // optional: defaults to AWS_SECRET_ACCESS_KEY env var ], ], ], ], ];
测试
使用 Docker 针对本地 DynamoDB 表运行测试。要运行测试,您必须执行以下操作:
- 确保 Docker 正在运行
- 使用
docker-compose up -d
在docker-compose.yaml
中启动 DynamoDB 容器 - 为 缓存、会话 和 队列 创建 DynamoDB 表
- 使用
vendor/bin/phpunit --testdox
运行测试套件
为了使设置和测试更加容易,您可以使用以下 Composer 脚本
composer run setup
composer run test
致谢
许可协议
MIT 许可协议 (MIT)。有关更多信息,请参阅许可文件。