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は動きそうな予感です。