标签: serverless-framework

如何在python中部署具有依赖关系的函数?

我正在尝试使用该serverless框架来创建和部署AWS Lambda函数.我创建了一个vendored在项目根目录中命名的文件夹,并安装(使用pip install)函数依赖项.但是,每当我尝试运行它(使用serverless function run)时,我都会收到错误:

无服务器:运行isNewUser ...
无服务器:警告:此变量未定义:区域
无服务器:-----------------
无服务器:失败 - 返回此错误:
无服务器:{"异常":["Traceback(最近一次调用最后一次):\n","File \"/ home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler \",line 170,在\n handler = import_program_as_module(path)\n","File \"/ home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler \",第149行,在import_program_as_module \n module = make_module_from_file('lambda_handler',handler_file)\n","File \"/ home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler \",第129行,在make_module_from_file \n py_source_description \n","File \"/ home/fernando/workspace/os-cac/isNewUser/handler.py \",第11行,在\n中从vtex.order import Order \n" ,"ImportError:没有名为vtex.order的模块\n"],"成功":false}无服务器:来自Python
无服务器的异常消息:Traceback(最近一次调用最后一次):,Fil e"/home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler",第170行,处理程序= import_program_as_module(路径),文件"/home/fernando/.nvm/版本/ node/v5.10.1/bin/serverless-run-python-handler",第149行,在import_program_as_module模块中= make_module_from_file('lambda_handler',handler_file),文件"/home/fernando/.nvm/versions/node/v5 .10.1/bin/serverless-run-python-handler",第129行,在make_module_from_file py_source_description,文件"/home/fernando/workspace/os-cac/isNewUser/handler.py",第11行,来自vtex.order import Order,ImportError:没有名为vtex.order的模块`

vtex.order 是在handler.py中导入的模块

我的项目结构如下:

/root/
     |
     |--_meta/
     |--vendored/
                |--dependencies...
     |--function-name/
                     |--handler.py
                     |--event.json
                     |--s-function.json
     |--requirements.txt
     |--admin.env
     |--package.json
     |--s-project.json
     |--s-resources-cf.json
     |--s-project.json
Run Code Online (Sandbox Code Playgroud)

有什么我做错了吗?我应该以某种方式配置我的功能以包括来自vendored的依赖项?

python amazon-web-services aws-lambda serverless-framework

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

如何将托管策略附加到无服务器框架中的 lambda 函数

如何将托管策略附加到 lambda 函数?

我试过:

provider:
  name: aws
  role: arn:aws:iam::aws:policy/AmazonCognitoReadOnly
Run Code Online (Sandbox Code Playgroud)

但这导致了以下错误:

配置堆栈时发生错误:GaDashextractLambdaFunction - 检测到 1 个验证错误:“角色”处的值“arn:aws:iam::aws:policy/AmazonCognitoReadOnly”无法满足约束:成员必须满足正则表达式模式:arn:aws: iam::\d{12}:角色/?[a-zA-Z_0-9+=,.@-_/]+.

amazon-web-services amazon-iam amazon-cognito aws-lambda serverless-framework

8
推荐指数
2
解决办法
8881
查看次数

无服务器不包括我的node_modules

我有一个具有以下结构的 NodeJS 无服务器项目:

-node_modules
-package.json
-serverless.yml
-funcitons
   -medium
     -mediumHandler.js
Run Code Online (Sandbox Code Playgroud)

我的无服务器.yml:

service: googleAnalytic

    provider:
      name: aws
      runtime: nodejs6.10

      stage: dev
      region: us-east-1

    package:
      include:
        - node_modules/**

        functions:
          mediumHandler:
            handler: functions/medium/mediumHandler.mediumHandler
            events:

              - schedule:
              name: MediumSourceData 
              description: 'Captures data between set dates'
              rate: rate(2 minutes)

          - cloudwatchEvent:
              event:
                source:
                  - "Lambda"
                detail-type:
                  - ""
          - cloudwatchLog: '/aws/lambda/mediumHandler'
Run Code Online (Sandbox Code Playgroud)

我的 sls 信息显示:

Service Information
service: googleAnalytic
stage: dev
region: us-east-1
stack: googleAnalytic-dev
api keys:
  None
endpoints:
  None
functions:
  mediumHandler: googleAnalytic-dev-mediumHandler
Run Code Online (Sandbox Code Playgroud)

当我运行 sls 时:

serverless …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services node.js serverless-framework serverless

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

AWS Lambda Task在6.00秒后超时

我正在使用无服务器框架.我的Lambda函数连接到DynamoDB表以更新表中的项目.表的读写容量单位为5,禁用auto_scaling.AWS Lambda函数分配了128MB内存.

我已经使用Jmeter进行性能测试.我已经同时发送了1000个请求,一些响应给了我完美的输出,而其他给出了内部服务器错误(502 Bad Gateway).我还分析了cloudwatch的日志,只获得了Task Timeout错误.任何人都可以建议我为什么我得到这个错误,以及如何解决它?

lambda amazon-web-services amazon-dynamodb serverless-framework api-gateway

8
推荐指数
2
解决办法
3928
查看次数

如何在 cloudformation yml 中获取最新的 lambda 版本?

我正在尝试在 cloudformation 中为 cloudfront 分布引用边缘 lambda

我现在拥有的是:

          LambdaFunctionARN:
            Fn::GetAtt: [BasicAuthLambdaFunction,Arn]
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

发生错误:GGGCloudFrontDistribution - 函数 ARN 必须引用特定的函数版本。(ARN 必须以版本号结尾。)

那么..是否有某种技术可以引用该功能的最新版本?

amazon-web-services amazon-cloudfront aws-cloudformation serverless-framework

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

无服务器错误:无法找到部署存储桶。错误:指定的存储桶不存在

我正在尝试使用无服务器对包进行简单的部署。然而,当我尝试时,我收到以下错误,指出我指定的存储桶不存在。

我已经在每个服务的基础上尝试过这个,似乎我的存储桶都不存在,但我正在 S3 和 cloudwatch 中查找,所有存储桶都在那里。

是否可以让 Serverless 输出尝试访问的存储桶?我发现这个错误非常没有帮助,

  Serverless Error ---------------------------------------

  Could not locate deployment bucket. Error: The specified bucket does not exist

  Get Support --------------------------------------------
     Docs:          docs.serverless.com
     Bugs:          github.com/serverless/serverless/issues
     Forums:        forum.serverless.com
     Chat:          gitter.im/serverless/serverless

  Your Environment Information -----------------------------
     OS:                     darwin
     Node Version:           6.10.3
     Serverless Version:     1.26.1
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-web-services serverless-framework serverless

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

无服务器框架将Lambda添加到现有VPC和子网

是否可以创建无服务器框架Lambda部署,其中Lambda部署到现有VPC的SecurityGroup中?我不希望服务部署或它的堆栈拥有一个网络工件?

aws-cloudformation aws-sdk aws-lambda aws-api-gateway serverless-framework

8
推荐指数
3
解决办法
2479
查看次数

AWS Lambda Python - 返回 BytesIO 文件?

我正在使用 python 3.7 在 AWS Lambda 中设置一个函数,它不会让我返回字节类型

请注意,这不是 API Gateway 的问题,我是直接调用 lambda 的。

错误是:Runtime.MarshalError, ... is not JSON serializable

output = BytesIO()
#Code that puts an excel file into output...
return {
        'Content-Disposition': 'attachment; filename="export.xlsx"',
        'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
        'body' : output.getvalue()
    }
Run Code Online (Sandbox Code Playgroud)

如果我做 :

'body' : str(output.getvalue())
Run Code Online (Sandbox Code Playgroud)

它输出损坏的文件,因为它添加b''到字符串

如果我做 :

'body' : base64.b64encode(output.getvalue()).decode()
Run Code Online (Sandbox Code Playgroud)

它还输出损坏的文件,可能是因为它更改了文件的二进制表示。

也许我需要上传到 S3?但它不适合我的流程,这是一次性文件创建,它会一直停留在“S3 Limbo”中,直到 TTL

amazon-web-services python-3.x aws-lambda serverless-framework

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

自定义域在带有 serverless-next.js 的 aws 中不起作用?

我面临与Github 问题相同的问题,但适用于不同的用例。我正在尝试添加应用程序的多个实例:此处的示例代码

添加域后,我收到相同的错误:

Domain www.app.com was not found in your AWS account. 
Run Code Online (Sandbox Code Playgroud)

因此,为了实现多个实例,我尝试将 env-prod 文件更改为bucket="prod-appname". 这已部署,但是当我将 env-stage 文件添加到 时bucket="stage-appname",这会创建一个新存储桶,但会将其部署到相同的 CloudFront URL。有没有办法修复它们中的任何一个,以便我可以实现多个实例?

提前致谢

javascript amazon-web-services amazon-cloudfront serverless-framework next.js

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

使用无服务器框架(AWS Lambda/网关)、Express、Mongoose/MongoDB Atlas 的应用程序频繁超时

触发警告:初学者问题。

\n\n

我使用 Express 和 Mongoose 以及 MongoDB Atlas DB 构建了一个 api。

\n\n

大多数时候,它工作正常,但经常出现超时错误。这似乎是非常随机发生的,涉及所有路线等......准确地说,我得到:

\n\n
`502 Internal server error via POSTMAN`\n
Run Code Online (Sandbox Code Playgroud)\n\n

在无服务器仪表板中,我得到:

\n\n
invocation\ntime invoked 1 day ago, mar 08 at 1:38pm\nfatal error Function execution duration going to exceeded configured timeout limit.\ncold start\nduration 48.9 s\nmemory used na\n\nrequest\nendpoint /{proxy+}\nmethod POST\nstatus 502\nmessage Internal server error\nlatency 27 ms\n
Run Code Online (Sandbox Code Playgroud)\n\n

和跨度和日志:

\n\n

跨越并登录无服务器仪表板

\n\n

我使用本教程来包装我的 Express 应用程序,以使用无服务器框架进行部署:https://dev.to/adnanrahic/a-crash-course-on-serverless-apis-with-express-and-mongodb-193k

\n\n

无服务器.yml 文件:

\n\n
service: serviceName\napp: appName\norg: orgName\n\nprovider:\n  name: aws\n  runtime: nodejs12.x\n  stage: ${env:NODE_ENV}\n  region: eu-central-1\n …
Run Code Online (Sandbox Code Playgroud)

mongoose express aws-lambda aws-api-gateway serverless-framework

8
推荐指数
2
解决办法
5621
查看次数