目次

まえがき

想定する技術レベル
ゴール
ソースコード
連絡先
免責事項
表記関係について
底本について

第1章 必要なものをそろえよう

1.1 Docker
1.2 AWSアカウント
1.3 AWS CLI
1.4 SAM CLI

第2章 早速使ってみよう

2.1 Lambdaの設定をする
2.2 API Gatewayの設定をする
2.3 呼び出してみる

第3章 応用して使ってみよう

3.1 必要なものを用意する
3.2 PHP7.1をビルドする
3.3 ビルドした実行環境に差し替える
3.4 boorstrapとphp.iniの変更
3.5 再アップロードして新バージョンの作成
3.6 Amazon S3からレイヤーをアップロードする方法
3.7 拡張を追加してみる
3.8 PHP5.6をビルドする

第4章 コマンドでデプロイしよう

4.1 AWS CLIで操作してみる
4.2 SAM CLIで操作する
4.3 デプロイしたアプリケーションを削除する

第5章 フレームワークを使ってみよう

5.1 前提条件
5.2 Slim Framework 3
5.3 CodeIgniter
5.4 CakePHP3
5.5 Yii Framework
5.6 Laravel
5.7 Phalcon
5.8 所感

第6章 サンプル的なアプリケーションを構築してみよう

6.1 前提条件
6.2 アプリケーション構築
6.3 SAMテンプレートの構築
6.4 デプロイ&動作確認する
6.5 ローカルで実行する

あとがき

まえがき

 この本を手に取っていただきありがとうございます。

 近頃はサーバーレス実行環境1で開発を行うことが多くなりましたが、利用できる言語には制約があります。その多くはJavaやNode.jsですが、その他の利用できない言語を普段使っている場合、新たに言語を習得しなければならず追加コストがかかるのが現状です。ところが、AWS Lambdaにおいて2018年に「Lambda Custom Runtime」(以下カスタムランタイム)の仕組みが導入され、その制約がなくなりました。この本は、そんなカスタムランタイムを少しでも広め、利用する方が増えたり、実環境への投入などの検討材料としていただくためのものです。

 カスタムランタイムは気軽に実行できる標準のLambda環境とは異なり、実行環境自体のビルドやデプロイが必要でLambda本来の手軽さが少し失われています。しかし、使い慣れた言語で実行できるという部分は非常に大きいです。

 本書の内容はPHPを軸にしていますが、主な使い方やスクリプトの実行方法など、基礎的な部分においては他言語でも応用できる部分が多いです。使い慣れた言語で試してみたい方も是非参考にしてみてください。

 この本を通して、カスタムランタイムの利用者が少しでも増え、これからより多くの知見が広まることが増えればうれしいです。

想定する技術レベル

 この本は次の技術レベルを想定しています。

 ・カスタムランタイムに興味がある

 ・自分が普段使っている言語でサーバーレスを動かしてみたい

 ・AWS初級者~中級者

 ・何かしらの言語が書ける

ゴール

 この本の内容に沿って進めることでたどり着く、最終的なゴールは次のとおりです。

 ・カスタムランタイムでPHPが動かせるようになる

 ・カスタムランタイムの内容をカスタマイズできるようになる

 ・PHPやフレームワークとの相性について知れる

ソースコード

 この本の中で使用している、各種コードは次のリポジトリーに公開しています。もちろんプルリク大歓迎です。(日本語でもOK!)

 https://github.com/taiko19xx/LambdaCustomRuntime_with_PHP

連絡先

 誤字脱字や誤った内容などがありましたら、次の連絡先へご連絡ください。

 ・メール: hello@taiko19xx.net

 ・Twitter: @taiko19xx

 いただいた情報は確認の上、著者のブログにて適時公開します。

 ・ブログ: https://tech.taiko19xx.net/

免責事項

 本書に記載された内容は、情報の提供のみを目的としています。したがって、本書を用いた開発、製作、運用は、必ずご自身の責任と判断によって行ってください。これらの情報による開発、製作、運用の結果について、著者はいかなる責任も負いません。

表記関係について

 本書に記載されている会社名、製品名などは、一般に各社の登録商標または商標、商品名です。会社名、製品名については、本文中では©、®、™マークなどは表示していません。

底本について

 本書籍は、技術系同人誌即売会「技術書典6」で頒布されたものを底本としています。

1. AWSのLambda、AzureのAzure Functions、Google CloudのCloud Functionがよく使われている

第1章 必要なものをそろえよう

種類は多くありませんが、本書を読み進めて作業するために必要なものがいくつかあります。本章では、そのセットアップや設定について紹介します。

1.1 Docker

 カスタムランタイムの実行には、専用の実行ファイルが入ったZzipファイルを実行環境として作成する必要があります。しかしLambdaがAmazon Linux(1または2)で動作しているため、Amazon LinuxベースのDockerイメージ上で作業する必要があります。その作業に必要なDockerをインストールします。

図1.1: Docker Desktop

 利用するOSに合わせてDockerをインストールします。OSやディストリビューションによって方法が異なりますので、ドキュメント1を参照してください。Windowsの場合、Docker ToolboxやWindows Subsystem for Linux(WSL)上のDockerも利用できます。ただし、その場合本書のとおり動作しなかったり、別途設定が必要な可能性がありますのでご注意ください(本書ではDocker Desktop for Windowsで動作確認をしています)。

1.2 AWSアカウント

 先に書いたようにカスタムランタイムはLambda上で動作と管理をしますので、利用にはAWSのアカウントが必要です。

図1.2: Amazon Web Services(AWS)

 持っていない場合は、公式サイト2から新規作成します。

 また、本書の後半でAWS CLIを使用する場面があるため、あらかじめIAMからアクセスキーとシークレットキーを取得しておきます。取得方法についてはドキュメント3を参照してください。

AWSの費用について

 Lambdaには無料枠がありますが、本書ではそれ以外のサービス(主にAPI Gateway)を利用するため、課金が発生します。課金額は本書のとおりに設定した場合、$1~2程で済む想定です。請求額のアラート通知や予算設定という機能がありますので、有効に活用して使いすぎに注意しましょう。

1.3 AWS CLI

 本書の前半は、ブラウザー上のマネジメントコンソールから操作を行いますが、後半はコマンドから操作をする場面があります。その場合にAWS CLIが必要となるのでインストールします。

図1.3: AWS CLI

 Windowsの場合は、公式サイト4からインストーラーがダウンロードできます。macOSやLinuxの場合はpip経由でインストールします。5Python 2.6.5以降が必要です。

$ pip install awscli

 インストール後、aws --versionを実行して、バージョン情報が表示されれば問題ありません。aws configureを実行して、IAMから取得したアクセスキーとシークレットキーを登録してください。

$ aws --version

aws-cli/1.16.101 Python/2.7.12 Linux/4.4.0-17134-Microsoft botocore/1.12.91

$ aws configure

AWS Access Key ID [None]: (アクセスキー)

AWS Secret Access Key [None]: (シークレットキー)

Default region name [None]: ap-northeast-1

Default output format [None]: json

1. https://docs.docker.com/install/

2. https://aws.amazon.com/jp/

3. https://aws.amazon.com/jp/developers/access-keys/

4. https://aws.amazon.com/jp/cli/

5. パッケージ管理システムからインストールできる場合もありますが、最新版を利用できるpip経由がお勧めです

試し読みはここまでです。
この続きは、製品版でお楽しみください。