用AWS CDK构建一个JSII库来构建AWS服务器级LAMP

cdk-serverless-lamp的Python项目详细描述


NPM versionPyPI versionBuild

欢迎使用cdk无服务器灯

cdk-serverless-lamp是用于AWS CDK的JSII构造库,它允许您通过指定本地laravel目录来部署运行PHP Laravel应用程序的New Serverless LAMP Stack。在

通过部署ServerlessLaravelDatabaseCluster,将创建以下资源:

  1. Amazon API网关HTTP API
  2. 支持Bref runtime的AWS Lambda自定义运行时
  3. 启用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登录页:

laravel-welcome

亚马逊极光支持

使用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)中找到

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
二进制字符串的java NumberFormatExceprion   java如何在Neo4j中查找/匹配/选择标识符名称   java哪一年的日期与原始年份相同?   java什么时候JAXB可以用于Json而不是XML?   java使用PayPal权限API进行PayPal支付   java Getting error在使用安卓 vision api扫描二维码时加载图像失败   java直接突出显示RichTextFX中的一个文本范围   java Resolve@RegisteredAuth2AuthorizedClient,其令牌在spring Security 5.2的spring server之外获得。十、   yyyymmddhhmmss的Java正则表达式   java我试图将google recaptcha与spring mvc集成,但GreCaptCharResponse总是返回false。这里有一些代码   java使用JsonPath将文本转换为json   java无法解析符号。Maven依赖项已就位,但代码为红色   java使用循环查找范围内具有不同数字的数字   java这个SwingWorker是否不重用ThreadPoolExecutor中的线程?