【環境構築】Laravel × AWS DynamoDBを接続

もくじ

前提

DynamoDBにテーブル作成済みでレコードも存在する前提です。

ライブラリ

baophamを利用します。
DynamoDBをLaravelのEloquentライクに使えるようになるライブラリです。

GitHub - baopham/laravel-dynamodb: Eloquent syntax for DynamoDB

手順

1.インストール

Laravelのディレクトリで実行してください。

$ composer require baopham/dynamodb

2.service providerを追記

'providers' => [
    :
    BaoPham\DynamoDb\DynamoDbServiceProvider::class,
    :
];

3.ファイル作成

AWSの認証情報を取得するためのファイルです。

$ php artisan vendor:publish --provider 'BaoPham\DynamoDb\DynamoDbServiceProvider'

4.AWSのアクセスキー確認(作成)

アクセスキーを持ってる場合は、その際にDLしたCSVから確認できます。

アクセスキーを所持していない場合作成します。
AWS management consoleにIAMユーザーでログインし下記の通り進んでください。
IAM > ユーザ > セキュリティ認証情報 > アクセスキーの作成

5.envファイル

DYNAMODB_CONNECTION=aws  // ★
DYNAMODB_REGION={リージョン}  // ap-northeast-1 など
DYNAMODB_KEY={アクセスキー}
DYNAMODB_SECRET={シークレットキー}

DYNAMODB_CONNECTION(★)は 3で作成した/config/dynamodb.php 内の connections のいずれかを設定します。
存在しない値を設定すると接続できません。

これで接続自体は完了します。

DynamoDBから取得

1. モデル作成

$ php artisan make:model User

2.作成したモデルにinclude

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use BaoPham\DynamoDb\DynamoDbModel;  // ★A

class Users extends DynamoDbModel  // ★B
{
    use HasFactory;

    protected $table = 'Users';  // DynamoDBのテーブル名
}

BaoPhamのモデルを使用するため★Aにuseします。

さらにそれを継承するため★Bを書き換えます。

3.コントローラー

あとはコントローラーでモデルを呼び出してEloquentのように使うことが可能です。

use App\Models\Users;

class UserController extends Controller
{
    public function index()
    {
        $result = Users::all();
        dump($result)
    }

完了!

参考URL

Laravel-dynamodbで使ってdynamoDBに接続してみる