标签: zappa

NodeJS HTTPServer 需要很长时间才能关闭

我正在开发一个 Zappa 应用程序,目前正在尝试制作一个小监视脚本,该脚本可以require.cache在文件更改时停止服务器、清除然后重新要求并重新启动服务器,例如:

# watch all dependent files
for file of require.cache
  fs.watch file, ->
    # attach a handler to 'close'
    # -- here's the issue: this takes far too long to trigger
    server.on 'close', ->
      server = require './server'
      server.start()

      # log the new server's id
      console.log server.id

    # stop the current server instance
    server.stop()

    # clear require's cache
    delete require.cache[f] for f of require.cache
Run Code Online (Sandbox Code Playgroud)

我的请求处理程序中还有一行console.log server.id,以便我可以检查 ID 是否匹配。

所以,发生的情况是:当我更改依赖项时,服务器停止,新的服务器启动并记录新的 ID,这一切都是肉汁。但是,在之后的一段随机时间内,对服务器的请求仍会记录旧 ID,这表明旧侦听器仍以某种方式附加。最终,侦听器似乎“切换”并记录了新的 ID。

更新:这似乎与事件有关 …

node.js express zappa

4
推荐指数
1
解决办法
1786
查看次数

如何使用 Zappa 在多个 AWS 账户之间切换

我正在尝试如何在持续交付环境中将 lambda 部署到不同的 AWS 帐户中。目前我坚持这一点。您能给我一些线索吗?作为 AWS CLI 的示例,我们可以定义需要使用的配置文件。

前任:aws s3 ls --profile account2

在AWS配置文件中,我们定义配置文件如下。

[default]

aws_access_key_id = XXXXXXXXXXXXXXXXXX

aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

[account2]

aws_access_key_id = XXXXXXXXXXXXXXXXXX

aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Run Code Online (Sandbox Code Playgroud)

我们可以对 zappa 部署使用相同的方法吗?

非常感谢任何解决此问题的线索。

zappa aws-lambda

4
推荐指数
1
解决办法
2213
查看次数

WSGI 容器与 AWS Lambda 相关吗?

我有一个基于 Flask 的 Web 应用程序,可以通过 Zappa 部署到 AWS Lambda。一切都很好。

\n

Flask 文档说:

\n
\n

虽然轻量且易于使用,但 Flask\xe2\x80\x99s 内置服务器不适合生产,因为它\xe2\x80\x99t 不能很好地扩展。此处记录了一些可用于在生产中正确运行 Flask 的选项。

\n
\n

在独立服务器上,Python 是单线程的(全局解释器锁(GIL)等),因此如果没有应有的谨慎和注意,就无法很好地处理多个请求。

\n

在 AWS Lambda(可能还有其他 FaaS 基础设施)上,每个 HTTP 请求都会获得一个单独的 Python 实例,因此 GIL 不是问题,并且 Lambda 通过使用多个函数调用来负责扩展。

\n

因此,在 AWS Lambda 上运行时,是否强烈建议使用 WGSI 容器(Gunicorn、uWGSI 等)?为什么或者为什么不?

\n

我猜测可能相关的一些因素包括:

\n
    \n
  • 成本
  • \n
  • 资源(例如数据库连接)
  • \n
  • 虫子
  • \n
  • 启动性能
  • \n
  • 每个请求的开销
  • \n
\n

wsgi flask zappa aws-lambda

4
推荐指数
1
解决办法
2428
查看次数

Zappa 部署错误 - 对流层==2.7.1 没有帮助 AttributeError:“模板”对象没有属性“add_description”

我已将 python 项目从 2.7 迁移到 3.8。我正在尝试使用 zappa 进行部署。但是,一旦开始更新 Lambda 函数配置,就会遇到此错误。

