🍣

AWS Blogの「新しいサーバーレス LAMP スタック – Part 1」をやってみる

3 min read

Summary

  • AWS blogの新しいサーバーレス LAMP スタック – Part 1の通りだと動かなかったので備忘録として記す。
  • index.php<?phpを記載しないと動かなかった。
  • 最終的な目的はインフラとして組むべき部分がどこらへんになるのかを理解すること

Detail

lambda用のCustum PHP runtimeの作成の仕方はgithubのREADMEに記載されているので記載はしない。

Creating dependenciesの手順2(install Guzzle)にてSegmentation faultが起きるのでautoloader.phpができてるか目視したほうがよい

構成

Part1ではLambdaのみ、VPCにも属さないのでものすごくシンプルに下記となる。


図1

Cloud9を作成

リージョンは東京、インスタンスサイズはt3.mediumとした。
makeコマンドを使ったコンパイルをするのでメモリが少ないと困るかもしれないと思ったので。
一応t3.smallでも可能なことは確認済み。

t2.microで実施可能かは検証してないため不明。
リージョンは東京としたが、Part3以降リージョンが影響するかは未確認。
※現状はPart2までしか実施していないため

GithubではCloud9でAmazon Linuxを推奨していたがBlog上の手順記載ではAmazon Linux2のものとなっていたので、Cloud9も Amazon Linux2にて実施している

Custom PHP runtimeを作成

PHPのRuntime作成時にSegmentation faultが出力されたが動作はしたので特に原因等の確認は行っていない

comopser.php installしないとautoloader.phpが生成されなかったと思っていたが
segmentation failが原因だったようで、何度か実施したらautoloader.phpが生成されてることもあった。

php(composer)のSegmentation faultは検索するとかなり出てくるのでいろいろ既知の問題のようだが私の知りたい本題とは別問題なので、このまますすめた。

githubの手順にしたがって作成する。

autoloader.phpが必要になるので./bin/php composer.phar require guzzlehttp/guzzle実施後 vendor/下にautoloader.phpが作成されていることを確認したほうがよい。

Generating autoload files
1 package you are using is looking for funding.
Use the `composer fund` command to find out more!
Segmentation fault

上記のようにGenarating autoload filesのメッセージが出力されていれば問題なさそう

作成されていなかった場合は再度requireを実施すること。

確認
$ ll vendor/
total 8
-rw-rw-r-- 1 ec2-user ec2-user  178 Jan 24 10:45 autoload.php
drwxrwxr-x 2 ec2-user ec2-user 4096 Jan 24 10:45 composer
drwxrwxr-x 5 ec2-user ec2-user   48 Jan 24 10:45 guzzlehttp
drwxrwxr-x 4 ec2-user ec2-user   45 Jan 24 10:45 psr
drwxrwxr-x 3 ec2-user ec2-user   27 Jan 24 10:45 ralouphie

このあとruntimeとvendorをLambdaのレイヤーとして登録する作業があるが
一度作成したlayer-nameは削除しても、その後再度登録した際はバージョンが継続される模様
これによる問題は基本的にはないが、もし気にするようであれば
ランダム文字列等でlayter-nameを作成するのもありかもしれない。

PHP Lambda 関数の作成

Blogの手順にしたがって「PHP Lambda 関数の作成」を実施する

手順8のindex.phpでは動作しないので下記コードに修正

src/index.php
<?php
//index function
function index($data)
{
 return "Hello, ". $data['name'];
}

「保存」というボタンは見つからなかったのでindex.phpファイルを作成後「デプロイ」ボタンを押すことで対応した。

「起動設定セクション」にハンドラはなく、「ランタイム設定」のところにあるのでそちらを修正すること

あとは問題ないかと


図2

おつかれさまでした

環境の削除をわすれずに!!!

Discussion

ログインするとコメントできます