AWS Lambda의 Custom Runtime에서 바로 PHP를 실행해 보았습니다.

배경



re:Invent 2018에서 Lambda에 Custom Runtimes가 추가되었습니다.
COBOL이 지원된 뒤에서 PHP도 지원되었으므로 시도해 보겠습니다.

여기를 참고했습니다.
Lambda에서 PHP가 움직이기 때문에 우선 WordPress를 넣어 보았습니다.

디렉토리 구성은 이런 느낌



.
├── src
│   └── php
│   └── index.php
└── template.yaml

template.yaml은 이런 식으로 만들었습니다.


AWSTemplateFormatVersion: 2010-09-09
Description: PHP Demo
Transform: AWS::Serverless-2016-10-31
Resources:
  phpdemo:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: !Sub ${AWS::StackName}-ironman
      Description: PHP Demo
      CodeUri: src/php
      Runtime: provided
      Handler: index.php
      MemorySize: 3008
      Timeout: 30
      Tracing: Active
      Layers:
        - !Sub arn:aws:lambda:${AWS::Region}:887080169480:layer:php71:3
      Events:
        api:
          Type: Api
          Properties:
            Path: /ironman
            Method: get

index.php의 내용은 다음과 같습니다.


<?php
    $array = [
        'Iron Man',
        'Batman',
        'Suit Guy',
    ];
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<?php
    foreach($array as $val) {
        echo $val . '<br>' . PHP_EOL;
    }
?>
</body>
</html>

배포합니다.



앞으로 배포 용 버킷을 만듭니다.
aws s3 mb s3://pipeline-php-demo

AWS 콘솔에서 만들 수 있습니다.

배포


$ sam package \
    --template-file template.yaml \
    --output-template-file serverless-output.yaml \
    --s3-bucket pipeline-php-demo(上で作ったバケット名)

$ sam deploy \
    --template-file serverless-output.yaml \
    --stack-name php-demo(CFnのスタックに表示させたい名前) \
    --capabilities CAPABILITY_IAM


결과



API Gateway 엔드포인트를 브라우저에서 열면,
제대로 배열이 루프하고 있네요! !


요약



라고 할까, 서버웍스씨 의 2번 달이 되어 버리고 있네요 이것

가볍게 시도한 곳undefined function json_encode()라고 화가 났기 때문에 움푹 들어갔습니다.

AWS 콘솔에서 PHP 소스를 볼 수없는 것은 조금 유감이라고 생각했습니다.

좋은 웹페이지 즐겨찾기