BLOG

LambdaでPHPが動くので、とりあえずSymfony4をいれてみた

2018-11-30 15:14:00

Symfony4 Lambda API Gateway

LambdaでPHPが動くので、とりあえずWordPressをいれてみた』に触発されたので。

セットアップ

途中までは上記リンクと同じです。


mkdir try-lambda-symfony
touch template.yaml
cd try-lambda-symfony
composer create-project symfony/skeleton server
cd server
composer require annotation
composer require maker --dev

AWSTemplateFormatVersion: 2010-09-09
Description: My PHP Application
Transform: AWS::Serverless-2016-10-31
Resources:
 phpserver:
 Type: AWS::Serverless::Function
 Properties:
 FunctionName: !Sub ${AWS::StackName}-phpserver
 Description: PHP Webserver
 CodeUri: src/server
 Runtime: provided
 Handler: router.php
 MemorySize: 3008
 Timeout: 30
 Tracing: Active
 Layers:
 - !Sub arn:aws:lambda:${AWS::Region}:887080169480:layer:php71:3
 Events:
 api:
 Type: Api
 Properties:
 Path: /{proxy+}
 Method: ANY

上記template.yamlは同じですが、router.phpがちょこっと違います。

<?php

if (is_file($_SERVER['DOCUMENT_ROOT'].'/'.$_SERVER['SCRIPT_NAME'])) {
 // Serve static files directly
 return false;
}

// Run index.php for all requests
$_SERVER['SCRIPT_NAME'] = '/index.php';
require 'public/index.php';

requireの部分がpublic/index.phpに変更しています。router.phpはpublic内でなくSymfonyプロジェクト直下におきます。あとはControllerとか適当に作ってパッケージ化、デプロイします。

AWS ConsoleのAPI GatewayでURLを確認してアクセスすると予想通り動きません。



ctype_digit()がみつからないと怒られます。ctype入っているとのことなんですけど有効化されていないのかもしれません。この辺り解決すればとりあえずSymfonyは動きそうな予感です。