2022/06/14

AWSのLambdaでPHPを利用するには?Lambdaの設定方法を詳しく解説

 
  

【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エンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】