Aws lambda 在zend中创建的Ideploying API如何在aws lambda中表现?

Aws lambda 在zend中创建的Ideploying API如何在aws lambda中表现?,aws-lambda,mezzio,Aws Lambda,Mezzio,我创建了一个Zend expressive应用程序,它基本上公开了一些API。我想现在将其部署到AWS Lambda。快速轻松地重构代码的最佳方法是什么(或者是否有其他替代方法)来部署它?我是AWS的新手。我想你已经找到了答案,因为这个问题已经问了五个多月了。但我把我在最近的研究中发现的东西用同样的标准贴出来。请注意,您需要至少了解AWS IAM、Lambda、API网关的工作原理,以便遵循我在下面描述的步骤。另外请注意,在本研究期间,我只部署了liminas/mezzio skeleton应用

我创建了一个Zend expressive应用程序,它基本上公开了一些API。我想现在将其部署到AWS Lambda。快速轻松地重构代码的最佳方法是什么(或者是否有其他替代方法)来部署它?我是AWS的新手。

我想你已经找到了答案,因为这个问题已经问了五个多月了。但我把我在最近的研究中发现的东西用同样的标准贴出来。请注意,您需要至少了解AWS IAM、Lambda、API网关的工作原理,以便遵循我在下面描述的步骤。另外请注意,在本研究期间,我只部署了liminas/mezzio skeleton应用程序,您需要做更多的工作来部署一个真正的应用程序,因为它可能需要AWS环境中的数据库和存储支持,这可能需要相应地调整您的应用程序

PHP应用程序可以使用AWS中对自定义运行时的支持来执行。您可以检查如何完成它,但它不包括任何特定的PHP框架

然后我找到了在无服务器环境中运行PHP应用程序所需的所有工具。你可以浏览他们的文档来了解事情是如何运作的

为了让liminas/mezzio(zend expressive project的新名称)skeltopn应用程序正常工作,我遵循了bref文档中给出的步骤。首先,我使用

composer require bref/bref
然后,我根据文档在项目的根文件夹中创建了serverless.yml文件,并对其进行了一些调整,如下所示

service: myapp-serverless

provider:
     name: aws
     region: eu-west-1 # Change according to the AWS region you use
     runtime: provided

plugins:
     - ./vendor/bref/bref

package:
     exclude:
         - node_modules/**
         - data/**
         - test/**

functions:
     api:
          handler: public/index.php
          timeout: 28 # in seconds (API Gateway has a timeout of 29 seconds)
          memorySize: 512 # Memory size for the AWS lambda function. Default is 1024MB
          layers:
               - ${bref:layer.php-73-fpm}
          events:
               -   http: 'ANY /'
               -   http: 'ANY /{proxy+}'
然后,我遵循bref文档中给出的用于部署应用程序的步骤。您可以检查如何在系统上安装无服务器框架,并查看需要如何配置它

要安装Servless,我使用了
npm安装-g serverless

为了配置工具,我使用了
无服务器配置凭据--provider aws--key--secret
。请注意,此处使用的此密钥需要管理员访问AWS环境

然后
serverless deploy
命令将应用程序部署到AWS环境

上述命令的结果将为您提供一个API网关端点,您的应用程序/API将使用该端点。这是一个PHP无服务器应用程序的起点,为了让一个真正的应用程序在这里工作,可能还需要做很多其他工作