Updating Lambda function configuration..
Oh no! An error occurred! :(

==============

Traceback (most recent call last):
  File "/Users/leilakarimi/Projects/ATGWSams/venv/lib/python3.7/site-packages/zappa/cli.py", line 3422, in handle
    sys.exit(cli.handle())
  File "/Users/leilakarimi/Projects/ATGWSams/venv/lib/python3.7/site-packages/zappa/cli.py", line 588, in handle
    self.dispatch_command(self.command, stage)
  File "/Users/leilakarimi/Projects/ATGWSams/venv/lib/python3.7/site-packages/zappa/cli.py", line 644, in dispatch_command
    self.vargs["docker_image_uri"],
  File "/Users/leilakarimi/Projects/ATGWSams/venv/lib/python3.7/site-packages/zappa/cli.py", line 1194, in update
    endpoint_configuration=self.endpoint_configuration,
  File "/Users/leilakarimi/Projects/ATGWSams/venv/lib/python3.7/site-packages/zappa/core.py", line 2417, in create_stack_template
    self.cf_template.add_description("Automatically generated with Zappa")
AttributeError: 'Template' object has no attribute 'add_description'
Run Code Online (Sandbox Code Playgroud)

我发现了这个问题并尝试按照这篇文章中的建议降级对流层 ,但我再次面临一个新错误,如下所示:

   ERROR: Command errored out …
Run Code Online (Sandbox Code Playgroud)

python zappa aws-lambda

4
推荐指数
1
解决办法
3213
查看次数

Zappa错误无法找到视图(玉模板)

我正在尝试一个zappa节点应用程序,我无法让它工作超出一个简单的例子.

我有application.coffee

     require('zappajs') ->
       @set views: "#{__dirname}/views"
       @set 'view engine': 'jade'
       @use 'bodyParser', 'methodOverride', @app.router, 'static'


       @configure
         development: => @use errorHandler: {dumpExceptions: on}
         production: => @use 'errorHandler'

       @get '/': -> @render 'index'
Run Code Online (Sandbox Code Playgroud)

我收到了一个错误.Zappa似乎在为文件名添加一个guid.

    example/app/views/7b16eeab-de6f-41b0-b196-8f23f4b7237d/index.jade
Run Code Online (Sandbox Code Playgroud)

这是完整的痕迹

        Error: ENOENT, no such file or directory   '/Users/irfn/project/example/app/views/7b16eeab-de6f-41b0-b196-8f23f4b7237d/index.jade'
    at Object.fs.openSync (fs.js:338:18)
    at Object.fs.readFileSync (fs.js:182:15)
    at Object.rethrow (/Users/irfn/project/example/node_modules/jade/lib/runtime.js:155:27)
    at parse (/Users/irfn/project/example/node_modules/jade/lib/jade.js:116:13)
    at Object.exports.compile (/Users/irfn/project/example/node_modules/jade/lib/jade.js:163:9)
    at Function.exports.compile (/Users/irfn/project/example/node_modules/zappajs/node_modules/express/lib/view.js:68:33)
    at ServerResponse.res._render (/Users/irfn/project/example/node_modules/zappajs/node_modules/express/lib/view.js:417:18)
    at ServerResponse.res.render (/Users/irfn/project/example/node_modules/zappajs/node_modules/express/lib/view.js:318:17)
    at Object.zappa.app.app.(anonymous function).apply.concat.render (/Users/irfn/project/example/node_modules/zappajs/lib/zappa.js:593:33)
    at Object.zappa.app.app.(anonymous function).apply.concat.ctx.render (/Users/irfn/project/example/node_modules/zappajs/lib/zappa.js:545:31)
Run Code Online (Sandbox Code Playgroud)

这是我的包json依赖项的设置方式

   "dependencies": {
      "coffee-script": "1.3.3", …
Run Code Online (Sandbox Code Playgroud)

node.js coffeescript zappa pug

3
推荐指数
1
解决办法
398
查看次数

告诉Mocha默认使用CoffeeScript文件

我正在尝试在Mocha中为我正在使用Zappa.js编写的应用程序设置测试.到目前为止,我一直在关注本教程,并将我需要的东西从JS转换为Coffeescript.

但是我试图运行测试时有点困惑.我有一个Makefile,目前看起来像这样:

REPORTER = dot

test:
  @NODE_ENV=test ./node_modules/.bin/mocha \
    --reporter $(REPORTER) \

.PHONY: test
Run Code Online (Sandbox Code Playgroud)

我已经设置了我的package.json文件来运行这样的测试:

{
  "scripts": {
    "test": "make test"
  }
}
Run Code Online (Sandbox Code Playgroud)

我发现的问题是,因为我正在尝试使用Coffeescript编写我的Mocha测试,当我运行"npm test"时,Mocha不会在"test /"文件夹中选择任何测试.我知道一个事实,我可以通过在终端中使用以下内容告诉Mocha运行.coffee文件(有效):

mocha --compilers coffee:coffee-script
Run Code Online (Sandbox Code Playgroud)

我想知道的是如何告诉Mocha默认使用Coffeescript文件?

makefile mocha.js node.js zappa

3
推荐指数
1
解决办法
2420
查看次数

使用 Python 进行 zappa 调度

我正在运行此代码以使用 Twilio 发送短信...

client.messages.create(
        to=form.phone.data, 
        from_="+1xxxxxxxxxx",
        body="This is a text message"
Run Code Online (Sandbox Code Playgroud)

我的应用程序使用 Python 的 Zappa 托管在 AWS Lambda 上。问题是我需要能够安排这条消息在未来 10 分钟内发送。

Zappa 提供任务执行,但他们的文档不清楚应该如何完成这样的事情。

谢谢您的帮助。

python twilio amazon-sns zappa aws-lambda

3
推荐指数
1
解决办法
2358
查看次数

将django部署到AWS Lambda连接到RDS MySQL,显示错误:NameError:名称'_mysql'未定义

使用连接到 RDS MySQL 的 zappa 将 django 部署到 AWS Lambda,无法部署并显示错误: NameError: name '_mysql' 未定义:

zappa 更新开发给出错误: 错误:警告!对已部署 lambda 的状态检查失败。对“/”的 GET 请求产生 502 响应代码

AWS Cloudwatch 日志:

在 import MySQLdb as Database File "/var/task/MySQLdb/ init .py" 中,第 24 行,在 version_info、_mysql.version_info、_mysql 中。文件名错误:名称“_mysql”未定义

我的settings.py数据库配置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'raags-instance', # DB Instance created in AWS RDS
        'USER': 'xyz',
        'PASSWORD': 'passwordpassword',
        'HOST': '*********.us-east-2.rds.amazonaws.com',
        'PORT': 3306,
    }
}
Run Code Online (Sandbox Code Playgroud)

对于DATABASES = {}成功部署,我是 zappa 部署和无服务器架构的新手,请协助,我无法在任何地方找到解决方案。提前致谢

mysql django lambda zappa

3
推荐指数
1
解决办法
1709
查看次数

使用 Zappa 的新分支/阶段

我目前在 AWS Lambda 上使用 Zappa/Flask (Py 3.7) 有一个 API

我的 zappa_Settings.json 文件如下所示:

{
    "beta": {
        "app_function": "application.application",
        "profile_name": "changed",
        "project_name": "changed",
        "runtime": "python3.7",
        "s3_bucket": "zappa-<obscured>"
    }

}
Run Code Online (Sandbox Code Playgroud)

然而,我们现在正在开发一组新的功能,并且感觉表明我们有一个单独的分支或阶段,例如“测试”,我们在部署这些功能并评估成熟度之前将其推入实时环境。

问题是,尽我所能,我无法从控制台创建新阶段:

zappa init 
Run Code Online (Sandbox Code Playgroud)

崩溃与

click.exceptions.ClickException:该项目已经有一个 zappa_settings.json 文件!

zappa init stage2
Run Code Online (Sandbox Code Playgroud)

产生

用法:zappa [-h] [-v] [--color {auto,never,always}] {认证,部署,init,包,模板,调用,管理,回滚,计划,状态,尾部,取消部署,取消计划,更新,shell} ... zappa:错误:无法识别的参数:stage2

zappa deploy stage2
Run Code Online (Sandbox Code Playgroud)

输出

(botocore 1.12.86 (/home/user/Code/Python/project/lib/python3.6/site-packages), Requirement.parse('botocore<1.11.0,>=1.10.82'), {'boto3'})
Calling deploy for stage stage2..
Error: Please define stage 'stage2' in your Zappa settings.
Run Code Online (Sandbox Code Playgroud)

现在,如果我手动为阶段创建条目,则需要有一个 s3 存储桶用于部署。重复使用与第一个实例相同的实例是否安全?我在这里要做什么来部署新阶段?

python-3.x zappa aws-lambda python-zappa

2
推荐指数
1
解决办法
922
查看次数

AttributeError: 模块“dateutil.tz”在 Zappa Deploy 上没有属性“UTC”

在尝试部署我的 AWS Lambda 函数时在我的 Stacktrace 上出现此错误

(python-dateutil 2.8.1 (/Users/supratik/.local/share/virtualenvs/api_sourcer-sM-JSZy3-/Users/supratik/.pyenv/shims/python/lib/python3.6/site-packages), Requirement.parse('python-dateutil<2.7.0'), {'zappa'})
Calling deploy for stage development..
Oh no! An error occurred! :(

==============

Traceback (most recent call last):
  File "/Users/supratik/.local/share/virtualenvs/api_sourcer-sM-JSZy3-/Users/supratik/.pyenv/shims/python/lib/python3.6/site-packages/zappa/cli.py", line 2778, in handle
    sys.exit(cli.handle())
  File "/Users/supratik/.local/share/virtualenvs/api_sourcer-sM-JSZy3-/Users/supratik/.pyenv/shims/python/lib/python3.6/site-packages/zappa/cli.py", line 512, in handle
    self.dispatch_command(self.command, stage)
  File "/Users/supratik/.local/share/virtualenvs/api_sourcer-sM-JSZy3-/Users/supratik/.pyenv/shims/python/lib/python3.6/site-packages/zappa/cli.py", line 549, in dispatch_command
    self.deploy(self.vargs['zip'])
  File "/Users/supratik/.local/share/virtualenvs/api_sourcer-sM-JSZy3-/Users/supratik/.pyenv/shims/python/lib/python3.6/site-packages/zappa/cli.py", line 709, in deploy
    self.zappa.create_iam_roles()
  File "/Users/supratik/.local/share/virtualenvs/api_sourcer-sM-JSZy3-/Users/supratik/.pyenv/shims/python/lib/python3.6/site-packages/zappa/core.py", line 2557, in create_iam_roles
    role, credentials_arn = self.get_credentials_arn()
  File "/Users/supratik/.local/share/virtualenvs/api_sourcer-sM-JSZy3-/Users/supratik/.pyenv/shims/python/lib/python3.6/site-packages/zappa/core.py", line 2536, in get_credentials_arn
    self.credentials_arn = role.arn
  File "/Users/supratik/.local/share/virtualenvs/api_sourcer-sM-JSZy3-/Users/supratik/.pyenv/shims/python/lib/python3.6/site-packages/boto3/resources/factory.py", line 339, …
Run Code Online (Sandbox Code Playgroud)

python-3.x zappa python-zappa

2
推荐指数
1
解决办法
2433
查看次数

如何在 gitlab CI/CD 中使用 zappa 将应用程序部署到 AWS Lambda?

我正在尝试通过 gitlab CI 通过 zappa 在 aws lambda 上部署 Flask 应用程序。由于无法通过 gitlab CI 进行内联编辑,因此我zappa_settings.json在远程计算机上生成了该文件,并且尝试使用它来执行zappa deploy dev.

我的zappa_settings.json文件:

{
    "dev": {
        "app_function": "main.app",
        "aws_region": "eu-central-1",
        "profile_name": "default",
        "project_name": "prices-service-",
        "runtime": "python3.7",
        "s3_bucket": -MY_BUCKET_NAME-
    }
}
Run Code Online (Sandbox Code Playgroud)

我的.gitlab-ci.yml文件:

image: ubuntu:18.04

stages:
  - deploy

before_script:
  - apt-get -y update
  - apt-get -y install python3-pip python3.7 zip
  - python3.7 -m pip install --upgrade pip
  - python3.7 -V
  - pip3.7 install virtualenv zappa

deploy_job:
  stage: deploy
  script:
    - …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services zappa gitlab gitlab-ci aws-lambda

2
推荐指数
1
解决办法
1157
查看次数

Zappa 部署成功,无需 url

我正在尝试通过 zappa 部署 django 应用程序。当我部署应用程序时,一切正常,并且我还收到消息“您更新的 Zappa 部署已上线”。但我似乎找不到访问实时应用程序的网址。

deployment django live zappa serverless

1
推荐指数
1
解决办法
799
查看次数

EventBridge 与 API 网关

最近几天我正在尝试学习如何使用AWS,因为我想部署一些API。

到目前为止,我正在学习如何将API GatewayLambda 函数结合使用,这似乎是一个不错的工作流程。但是,因为我使用Flask-restplus编写 API ,所以我尝试了Zappa框架,该框架使用EventBridge (CloudWatch Events)作为我创建的每个 Lambda 函数的触发器。

所以我的问题是:

  1. EventBridge 和 API Gateway 之间有什么区别?我何时应该使用它们?
  2. 在使用 API Gateway 时,我意识到最佳实践是为每个 API 创建不同的 Lambda 函数,然后将其连接到网关。那么,将整个 python 文件作为 Lambda 函数上传是一个好主意吗?(所有 API 路由都写在那里)或者我应该为每个 API 执行一个过程?

先感谢您。

zappa aws-lambda aws-api-gateway flask-restplus aws-event-bridge

0
推荐指数
1
解决办法
2730
查看次数