
シェア:
アダムは開発者兼コンサルタントで、ウルトラランニング、ブログ、そして指導と支援への飽くなき欲求を持ちながら、他の人々が素晴らしいことを成し遂げるためにテクノロジーを手なずけるのを助けることを楽しんでいる。
ブレフとサーバーレスフレームワークを使ったPHPによるAWSラムダ
様々なクラウド・プロバイダーが提供するデフォルトのランタイムがないため、以前はサーバーレス環境でPHPを使うことは困難だった。しかし、最近になってライブラリや機能が追加され、PHPの利用がより身近なものになった。
この例では AWS Lambda関数を作成します。 を使用してPHP用のAWS Lambda Functionを作成します。.この例では AWS Lambda Runtime APIの追加と AWS Lambda レイヤーを追加できるようになったことで、PHPカスタムランタイムの作成が容易になった。そのため、Bref のようなパッケージが登場し、PHP 開発者の生活を楽にしている。
前提条件
この例で必要なものは以下の通り:
ローカルにインストールされたPHP(バージョン7.3以上が望ましい)
サーバーレス・フレームワーク
ブレフ ブレフツールは サーバーレス・フレームワークこれは「サーバーレス・アプリケーションの構築と運用のための完全なソリューション」だ。従って、最初のステップは、使用している開発システムにこのフレームワークをインストールすることだ。CLI経由でどこからでも使えるように、グローバルにインストールすることをお勧めする。
AWSクレデンシャル
Serverlessをインストールしたら、Serverlessが様々なAWSサービスとやり取りするために必要なAWS認証情報も設定しておく。(この例では、S3とLambdaのみを使用する。これについては serverless.comや bref.shで詳しく説明されているので、ここでは割愛する。
ブレフをインストールする
また、Brefを使用する各プロジェクト内の依存関係としてインストールする必要がある。それを念頭に置いて、Composerを使ってプロジェクト・ディレクトリ内からCLIを使ってインストールすることにする。
イニット・ブレフ・プロジェクト
ComposerがプロジェクトにBrefを追加することを最終決定した後、開始する最良の方法は、次のとおりである。 initBrefを使用する。を実行することだ。 initを実行すると、Function関数、HTTP関数、Console関数のどれを希望するかが表示されます。 serverless.ymlが作成されます。 index.phpが作成され、アプリケーションのニーズに合うように編集することができます。
YMLファイルの例
例として、以下にサンプルを示します。 serverless.ymlファイルのサンプルです:
service: app
provider:
name: aws
region: us-east-1
runtime: provided
plugins:
- ./vendor/bref/bref
functions:
function:
handler: index.php
description: ''
layers:
- ${bref:layer.php-73}
# Exclude files from deployment
package:
exclude:
- 'tests/**'ファイルの中で、サービスの名前を観察してください。これは、あなたの機能の望ましい命名規則に合わせて変更することができます。デフォルトでは app.
続いて、AWS Lambdaのプロバイダー情報を見ることができる。
あらゆるプラグインのためのセクションがあり、Bref.
次に、関数の詳細を説明するセクションがある。ハンドラ、AWSに追加する説明文、PHPのような必要なレイヤが含まれる。上の例では php-73が指定されていることに注意してください。代わりに HTTP を選択した場合は php-73-fpmを指定し、CLIのみのバージョンのPHPの代わりにWebサーバーをレイヤーに提供する。使用するイメージは initプロセスは、Lambdaが正しいレイヤーを作成するために不可欠です。
AWS Lambdaへのデプロイ
FunctionまたはHTTPのどちらのユースケースでも、デフォルトの initには、AWS Lambda に直接デプロイして Serverless を使ってテストするのに十分なスケルトンが用意されている。先に追加したAWS認証情報の設定を活用して、ServerlessはLambdaに直接デプロイします。 serverless.ymlの内容を基準としてLambdaに直接デプロイします。
重要重要: サンプルアプリケーションは、そのままでは認証や検証を行いません。配備後に提供される URL にアクセスできる人なら誰でもアクセスできます。そうすることで、お客様のアカウントに予期せぬ請求が発生する可能性があります。そのため、アプリをアクティブにしたままにする場合は、アプリを保護してください。
機能のテスト
関数の場合、テストには2つの方法がある。1つはAWS Consoleを使う方法で、もう1つはデプロイに使ったシステムからCLI経由でServerlessを使う方法だ。
AWSコンソール
AWSコンソールをナビゲートして、ComputeサービスのリストからLambdaの項目を選択します。
AWS Console-Lambda Dashboard
Lambdaダッシュボードで、作成した関数を選択し、新しいテストを作成するには、次のようにクリックします。 Configure test events.あるいは Testボタンをクリックしても同じプロンプトが表示されます。
Lambda Function Create Test Example
作成したスケルトンのテスト用に、名前を追加し、ボディーのJSONを少し変更する。
Configure Lambda Test Events
ダイアログ下部の Createボタンをクリックすると、テストが実行されます。 Testボタンをクリックしてテストを実行します。実行すると、緑色のダイアログが表示され、結果を表示することができます。
Lambda Test Results
サーバーレス関数の実行
上記のように、Serverless CLIを使用して、ローカル・アプリケーション・ルートから以下のコマンドを使用して関数をテストすることもできます:
結果の例:
Serverless Lambda Function Execution
HTTP関数のテスト
代わりにHTTP関数をデプロイした場合、上記の2つのテスト方法は機能しません。代わりに、HTTPクライアントまたは標準ブラウザーを使って、デプロイ出力結果で提供されるURLを使ってテストすることができます。
次のページ
AWS Lambda 関数を作成すれば、さらにコードを追加し、現在利用可能なサーバーレス技術を活用して、より堅牢な PHP アプリを作成し続けることができます。AWS Lambda を使用して Vonage API とサービスを活用するための便利な関数を構築する方法を紹介する今後の投稿に注目してください。