この記事の目次
【AWS】サーバーレスPHPの基本
以前は、PHPを利用したWebシステムを利用するにはLAMPスタックに代表されるLinuxサーバーが必要でした。たとえ簡単なWebシステムでも、サーバーを設定すれば、それを管理しなければなりません。
しかし、AWSのサーバーレスの仕組みLambdaを利用すれば、サーバー管理から解放され、PHPの開発に専念できます。では、AWSのLambdaとはどのようなサービスなのでしょうか。
次から、AWSのサーバーレスの仕組み、Lambdaについて解説します。
そもそもLambdaとは
AWSのLambdaは、クラウド上にWebサーバーを準備したり管理することなく、プログラムコードを実行する環境を作れる仕組みです。Amazon S3やAmazon RDSなど、他のサービスを組み合わせることで、従来のLAMPスタックサーバーと同じ機能をサーバーレスで実現できます。
そして、その使用料はコンピュータを使用した時間にのみ課金されます。また、スケーリングするために必要なことは対策してもらえるので、アクセスの少ないサービス開始時はもちろん、アクセスが増えても利用できるサービスです。
Lambdaによるサーバーレスの特徴
AWSのLambdaが提供するサーバーレスの特徴の1つは、パフォーマンスの高いスケーラブルなサービスが作れる点です。
従来のLAMPスタックでは、アクセスが増加した場合に簡単に拡張できないなど、スケーラビリティが大きな課題でした。
1台のサーバーで足りる間の管理は比較的簡単ですが、ロードバランサーなどを活用してサーバーを増やしたり、データベースやファイルサーバー側を冗長化したりすると、費用も管理工数もかかります。
その点、クラウドでの利用を前提に、最初からスケーラビリティを前提に構築されているAWSのLambdaでは、従来のLAMPスタックのデメリットがありません。
スケーラビリティに優れたAWSの各種サービスと組み合わせることで、アクセス数の少ない小さなシステムから、アクセスの多い大規模なシステムまで対応できます。
AWS SAMを利用する
AWS Lambdaを使いサーバーレスアプリケーションを利用するには、AWSサーバーレスアプリケーションモデル(AWS SAM)を利用して定義しなければなりません。
なお、AWS SAMは、サーバーレスアプリケーションの管理フレームワークで、AWS LambdaやAPI GatewayなどのAWSで利用できるサービスの設定に利用されます。
そして、AWS SAMは、専用のCLIコマンドを用い、テンプレートファイルを使って設定します。そのため、Amazon 3SなどのAWSの各種サービスの設定や管理に使用するAWS CLIに加えて、AWS SAM CLIも用意してください。
Lambdaの設定に必要なもの
AWSのLambdaでPHPを利用したWebシステムを運用するためには、設定するための仕組みを用意し、さらに設定ファイルを用意して、専用コマンドを使った設定が必要です。まずは、AWSのLambdaを設定するための仕組みを用意してください。
Lambdaの設定に必要なもの
・AWSアカウント
・AWS CLI (Amazon 3Sなど、AWS Lambdaで利用するAWSのサービスの設定や管理で使用するツール)
・AWS SAM CLI (サーバーレスアプリケーションの作成と管理のためのツール)
・Amazon 3S (AWSで、PHPファイルを格納するためのストレージ)
なお、AWS CLIとAWS SAM CLIは、Linux版、macOS版、Windows版が用意されています。インターネットに繋がったパソコンで利用できるツールなので、AWSのLambdaを利用する場合は、必ずインストールして、使えるように設定しておいてください。
AWSのLambdaでPHPを使うには
先ほど説明したように、AWSのLambdaはWebシステムを構築するのに便利な機能で、しかも、その構築にPHPを利用できます。そして、PHPをLambdaで使用するためには、AWSの設定が必要です。
次から、AWSのLambdaでPHPを利用するために必要な設定について解説します。
SAM設定ファイルの作成
AWSのLambdaでPHPを利用するためには、用意したPHPをAWSのLambdaに登録しなければなりません。
用意したPHPの仕組みをLambdaに登録するには、定義ファイルに記述して、コマンドでこれを反映します。そして、定義ファイルの基本は次のとおりです。
基本的な定義ファイルの構成
AWSTemplateFormatVersion: 2010-09-09 Description: 'このテンプレートで意義しているサーバーレスシステムの説明' Transform: AWS::Serverless-2016-10-31 Resources: 【ここにAWS CloudFormation リソースと AWS SAM リソースを記述する】
定義ファイルの例
次に、SAM設定に使用する定義ファイルの例を紹介します。
AWSTemplateFormatVersion: 2010-09-09 Description: 'このテンプレートで意義しているサーバーレスシステムの説明' Transform: AWS::Serverless-2016-10-31 Resources: サーバーレスシステム名: Type: AWS::Serverless::Function Properties: FunctionName: 'Lamdaのファンクション名' Description: サーバーレスシステム名の説明 CodeUri: . Runtime: provided Handler: index.php MemorySize: 1024 Timeout: 30 Tracing: Active Layers: - Lambda Custom レイヤー Events: api: Type: Api Properties: Path: / Method: ANY
定義ファイルの「AWSTemplateFormatVersion:」と「Transform:」で始まる行は定義ファイル共通です。「Resources:」に続けてサーバーレスの定義に必要な情報を定義してください。
SAM設定ファイルを使い登録する
先ほど説明したSAM設定ファイルを登録するAWS SAM CLIコマンドの例を次に紹介します。
AWS SAM CLIコマンドの例
sam package \ --template-file template.yaml \ --output-template-file phpsl-output.yaml \ --s3-bucket phpsl sam deploy \ --template-file phpsl-output.yaml \ --stack-name phpsl-service \ --capabilities CAPABILITY_IAM
上記の例は、SAM設定ファイルのtemplate.yamlを使い、Amazon 3Sの「phpsl」バケットに格納したPHPを利用し、「phpsl-service」という名前でAmazon Lambdaのサービスを利用するためのコマンドです。
なお、sam packageコマンドでは、–s3-bucketが必須です。Amazon S3に用意したバケット名を指定してください。また、sam deployコマンドでは、–stack-nameが必須のため、デプロイ先の AWS CloudFormation スタックの名前を指定してください。
LambdaとPHPの組み合わせに適した仕組みとは
PHPをWebシステムで使用するメリットの1つは、SQLデータベースと相性が良い点です。そして、AWSにはサーバーレスのデータベースであるAmazon RDSがあるので、Lambdaからも使えます。
さらに、最近は、Webブラウザ側のJavaScriptでWebページを合成する、ブラウザレンダリングの採用が増えており、そのようなシステムでは、サーバー側でデータを準備するだけのシンプルな構成で作れます。そして、PHPなら、そのようなサーバー側の仕組みを簡単に作れます。
そのため、Lambdaを利用したサーバーレスのPHPシステムとして、ブラウザレンダリングとクラウド上のデータベースを繋ぐ仕組みに利用できます。ぜひ、このような仕組みで活用してください。
この記事の監修者・著者

-
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
最新の投稿
- 2023年11月21日キャリア・転職ITエンジニアへのキャリアチェンジに多い理由は?
- 2023年11月20日キャリア・転職フリーターからの就職でおすすめの職業は?
- 2023年11月20日キャリア・転職経理へのキャリアチェンジ転職・志望動機は?
- 2023年11月20日キャリア・転職法務からのキャリアチェンジおすすめの業界は?