はじめに
Laravel5.8から、セッションストアにDynamoDBが追加されたので、(公式見ても全く判らなかったので)使うまでにやったことを残しておきます。
手順
テーブル作成
自動で作ってくれるコマンドなどは存在しないので、自分で作成する。
aws dynamodb create-table --table-name=[your session table name] --attribute-definitions AttributeName=key,AttributeType=S --key-schema AttributeName=key,KeyType=HASH --billing-mode PAY_PER_REQUEST
AttributeNameはLaravelのCacheManagerがデフォルトでkeyを入れてくるので、keyにしている。
この値は変えても問題は無いです。
(私は変えました)
config/cache.phpに設定を追加
最初からLaravel5.8を使用しているとdymanodbの設定が入っているけど、そうでない場合は存在しないので、以下を追加する。
'dynamodb' => [
'driver' => 'dynamodb',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
'table' => env('DYNAMODB_CACHE_TABLE', 'cache'),
'endpoint' => env('DYNAMODB_ENDPOINT'),
],
iamで制御すると思うので、
driver、region、table以外の設定は大抵不要。
expireされる時間とか設定したい場合、以下のコードを読むと何が追加で設定可能かが判ります。
私の最終的な設定はこうなりました。
'dynamodb' => [
'driver' => 'dynamodb',
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
'table' => env('DYNAMODB_CACHE_TABLE', 'cache'),
'attributes' => [
'key' => env('SESSION_KEY', 'key'),
// 'expiration' => env('SESSION_LIFETIME', 0), <- ミスリード:カラム名の指定
],
],
※keyを書き換えてるのは、デフォルトのキー名が判らなかったためです。。
.envのSESSION_DRIVERを書き換える
SESSION_DRIVER=dynamodb
終わりに
dynamodbはリクエストの並列実行にとにかく強いので、使える条件が整ってるときは積極的に使っていきたいです。