12
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Serverless2Advent Calendar 2018

Day 19

PHPでAWS Lambdaを使ってみる

Last updated at Posted at 2018-12-18

概要

この記事はServerless2 Advent Calendar 2018
の19日目の記事になります。

ずっとLambdaについて気になっていたのですが、PHPが対応していない故に手を出せない状態でした。
そんな中、たぶん月刊PHPニュース 2018年11月27日号 | 株式会社インフィニットループ技術ブログでPHP用のサーバレスフレームワークが紹介されていたので、試していきます。

2021/08/17更新
2021年に改めて調べた内容を下記にまとめました。
記事の内容は古いので、こちらを参照いただればと思います。

事前準備

事前にPHPとComposer、Node.jsが動く環境を用意しておいてください。
Composerが早くなるらしいので、下記のライブラリもインストールすると良さそうです。

composerを速くするプラグイン・prestissimoを作った: Architect Note

導入

READMEに従って進めます。

1.serverlessの導入

npm install -g serverless

2.AWSの準備

Lambdaを実行できる準備をします。
事前にアクセスキーを発行してください。

tips
ここで設定するアカウントはAdmin権限のものでは動きませんでした。  
IAMでLambdaの権限を与えたアカウントに設定が必要そうです。
awscliのインストール
# yum install -y python-pip
$ pip install awscli --user

awscliを導入したら、アクセスキー等を設定します。

$ aws configure
AWS Access Key ID [None]: 作ったやつを入力
AWS Secret Access Key [None]: 作ったやつを入力
Default region name [None]: ap-northeast-1
Default output format [None]: json

これでawsの準備はOKです。

3.brefを導入

composer require mnapoli/bref
vendor/bin/bref init
success.png

initとすると下記のファイルが生成される。

bref.php
<?php declare(strict_types=1);

require __DIR__.'/vendor/autoload.php';

λ(function (array $event) {
    return [
        'hello' => $event['name'] ?? 'world',
    ];
});

λは下記の省略形で、本格的に書くと下記になります。

$app = new \Bref\Application ; 
$app->simpleHandler(function (array $event) {
    return [
        'hello' => $event['name'] ?? 'world',
    ];
});
$app->run();

4.brefをデプロイ

先程 init したディレクトリ配下で、下記Commandを実行します。
正常にデプロイが終われば準備完了です。

$ vendor/bin/bref deploy
Serverless: Packaging service...
(以下略)
Deployment success

記載されているendpointにアクセスすると、下記の画面が表示されました。
これで準備は整ったようです。

browser.png

まだAWS Lambdaの箇所に、今回デプロイしたプログラムがありました。
image.png

CLIで試しに実行してみます。
vendor/bin/bref invoke を実行して、 hello world が表示されれば問題ありません。

$ vendor/bin/bref invoke
{
    "hello": "world"
}

ちなみにローカルで実行するときは、普通にphpコマンドを実行で良いようです。

$ php bref.php bref:invoke
{
    "hello": "world"
}

これでPHPからAWS Lambdaを使う準備が整いました。
brefComposer でインストールできるので、実際に導入する際は他のライブラリやFWと連携して使うと良さそうです。

参考

12
11
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?