#背景
re:Invent 2018でLambdaにCustom Runtimesが追加され、
COBOLがサポートされた裏でPHPもサポートされたので試してみます。
こちらを参考にしました
[LambdaでPHPが動くので、とりあえずWordPressをいれてみた]
(https://wp-kyoto.net/try-to-run-wordpress-in-aws-lambda/)
##ディレクトリ構成はこんな感じです
.
├── src
│ └── php
│ └── index.php
└── template.yaml
###template.yamlはこんな感じにしました。
AWSTemplateFormatVersion: 2010-09-09
Description: PHP Demo
Transform: AWS::Serverless-2016-10-31
Resources:
phpdemo:
Type: AWS::Serverless::Function
Properties:
FunctionName: !Sub ${AWS::StackName}-ironman
Description: PHP Demo
CodeUri: src/php
Runtime: provided
Handler: index.php
MemorySize: 3008
Timeout: 30
Tracing: Active
Layers:
- !Sub arn:aws:lambda:${AWS::Region}:887080169480:layer:php71:3
Events:
api:
Type: Api
Properties:
Path: /ironman
Method: get
###index.phpの内容は以下のものになります。
<?php
$array = [
'Iron Man',
'Batman',
'Suit Guy',
];
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<?php
foreach($array as $val) {
echo $val . '<br>' . PHP_EOL;
}
?>
</body>
</html>
###デプロイしちゃいます
のまえにデプロイ用のバケット作ります。
aws s3 mb s3://pipeline-php-demo
AWSのコンソールから作ってもいいです。
###デプロイ
$ sam package \
--template-file template.yaml \
--output-template-file serverless-output.yaml \
--s3-bucket pipeline-php-demo(上で作ったバケット名)
$ sam deploy \
--template-file serverless-output.yaml \
--stack-name php-demo(CFnのスタックに表示させたい名前) \
--capabilities CAPABILITY_IAM
##結果
API Gatewayのエンドポイントをブラウザで開くと、、
ちゃんと配列がループしてますね!!
#まとめ
というか、サーバーワークスさんの二番煎じになっちゃってますねこれ><
軽く試したところ
undefined function json_encode()
って怒られたのでへこみました。