рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд PHP AWS рд▓реИрдореНрдмреНрдбрд╛ рдкрд░

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░ред рд╕реЛрдорд╡рд╛рд░ рдХреЛ, рдкрд╣рд▓рд╛ рдкрд╛рда рдкрд╛рдареНрдпрдХреНрд░рдо "рдмреИрдХрдПрдВрдб PHP рдбреЗрд╡рд▓рдкрд░" рдХреЗ рдирдП рд╕рдореВрд╣ рдореЗрдВ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рд╣рдо рд╡рд┐рд╖рдп рдкрд░ рдЙрдкрдпреЛрдЧреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред



рд╕рд╛рдЗрдорди рд╡рд░реНрдбрд▓реЗ рдХреА рддрд░рд╣, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░рд▓реЗрд╕ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдПрдХ рдмреЗрд╣рдж рджрд┐рд▓рдЪрд╕реНрдк рдХреНрд╖реЗрддреНрд░ рд╣реИ, рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рджрд╛рдиреЗрджрд╛рд░ рднреБрдЧрддрд╛рди рдкреНрд░рдгрд╛рд▓реА (рдХреЗрд╡рд▓ рддрднреА рдЬрдм рдЖрдкрдХрд╛ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХреЗ рдХрд╛рд░рдг, рдФрд░ рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рдФрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреА рд╕рд░реНрд╡рд┐рд╕рд┐рдВрдЧ рдФрд░ рддреИрдпрд╛рд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдореИрдВ Apache OpenWhisk рдХреЗ рд▓рд┐рдП рдУрдкрди PHP рд░рдирдЯрд╛рдЗрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ , рдЬрд┐рд╕рдХрд╛ рдПрдХ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдЖрдИрдмреАрдПрдо рдХреНрд▓рд╛рдЙрдб рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред

рдЕрдиреНрдп рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдкреНрд░рджрд╛рддрд╛ рд╣реИрдВ, рдФрд░ AWS рд▓реИрдореНрдмреНрдбрд╛ рдмрд╛рдЬрд╛рд░ рдореЗрдВ рдЕрдЧреНрд░рдгреА рд╣реИ, рд▓реЗрдХрд┐рди рд╣рд╛рд▓ рддрдХ рддрдХ, PHP рд╕рдорд░реНрдерди рдмреЗрд╣рдж рдмреЛрдЭрд┐рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рдерд╛ред рдпрд╣ 2018 рдХреЗ рдЕрдВрдд рдореЗрдВ рдирдП рд▓реИрдореНрдмрдбрд╛ рд░рдирдЯрд╛рдЗрдо рдПрдкреАрдЖрдИ рдФрд░ рд▓реЗрдпрд░ рд╕рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдмрджрд▓ рдЧрдпрд╛ред

рдЖрдЗрдП рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рд▓реИрдореНрдмреНрдбрд╛ рдкрд░ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд PHP рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкрд╣рд▓реБрдУрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред

рдЯреАрдПрд▓, рдбреЙ


рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рдХрд╛ рд╕реЛрд░реНрд╕ рдХреЛрдб рдЧрд┐рддреБрдм рдкрд░ рдореЗрд░реЗ рд▓рдВрдмреЛ-php рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╣реИред рдиреЛрдЯреНрд╕ рдЕрдиреБрднрд╛рдЧ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╣рдо рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред

Php рд░рдирдЯрд╛рдЗрдо


рд░рдирдЯрд╛рдЗрдо рдПрдкреАрдЖрдИ рдЖрдкрдХреЛ рд▓реИрдореНрдмрдбрд╛ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рд░рдирдЯрд╛рдЗрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдПрдХ рддрд░рд╣ рд╕реЗ, рдпрд╣ OpenWhisk рдХреЗ рд╕рдорд╛рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдФрд░ рд░рдирдЯрд╛рдЗрдо рдХреЗ рдмреАрдЪ HTTP API рд╣реИред рдПрдХ рдмрдбрд╝рд╛ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рд▓реИрдореНрдмрдбрд╛ рдХреЗ рд╕рд╛рде, рд░рдирдЯрд╛рдЗрдо рдХреЙрд▓ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдУрдкрдирд╡реНрд╣реАрдХ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд░рдирдЯрд╛рдЗрдо рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдорд╛рдЗрдХрд▓ рдореМрд╕рд╛ рдХреЗ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рджреЗрдЦреЗрдВ , рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдиреМрдХрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред

рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд▓реИрдореНрдмреНрдбрд╛ рдХреЗ рд▓рд┐рдП PHP рд░рдирдЯрд╛рдЗрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ PHP рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп, PHP рдХреЛрдб рдХреЛ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдФрд░ bootstrap рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрди рддреАрди рдЪреАрдЬреЛрдВ рд╕реЗ рд╣рдо рдПрдХ рдкрд░рдд рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВред рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЦрд╛рддреЛрдВ рдореЗрдВ рдкрд░рддреЛрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ AWS рд╣рдореЗрдВ рдПрдХ PHP рдЦрд╛рддрд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп, рд▓реЗрдХрд┐рди рд╕рдЪ рд╣реИ, рд╡реЗ PHP 7.3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рдЬреЛ рд╣рдо рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ layer/php рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВред

рдПрдХ PHP рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг


рд╣рдореЗрдВ рдПрдХ PHP рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЪрд╛рд╣рд┐рдП рдЬреЛ рд▓реИрдореНрдмреНрдбрд╛ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдЕрдВрджрд░ рдЪрд▓реЗрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд▓реИрдореНрдмрдбрд╛ рдХреЗ рд╕рдорд╛рди рдордВрдЪ рдкрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕рд▓рд┐рдП рд╣рдо EC2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдорд╛рдЗрдХрд▓ рдХрд╛ рд▓реЗрдЦ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рдЗрди рдЖрджреЗрд╢реЛрдВ рдХреЛ compile_php.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рдкреЗрдЯ рджрд┐рдпрд╛ рд╣реИ, рдлрд┐рд░ рдЗрд╕реЗ EC2 рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╡рд╛рдкрд╕ рдЪрд▓рд╛рдиреЗ рдФрд░ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:

 $ export AWS_IP=ec2-user@{ipaddress} $ export SSH_KEY_FILE=~/.ssh/aws-key.rsa $ scp -i $SSH_KEY_FILE compile_php.sh $AWS_IP:doc/compile_php.sh $ ssh -i $SSH_KEY_FILE -t $AWS_IP "chmod a+x compile_php.sh && ./compile_php.sh 7.3.0" $ scp -i $SSH_KEY_FILE $AWS_IP:php-7-bin/bin/php layer/php/php 


рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЗрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛ рджреЗрдЧрд╛, рдФрд░ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдмрд╕ PHP рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдЧрд╛ред

рдмреВрдЯрд╕реНрдЯреНрд░реИрдкрд┐рдВрдЧ


рдЪреВрдВрдХрд┐ рд╣рдо рд░рдирдЯрд╛рдЗрдо рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ bootstrap рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд▓реИрдВрдмрдбрд╛ рдХреЛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рдРрд╕реЗ рдирд╛рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдпрд╣ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИ рдЬреЛ рдПрдкреАрдЖрдИ рдХреЛ рд▓реВрдк рдореЗрдВ рдХреЙрд▓ рдХрд░рдХреЗ рдЫрд╡рд┐рдпреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред

рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рд╣рдореЗрдВ рдПрдХ рд▓реВрдк рдореЗрдВ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ /next рдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЖрдЧреЗ рдХреНрдпрд╛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИ, рдЗрд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ рдПрдВрдбрдкреЙрдЗрдВрдЯ /response рдХрд╛ рдЬрд╡рд╛рдм рднреЗрдЬреЗрдВред
AWS рдХрд░реНрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ BASH рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:

 while true do HEADERS="$(mktemp)" # Get an event EVENT_DATA=$(curl -sS -LD "$HEADERS" -X GET "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/next") REQUEST_ID=$(grep -Fi Lambda-Runtime-Aws-Request-Id "$HEADERS" | tr -d '[:space:]' | cut -d: -f2) # Execute the handler function from the script RESPONSE=$($(echo "$_HANDLER" | cut -d. -f2) "$EVENT_DATA") # Send the response curl -X POST "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQUEST_ID/response" -d "$RESPONSE" done 


рд╣рдо PHP рдореЗрдВ рднреА рдРрд╕рд╛ рд╣реА рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдпрджреНрдпрдкрд┐ рдореИрдВ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд▓рд┐рдЦ рд╕рдХрддрд╛ рдерд╛, Pariksit Agnihotri рдкрд╣рд▓реЗ рд╕реЗ рд╣реА PHP-Lambda-Runtime / runtime.php рдореЗрдВ рдореБрдЭрд╕реЗ рдЖрдЧреЗ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдХреЗрд╡рд▓ layer/php/runtime.php рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВред рдЕрдкрдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдореИрдВрдиреЗ рдХрдИ рдмрджрд▓рд╛рд╡ рдХрд┐рдП, json_encoding рдХреЛ рдЬреЛрдбрд╝рд╛ рдФрд░ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ред
рдлрд╝рд╛рдЗрд▓ layer/php/bootstrap рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдлрд╝рд╛рдЗрд▓ PHP рдХреЛ рдЗрд╕ рдлрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдирд╛ рд╣реИ:

 #!/bin/sh cd $LAMBDA_TASK_ROOT /opt/php /opt/runtime.php 


рд╡рд╣ рд╕рдм рд╣реИред рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд░рдд / php рдореЗрдВ рддреАрди рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ:

  • php - php рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓;
  • runtime.php - рд░рдирдЯрд╛рдЗрдо рдПрдкреАрдЖрдИ рдХрд╛рдо рдХрд░ рдлрд╝рд╛рдЗрд▓;
  • bootstrap рдЖрд╡рд╢реНрдпрдХ рд▓реИрдореНрдмреНрдбрд╛ рдлрд╛рдЗрд▓ рд╣реИред


рдирддреАрдЬрддрди, рдпрд╣ рд╕рдм рд╣рдорд╛рд░реЗ рд▓реИрдореНрдмреНрдбрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдПрдХ PHP рд▓реЗрдпрд░ (рдкрд░рдд) рдмрди рдЬрд╛рдПрдЧрд╛ред

рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ


рд╕рд░реНрд╡рд░рд▓реЗрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдПрдХ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рдпреЛрдЧреНрдп рд╡рд┐рдиреНрдпрд╛рд╕ рдФрд░ рддреИрдирд╛рддреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдкреНрд░рд╢рдВрд╕рдХ рд╣реВрдВ рдФрд░ рдореИрдВ рдРрд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд╣рдо рдЕрдкрдиреЗ PHP рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рдЪреВрдВрдХрд┐ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдкреАрдПрдЪрдкреА рдореЗрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ serverless.yml рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВред
рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА:

 service: php-hello-world provider: name: aws runtime: provided region: eu-west-2 memorySize: 128 


рд╣рдо рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ php-hello-world рдХрд╣реЗрдВрдЧреЗ рдФрд░ рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ AWS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЬрдм рд╕реЗ рдореИрдВ рдпреВрдХреЗ рдореЗрдВ рд╣реВрдВ, рдореИрдВрдиреЗ рд▓рдВрджрди рдХреНрд╖реЗрддреНрд░ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреА рд╣реИ ред рд╣рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП 128 рдПрдордмреА рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред
рд░рдирдЯрд╛рдЗрдо рдЖрдорддреМрд░ рдкрд░ рд╡рд╣ рднрд╛рд╖рд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдЕрдкрдирд╛ рдХрд╛рд░реНрдп рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред runtime API рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╣рдорд╛рд░реА bootstrap рдлрд╝рд╛рдЗрд▓ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧреА, рдЖрдк рдЗрд╕ рдлрд╝реАрд▓реНрдб рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред
рдФрд░ рдЖрдкрдХреЛ .gitignore рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:

 .serverless 


рдЪреВрдВрдХрд┐ git рд╣рдореЗрдВ рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдЕрдЧрд▓рд╛, рдЪрд▓рд┐рдП рдЬреЛрдбрд╝рдХрд░ рд╣рдорд╛рд░реЗ рд▓реЗрдпрд░ рдХреЛ serverless.yml рдЬреЛрдбрд╝реЗрдВ:

 layers: php: path: layer/php 


рдпрд╣ AWS рд▓реЗрдпрд░ рдмрдирд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕реЗ PhpLambdaLayer рдирд╛рдо PhpLambdaLayer , рдЬрд┐рд╕реЗ рд╣рдо рдЕрдкрдиреЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

Hello World рдлрдВрдХреНрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ
рдЕрдм рд╣рдо рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд PHP рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ handler.php . handler.php рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

 <?php function hello($eventData) : array { return ["msg" => "hello from PHP " . PHP_VERSION]; } 


рдлрд╝рдВрдХреНрд╢рди рдИрд╡реЗрдВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИред
рд╕рд░реНрд╡рд░рд▓реЗрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рд╣рдорд╛рд░реЗ рдлрд╝рдВрдХреНрд╢рди рдХреА рддреИрдирд╛рддреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ serverless.yml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрди рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:

 functions: hello: handler: handler.hello layers: - {Ref: PhpLambdaLayer} 


рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдлреНрд░реЗрдорд╡рд░реНрдХ рдПрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛ рдПрдХ рдирд╛рдо рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ hello , рдФрд░, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рд╣реИрдВрдбрд▓рд░, рдЬреЛ рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рд╣реИ, рдЙрд╕рдХреЗ рдмрд╛рдж рдПрдХ рдбреЙрдЯ рдФрд░ рдлрд┐рд░ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, handler.hello рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо handler.php hello() рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╣реИрдВрдбрд▓рд░. handler.php рдореЗрдВ handler.php ред
рдЕрдВрдд рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ PHP рд▓реЗрдпрд░ рдХреЗ рдлрдВрдХреНрд╢рдиреНрд╕ рдХреЛ рднреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡рд╣ PHP рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХреЗред

рд▓рд╛рдореНрдмрд╛ рдореЗрдВ рддреИрдирд╛рддреА


рдЗрд╕рдХреА рдкрд░рдд рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рддреЗ рд╣реИрдВ:

 $ sls deploy 


рдпрджрд┐ рдХрдорд╛рдВрдб рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рд╕рдорд╛рди рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:



рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХрд╛ рдкреВрд░рд╛ рд╣реЛрдирд╛


рддреИрдирд╛рддреА рдХреЗ рдмрд╛рдж, рд╣рдо рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 $ sls invoke -f hello -l 




рдФрд░ рдЖрдк рдХрд░ рд░рд╣реЗ рд╣реИрдВ!

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рджреЗрдирд╛


рдирдИ рдкрд░рддреЛрдВ рдФрд░ рд░рдирдЯрд╛рдЗрдо рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде, рдЕрдм рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рд▓реИрдореНрдмреНрдбрд╛ рдореЗрдВ PHP рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред AWS рд╕реЗ рдЬреБрдбрд╝реЗ PHP рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реИред

рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рд╣реИ, рджреЛрд╕реНрддреЛрдВ!

Source: https://habr.com/ru/post/hi453116/


All Articles