AWS Lambda의 Custom Runtime에서 바로 PHP를 실행해 보았습니다.
5358 단어 PHPserverless람다CustomRuntimeAWS
배경
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 소스를 볼 수없는 것은 조금 유감이라고 생각했습니다.
Reference
이 문제에 관하여(AWS Lambda의 Custom Runtime에서 바로 PHP를 실행해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/u_fukuda/items/0a333da128bba123562a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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
<?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
$ 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
라고 할까, 서버웍스씨 의 2번 달이 되어 버리고 있네요 이것
가볍게 시도한 곳
undefined function json_encode()
라고 화가 났기 때문에 움푹 들어갔습니다.AWS 콘솔에서 PHP 소스를 볼 수없는 것은 조금 유감이라고 생각했습니다.
Reference
이 문제에 관하여(AWS Lambda의 Custom Runtime에서 바로 PHP를 실행해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/u_fukuda/items/0a333da128bba123562a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)