Skip to content
A Laravel 5 service provider for the AWS DynamoDB session handler
PHP
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
config
src
LICENSE
README.md
composer.json

README.md

Jam for Laravel 5

A Laravel 5 service provider for the AWS DynamoDB session handler.

NOTE: In the Laravel 5.8 release notes it was announced that DynamoDB session drivers are now baked into the framework itself. As a reault, this package should not be required for Laravel v5.8 and above.

composer require fivesqrd/jam-laravel

Configuration

.env requirements

SESSION_DRIVER=dynamodb
SESSION_LIFETIME=1440
SESSION_TABLE="My-Table-Name"

AWS_ACCESS_KEY_ID="my-key"
AWS_SECRET_ACCESS_KEY="my-secret"
AWS_DEFAULT_REGION="eu-west-1"
#AWS_ENDPOINT="http://localhost:8000"

Create DynamoDB table

For production environments it's important to use the AWS Management Console to create the table. This is to ensure the correct billing and throughput settings are applied. The only requirement is that the table has a partition key of 'id'. For garbage collection you can set your TTL attribute to 'expires'

For local DynamoDB servers and dev environments the following artisan command is available:

php artisan make:jam

IAM Permissions

Allowing the session handler access to the table requires the following IAM permissions:

{
  "Version": "2012-10-17",
  "Statement": [
        {
            "Action": [
                "dynamodb:GetItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem",
                "dynamodb:Scan",
                "dynamodb:BatchWriteItem"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:dynamodb:<region>:<account-id>:table/<table-name>"
        }
    ]
}
You can’t perform that action at this time.