Laravel – DynamoDB

composerからライブラリを導入

$ composer require baopham/dynamodb

app.phpにライブラリを呼び出し

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

設定ファイルの出力

$ php artisan vendor:publish

IAMを事前に設定しておき、config/dynamodb.phpに設定ファイルが生成されるので、それに応じて.envに以下の様に記載。

DYNAMODB_KEY=***
DYNAMODB_SECRET=***
DYNAMODB_REGION=ap-northeast-1

挿入(insert)を行う場合は以下の様な感じで。

<?php

namespace App\Dynamo;

use BaoPham\DynamoDb\DynamoDbModel as Model;

/**
 * Class ItemUse
 * @package App
 */
class ItemUseJob extends Model
{
    /**
     * @var string
     */
    protected $table = 'item_use_jobs';

    public function saveJob($item_id, $job_id){
        $this->item_id = $item_id;
        $this->job_id  = $job_id;
        parent::save();
    }
}

https://github.com/baopham/laravel-dynamodb

EC2にてSSM(Session Manager)を利用する

プライベートサブネットでもコンソールが弄れる様に、EC2でSession Managerを使って操作ができる様にする。

・SSHでなくても操作が可能になる
・外部と繋がっていないインスタンスも可能(少し語弊があるかも)

手順1. IAMからロールの作成

EC2からSSMが利用できる様にロールの設定を行う、ここではAmazonEC2RoleforSSMを選択、その後わかりやすい様に名前を付けて保存。

手順2. EC2作成

EC2作成時、IAMロールに先程保存したRoleを指定。既存インスタンスを指定する場合は「IAM ロールの割り当て/置換」から行う、今回はAmazon Linux 2を選択した。

手順3. Systems Managerから操作

Systems ManagerよりSession Managerを選択すると、許可したEC2が出現するはず。表示されない場合は、インスタンスの再起動等を行うと良いかも知れない。またSSMのバージョンが古い場合も現れないので、必要に応じてインスタンスでパッケージを更新する必要あり。

Laravel – No application encryption key has been specified

プロジェクトをいじっていたら、500エラー

172.21.0.1 - - [22/Jul/2020:23:57:13 +0000] "GET / HTTP/1.1" 500 3363

Laravel側のログを確認すると以下のエラーが発生している模様

production.ERROR: No application encryption key has been specified. {"exception":"[object] (RuntimeException(code: 0): No application encryption key has been specified. 

encryption keyは以下の様です。

https://laravel.com/docs/7.x/encryption#configuration

記載にある通りにキーを生成して解決します、最終的に.envが肝でした。

php artisan key:generate