用AWS CDK构建一个JSII库来构建AWS服务器级LAMP
cdk-serverless-lamp的Python项目详细描述
欢迎使用cdk无服务器灯
cdk-serverless-lamp
是用于AWS CDK的JSII构造库,它允许您通过指定本地laravel
目录来部署运行PHP Laravel应用程序的New Serverless LAMP Stack。在
通过部署ServerlessLaravel
和DatabaseCluster
,将创建以下资源:
- Amazon API网关HTTP API
- 支持Bref runtime的AWS Lambda自定义运行时
- 启用RDS代理的Amazon Aurora for MySQL数据库集群
怎么做
使用AWS CDK创建一个新的Laravel项目
$ mkdir serverless-lamp &&cd serverless-lamp # create cdk and codebase directories for AWS CDK and Laravel project $ mkdir cdk codebase # create the new Laravel project with docker $ docker run --rm -ti \ --volume $PWD:/app \ composer create-project --prefer-dist laravel/laravel ./codebase # install bref/bref and bref/laravel-bridge in the vendor $ cd codebase $ docker run --rm -ti \ --volume $PWD:/app \ composer require bref/bref bref/laravel-bridge # initialize the AWS CDK project $ cd ../cdk $ cdk init -l typescript # install the cdk-severless-lamp npm module $ yarn add cdk-serverless-lamp
现在您的目录应该如下所示:
^{pr2}$其中cdk
表示AWS CDK,codebase
表示Laravel项目。在
AWS CDK样品
使用ServerlessLaravel
构造构建无服务器Laravel:
更新./cdk/lib/cdk-stack.ts
# Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826importaws_cdk.coreascdkimportpathaspathfromcdk_serverless_lampimportServerlessLaravelclassCdkStack(cdk.Stack):def__init__(self,scope,id,*,description=None,env=None,stackName=None,tags=None,synthesizer=None,terminationProtection=None,analyticsReporting=None):super().__init__(scope,id,description=description,env=env,stackName=stackName,tags=tags,synthesizer=synthesizer,terminationProtection=terminationProtection,analyticsReporting=analyticsReporting)ServerlessLaravel(self,"ServerlessLaravel",bref_layer_version="arn:aws:lambda:us-east-1:209497400698:layer:php-74-fpm:12",laravel_path=path.join(__dirname,"../../codebase"))
部署CDK堆栈:
# see the difference before the deployment $ cdk diff # deploy it $ cdk deploy
部署完成后,将在输出中返回API网关URL。单击URL,您将看到Laravel登录页:
亚马逊极光支持
使用DatabaseCluster
创建数据库群集:
# Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826importaws_cdk.coreascdkfromaws_cdk.aws_ec2importInstanceType,Vpcimportpathaspathfromcdk_serverless_lampimportServerlessLaravel,DatabaseClusterclassCdkStack(cdk.Stack):def__init__(self,scope,id,*,description=None,env=None,stackName=None,tags=None,synthesizer=None,terminationProtection=None,analyticsReporting=None):super().__init__(scope,id,description=description,env=env,stackName=stackName,tags=tags,synthesizer=synthesizer,terminationProtection=terminationProtection,analyticsReporting=analyticsReporting)vpc=Vpc(self,"Vpc",max_azs=3,nat_gateways=1)# the DatabaseCluster sharing the same vpc with the ServerlessLaraveldb=DatabaseCluster(self,"DatabaseCluster",vpc=vpc,instance_type=InstanceType("t3.small"),rds_proxy=True)# the ServerlessLaravelServerlessLaravel(self,"ServerlessLaravel",bref_layer_version="arn:aws:lambda:us-east-1:209497400698:layer:php-74-fpm:12",laravel_path=path.join(__dirname,"../../codebase"),vpc=vpc,database_config={"writer_endpoint":db.rds_proxy.endpoint})
地方发展
使用以下内容创建docker-compose.yml
:
version: "3.5" services: web: image: bref/fpm-dev-gateway ports: - "8000:80" volumes: - ./laravel:/var/task depends_on: - php environment: HANDLER: public/index.php php: image: bref/php-74-fpm-dev volumes: - ./laravel:/var/task
然后运行这个命令docker-compose up -d
,现在您可以访问http://localhost:8000。在
(更多信息可在bref documentation)中找到
- 项目
标签: