サーバレスららびゅうをやってみた
2019/01/17
自己紹介
mjima
好きなAws
Lambda, cognito
Qiita
その他60%!!
今回は、
ららびゅうを
DynamoDbに繋ぎつつ
Lambdaに乗っけます
つまりサーバーレスlaravel
これをつくりました
前提として、
- リクガメの水槽に温度と湿度のセンサーがあり、5分毎にaws iotにデータを飛ばしている
- 設定済のDynamoDbがあり、センサーデータが入っている
{
id: "id12345678",
expire: "12345678", //TTL
payload: {
expire: "12345678",
d1: "22.2", //温度
d2: "33.3" //湿度
}
}
説明したいこと
-
DynamoDb繋ぐ
-
vue.js
-
Lambda Layer
-
SAM CLI
DynamoDb繋ぐ
やった事
- baopham/dynamodbをcomposerでインストール
- baopham/dynamodbを設定
- .env等を設定
- Controller追加
- Model追加
- View追加
- route/api.php追加
baopham/dynamodb
$ composer require baopham/dynamodb
$ vi config/app.php <- 'providers'に追加
$ php artisan vendor:publish
Which provider or tag's files would you like to publish?:
[0 ] Publish files from all providers and tags listed below
[1 ] Provider: BaoPham\DynamoDb\DynamoDbServiceProvider
[2 ] Provider: BeyondCode\DumpServer\DumpServerServiceProvider
[3 ] Provider: Fideloper\Proxy\TrustedProxyServiceProvider
[4 ] Provider: Illuminate\Foundation\Providers\FoundationServiceProvider
[5 ] Provider: Illuminate\Mail\MailServiceProvider
[6 ] Provider: Illuminate\Notifications\NotificationServiceProvider
[7 ] Provider: Illuminate\Pagination\PaginationServiceProvider
[8 ] Provider: Laravel\Tinker\TinkerServiceProvider
[9 ] Tag: config
[10] Tag: laravel-errors
[11] Tag: laravel-mail
[12] Tag: laravel-notifications
[13] Tag: laravel-pagination
> 1
Copied File [/vendor/baopham/dynamodb/config/dynamodb.php] To [/config/dynamodb.php]
Publishing complete.
とりあえずこうなる
vue.js
nodejsインストール
welcome.blade.phpの修正、
ExampleComponent.vue追加
自身のapiをaxiosで叩き、DynamoDbよりデータ取得
sudo amazon-linux-extras install epel
sudo yum install -y nodejs
Lambd Layer
is 何?
- 共通処理を切り出したLayerを作り、そdの上で動くLambda functionで使える
- カスタムランタイムとしてphp等の様々な言語が動作する
比較的大きなものでも動かせるようになるので、laravel等のフレームワーク用のLayer作っておいてソースだけをLambda Functionにdeployとかできるかもですね。
SAM CLI
is 何?
Serverless Application Model
AWS SAM は言うならば、 AWS CloudFormation (以降 CFn) のサーバーレス拡張 です。AWS SAM の各リソースは CFn のこれまでのリソース定義と似たフォーマットで定義されており、このフォーマットで記述されたテンプレートを CFn に渡すことで、スタックとして AWS 上に展開することができます。具体的には以下のような感じです。YAML または JSON で記述することができます。
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
FunctionName:
Type: AWS::Serverless::Function
Properties:
Handler: index.handler
Runtime: nodejs4.3
躓いた事とか
api gateway:
/css/app.css等のpathがdefaultでは表示できなかった。
→ api gatewayのリソースとして
追加してやれば表示できると思う
Lambda Layer:
もっとLaravel特有の部分とソースを分けておいてよかったように思う。
以上です。
ご清聴ありがとう
ございました。
”AWS Lambda で Laravel を動かしてみた”をやってみた
https://qiita.com/ikegam1/items/b96a496751d448fffe6c
Lambda on Laravel on VueJs with Dynamodb する
https://qiita.com/ikegam1/items/e903aab13ad026287e39
https://github.com/ikegam1/Lambda-on-Laravel-on-VueJs-with-Dynamodb
サーバーレスでららびゅうしてみた
By Koichi Minamijima
サーバーレスでららびゅうしてみた
- 1,648