Laravel+dynamodbで動かしてみた
こんにちは
西澤です。
タイトル通りdynamodbをちょっと動かしてみたかったので
ララベラーの私として、laravelでやってみようかと思いやってみました。
結論から言うと、拡張性ないですw
ライブラリは
・lumen-dynamodb
・laravel-dynamodb
を使いました。
なぜ2つも使ったかというと、lumen-dynamodbのORMが使えなくて、laravel-dynamodbにはmigraitonがないので
・lumen-dynamodbはmigration
・laravel-dynamodbはORM
として使うことにしました。
laravelはlumen-dynamodbが5.2以上対応なんで5.4を使っています。
まずはインストールから
後は、ORMで簡単に取ってきたり、保存したり、削除したりできます。
ORMはBaoPham\DynamoDb\DynamoDbModelを継承して使います。
使えるとしたら、session管理くらい。
軽量なデータ向けなので、わざわざwebサーバー建てて、通信する意味あんまない。
lambda+dynamodbのユースケースが多いのがよくわかった。
ただ、phperのみなさんには、酷ですが、lambdaはPHPに対応していません!!!
どうしても、PHPでやりたいなら、EC2+dynamodbみたいな構成はなくはないですが、正直なはなし
そこまでしてる時間があるなら、lambdaでnode.jsをサクッと書けるようになったほうが早い気がしますねw
では、また。
西澤です。
タイトル通りdynamodbをちょっと動かしてみたかったので
ララベラーの私として、laravelでやってみようかと思いやってみました。
結論から言うと、拡張性ないですw
ライブラリは
・lumen-dynamodb
・laravel-dynamodb
を使いました。
なぜ2つも使ったかというと、lumen-dynamodbのORMが使えなくて、laravel-dynamodbにはmigraitonがないので
・lumen-dynamodbはmigration
・laravel-dynamodbはORM
として使うことにしました。
laravelはlumen-dynamodbが5.2以上対応なんで5.4を使っています。
まずはインストールから
composer require nordsoftware/lumen-dynamodb
composer require baopham/dynamodb
プロバイダの設定
// config/app.php
'providers' => [
...
BaoPham\DynamoDb\DynamoDbServiceProvider::class,
Nord\Lumen\DynamoDb\DynamoDBServiceProvider::class
...
];
接続の設定
// config/service.php
'dynamodb' => [
'key' => env('DYNAMODB_KEY', 'dynamodb_local'), //Access key ID
'secret' => env('DYNAMODB_SECRET', 'secret'), //Secret access key
'region' => env('DYNAMODB_REGION', 'ap-northeast-1'),
'version' => env('DYNAMODB_VERSION', 'latest'),
'endpoint' => env('DYNAMODB_LOCAL_ENDPOINT', ''),
'local' => env('DYNAMODB_LOCAL',false),
],
テーブルの設定
任意の場所に書きます。(ex.config/dynamodb.php)
return [
[
'TableName' => 'users',
'AttributeDefinitions' => [
[
'AttributeName' => 'id',
'AttributeType' => 'S',
],
],
'KeySchema' => [
[
'AttributeName' => 'id',
'KeyType' => 'HASH',
],
],
'ProvisionedThroughput' => [
'ReadCapacityUnits' => 10,
'WriteCapacityUnits' => 20,
'OnDemand' => false,
],
],
[
'TableName' => 'orders',
'AttributeDefinitions' => [
[
'AttributeName' => 'id',
'AttributeType' => 'S',
],
],
'KeySchema' => [
[
'AttributeName' => 'id',
'KeyType' => 'HASH',
],
],
'ProvisionedThroughput' => [
'ReadCapacityUnits' => 10,
'WriteCapacityUnits' => 20,
'OnDemand' => false,
],
],
];
では、migrationを実行すると
php artisan dynamodb:create --config=config/dynamoDb.php
Creating table users
Table "users" created.
Creating table orders
Table "orders" created.
ってなかんじで、dynamodbに設定通りテーブルを作ってくれます。後は、ORMで簡単に取ってきたり、保存したり、削除したりできます。
ORMはBaoPham\DynamoDb\DynamoDbModelを継承して使います。
まとめ
dynamodbはnosqlなので、webフレームワークでメインに使うものではない。使えるとしたら、session管理くらい。
軽量なデータ向けなので、わざわざwebサーバー建てて、通信する意味あんまない。
lambda+dynamodbのユースケースが多いのがよくわかった。
ただ、phperのみなさんには、酷ですが、lambdaはPHPに対応していません!!!
どうしても、PHPでやりたいなら、EC2+dynamodbみたいな構成はなくはないですが、正直なはなし
そこまでしてる時間があるなら、lambdaでnode.jsをサクッと書けるようになったほうが早い気がしますねw
では、また。