Closed1
Laravel + Fargate + Auroraで一発目のmigrateをなんとかするやつ
上記作業の続きから。
表題通りの3構成をAWS上に作成しており、fargateのDNS(本当はALB)にアクセスするとLaravelのデフォルト画面が表示されるよって状態。
ちなみにFargateとAuroraの接続のために、通常.envに設定するDB_HOSTなどの環境変数をすべてParameterStoreに保管し、タスク定義済み。
ここから現状空のAuroraに対してphp artisan migrate
を行い、laravelという名称のDBを作成するまでを行う。
migrateコマンドをfargate上で実行する手順
-
ECS>クラスター>タスク
画面に遷移 -
新しいタスクの実行
をクリック - VPCやサブネット、SGなどもろもろ選択した後、
詳細オプション
を開き、コンテナの上書き>Laravelコンテナ
を開く -
コマンドの上書き
にsh,-c,php artisan migrate --force
を入力 - 一番下の
タスクの実行
をクリック
これで一応はfargateコンテナ上でコマンドを実行してくれる(スマートなやり方なのかは不明)。
これまで何回かこの工程を繰り返しており、そのたびなんのエラーが吐かれているのかCloud Watchで確認している(Laravelコンテナにpdo_mysqlをインストールしてなかったりなどで…)。
現在遭遇しているエラー
production.ERROR: SQLSTATE[HY000] [1049] Unknown database 'laravel' (SQL: select * from information_schema.tables where table_schema = laravel and table_name = migrations and table_type = 'BASE TABLE')
laravelなんてデータベース存在しませんよ、と怒られている。実際Auroraの中身は初期状態のため、存在しなくて当然なのだけど、環境変数にDB_DATABASE=Laravelと設定しているのでエラーが出ている模様。
ちなみにこの時点でエラー内容からAuroraへの接続はできていることを確認。
そもそもDB名ってなんぞと思ったら、Auroraインスタンス時に設定する項目に"DB名"があるのでそれだった...。
ParameterStoreでDB_DATABASEの値をAuroraのDB名に変更し、再度migrate実行し、ログを確認。
うおおおお行けた。
とりあえず今後もmigrateは開発工程で頻繁に行う予定なのでタスク実行をCLIでできるようにしておく。
aws ecs run-task \
--cluster <クラスター名> \
--task-definition <タスク定義名> \
--overrides '{"containerOverrides": [{"name":"laravel","command": ["sh","-c","php artisan migrate --force"]}]}' \
--launch-type FARGATE \
--network-configuration "awsvpcConfiguration={subnets=["<サブネットID>"],securityGroups=["セキュリティグループ名"],assignPublicIp=DISABLED}"
このスクラップは2021/05/14にクローズされました