PHP에서 AWS Lambda를 사용해보기

개요



이 기사는 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 준비는 괜찮습니다.

3.bref 도입


composer require mnapoli/bref
vendor/bin/bref init



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 한 디렉토리 아래에서 다음 명령을 실행합니다.
성공적으로 배포가 끝나면 준비가 완료됩니다.
$ vendor/bin/bref deploy
Serverless: Packaging service...
(以下略)
Deployment success

나열된 엔드포인트에 액세스하면 아래 화면이 표시됩니다.
이제 준비가 완성된 것 같습니다.



아직 AWS Lambda 사이트에 이번에 배포한 프로그램이 있었습니다.


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와 제휴해 사용하면 좋을 것 같습니다.

참고


  • 브레프
  • 좋은 웹페이지 즐겨찾기