サーバレスららびゅうをやってみた

2019/01/17

己紹介

 

mjima

 

 

好きなAws

 Lambda, cognito

Qiita


https://qiita.com/ikegam1

qiita書いてます。

実は今回のLTネタもあります。

 

その他60%!!

今回は、

ららびゅうを

DynamoDbに繋ぎつつ

Lambdaに乗っけます

つまりサーバーレスlaravel

これをつくりました

提として、

  1. リクガメの水槽に温度と湿度のセンサーがあり、5分毎にaws iotにデータを飛ばしている
  2. 設定済のDynamoDbがあり、センサーデータが入っている
{
  id: "id12345678",
  expire: "12345678", //TTL
  payload: {
    expire: "12345678",
    d1: "22.2", //温度
    d2: "33.3"  //湿度
  }
}

明したいこと

  • DynamoDb繋ぐ

  • vue.js

  • Lambda Layer

  • SAM CLI

DynamoDb繋ぐ

やった事

  1. baopham/dynamodbをcomposerでインストール
  2. baopham/dynamodbを設定
  3. .env等を設定
  4. Controller追加
  5. Model追加
  6. View追加
  7. 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 何?

  1. 共通処理を切り出したLayerを作り、そdの上で動くLambda functionで使える
  2. カスタムランタイムとして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

Made with Slides.com