silverstripe / dynamodb
SilverStripe DynamoDB 集成。
5.0.1
2023-09-18 03:20 UTC
Requires
- aws/aws-sdk-php: ^3.281
- silverstripe/framework: ^5
Requires (Dev)
- phpunit/phpunit: ^9.6
- squizlabs/php_codesniffer: ^3.7
README
此模块允许将 SilverStripe 会话存储在 DynamoDB 中。
要求
- SilverStripe 5.0+
- PHP 8.1+
安装
将以下自定义仓库添加到您的 composer.json 中
composer require silverstripe/dynamodb
DynamoDB 会话
如果您想将会话存储在 DynamoDB 中,请在 .env
中设置所需的环境变量
# The name of the DynamoDB table to store sessions in AWS_DYNAMODB_SESSION_TABLE=mysession # The region that the DynamoDB table will live in (in this example here it uses Sydney) AWS_REGION_NAME=ap-southeast-2
一旦设置好,此模块将配置 DynamoDB 并将其注册为会话处理器。
在您实际使用之前,您需要创建一个用于存储会话的表。请按照 AWS SDK for PHP 文档 中的说明操作。
重要:您需要在您的表中设置一个用于垃圾回收的 TTL 属性。模块不提供自动化的垃圾回收功能。
在 AWS 之外使用 DynamoDB
有时您可能想在本地开发环境中测试 DynamoDB 会话是否工作。您可以通过定义 AWS_ACCESS_KEY
和 AWS_SECRET_KEY
来实现这一点。请不要在 EC2 实例的环境文件中定义这些常量,因为凭证由 AWS 内部的 IAM 角色自动处理。
# The AWS access key and secret. This is optional if you've configured an instance with an IAM role # https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials.html # Note that AWS_ACCESS_KEY can only contain alphanumeric characters # https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html#DynamoDBLocal.DownloadingAndRunning.title AWS_ACCESS_KEY=myaccesskey AWS_SECRET_KEY=mysecret
本地测试
您可以通过 DynamoDB Local 来本地模拟 DynamoDB,以便更容易地进行开发。
设置环境常量。请注意,实际的访问密钥和区域被忽略,只需要定义即可。
AWS_DYNAMODB_SESSION_TABLE=mysession AWS_ACCESS_KEY=myaccesskey AWS_SECRET_KEY=mysecret AWS_DYNAMODB_ENDPOINT=http://localhost:8000 AWS_REGION_NAME=ap-southeast-2
下载 DynamoDB Local 并启动它 - 它将在 http://localhost:8000
下可用。
现在使用 AWS CLI Tools 与您本地的 DynamoDB 进行交互。
配置用户(可选)
您可以使用 AWS CLI 工具配置一个用户。如果您有环境变量被收集的问题,请使用此方法。
aws configure set aws_access_key_id myaccesskey aws configure set aws_secret_access_key myaccesskey aws configure set default.region ap-southeast-2
创建表
aws dynamodb create-table --table-name mysession --attribute-definitions AttributeName=id,AttributeType=S --key-schema AttributeName=id,KeyType=HASH --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1 --endpoint-url http://localhost:8000
列出表
aws dynamodb list-tables --endpoint-url http://localhost:8000
列出所有会话
aws dynamodb scan --table-name mysession --endpoint-url http://localhost:8000
删除所有会话(之后使用创建表来重置)
aws dynamodb delete-table --table-name mysession --endpoint-url http://localhost:8000
贡献
您想贡献吗?太好了,请参阅 CONTRIBUTING.md 指南。
许可证
此模块在 BSD 3-Clause 许可证下发布,请参阅 license.md。