标签: serverless-framework

AWS Lambda和Serverless建议使用哪个本地节点版本

从AWS-Lambda和无服务器框架开始,我对节点版本感到困惑:

AWS帮助网站说,(在21日至2016)

AWS Lambda支持以下运行时版本:

Node.js:v0.10.36

所以我在本地机器上安装了Node.js v0.10.36.通过安装最新的(v 0.4.2)无服务器框架

npm install serverless -g
Run Code Online (Sandbox Code Playgroud)

它给出了以下警告:

npm WARN引擎serverless@0.4.2:wanted:{"node":"> = 4.0"}(当前:{"node":"0.10.36","npm":"1.4.28"})

我认为在本地拥有与AWS相同的版本可能有助于建立一致的开发环境......我错了吗?我应该在本地运行什么Node.js版本才能充分利用无服务器?

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

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

如何优化AWS Lambda?

我目前正在使用带有无服务器框架的 AWS Lambda构建Web API .

在我的lambda函数中,每个函数都连接到Redis(elasticache)和RDB(Aurora,RDS)或DynamoDB以检索数据或写入新数据.我的所有lambda函数都在我的VPC中运行.

一切正常,除了在最后一次执行后首次执行或执行一个lambda函数时,执行lambda函数需要相当长的时间(1-3秒),或者有时甚至会响应网关超时错误(周围) 30秒),即使我的lambda函数配置为60秒超时.

正如指出这里,我想1-3秒用于初始化一个新的容器.但是,我想知道是否有办法减少这个时间,因为1-3秒或网关超时并不是生产使用的理想选择.

node.js aws-lambda serverless-framework

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

如何配置无服务器S3存储桶资源以将CORS AllowOrigin设置为其功能的http端点

我正在使用Serverless来创建一个Web应用程序,该应用程序从S3存储桶提供静态内容,例如Web字体.S3存储桶配置为serverless.yml文件中的资源.其CORS配置将AllowOrigin设置为通配符.

我想将此更改为具有AllowOrigin,其中包含由Serverless创建的服务的http端点,例如31alib51b6.execute-api.eu-west-1.amazonaws.com.

我想知道是否可以在serverless.yml文件中配置它.

我的示例serverless.yml文件:

service: example-service

provider:
  name: aws
  runtime: nodejs4.3
  region: eu-west-1

functions:
  web:
    handler: handler.handler
    name: ${self:service}-${self:provider.stage}
    description: ${self:service} web application - ${self:provider.stage}
    events:
      - http:
        path: web
        method: get
      - http:
        path: web/{proxy+}
        method: get

resources:
  Resources:
    S3Assets:
      Type: AWS::S3::Bucket
      Properties: 
        BucketName: ${self:service}-${self:provider.stage}-assets
        CorsConfiguration:
          CorsRules:
            - AllowedMethods:
                - GET
                - HEAD
              AllowedOrigins:
                - "*"
Run Code Online (Sandbox Code Playgroud)

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

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

如何使用无服务器功能,说不存在

我正在尝试部署我的第一个无服务项目,并想让它更新我的dynamodb中的一个简单项目.所以我开始在serverless.yml中创建一个简单的服务:

service: serverless
    provider:
      name: aws
      runtime: nodejs4.3
      iamRoleStatements:
        - Effect: "Allow"
          Resource: "*"
          Action:
            - "dynamodb:*"
    functions:
      createMovie:
        handler: handler.createMovie
        events:
          - http:
              path: movies/create
              method: post
              integration: lambda
              cors: true
Run Code Online (Sandbox Code Playgroud)

然后我在网上找到了更多的代码链接我的应用程序的dynamodb部分,并将其添加到底部的serverless.yml:资源:

  Resources:
    DynamoDbTable:
      Type: AWS::DynamoDB::Table
      Properties:
        TableName: moviesTwo
        AttributeDefinitions:
          - AttributeName: movieTitle
            AttributeType: S
        KeySchema:
          - AttributeName: movieTitle
            KeyType: HASH
        ProvisionedThroughput:
          ReadCapacityUnits: 5
          WriteCapacityUnits: 5
    DynamoDBIamPolicy:
      Type: AWS::IAM::Policy
      DependsOn: DynamoDbTable
      Properties:
        PolicyName: lambda-dynamodb
        PolicyDocument:
          Version: '2012-10-17'
          Statement:
            - Effect: Allow
              Action:
                - dynamodb:GetItem
                - dynamodb:PutItem
              Resource: arn:aws:dynamodb:*:*:table/moviesTwo
        Roles: …
Run Code Online (Sandbox Code Playgroud)

serverless-framework

4
推荐指数
2
解决办法
5046
查看次数

无法从Amazon Lambda,相同的VPC和正确的角色权限访问RDS

我无法在生产中从Amazon Lambda成功连接到RDS。对于Amazon Lambda,我使用无服务器框架,可以离线执行sls,我可以从本地主机连接RDS,但在生产中,Amazon Lambda不能。

两者都在同一个VPC中,在同一个安全组中,该组具有所有流量入站访问权限,并且有一个指向Vpc的CIDR的规则。

我附加了以下权限:AmazonRDSFullAccess,AWSLambdaFullAccess,AmazonVPCFullAccess,AWSLambdaExecute和AWSLambdaVPCAccessExecutionRole。

感谢帮助。

amazon rds serverless-framework

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

!无服务器框架中的ImportValue无法正常工作

我正在尝试从CloudFormation中创建的堆栈中导出DynamoDb StreamArn,然后使用serverless.yml中的!ImportValue引用导出.

但我收到此错误消息:

unknown tag !<!ImportValue> in "/codebuild/output/src/serverless.yml"
Run Code Online (Sandbox Code Playgroud)

cloudformation和serverless.yml定义如下.任何帮助赞赏.

StackA.yml

AWSTemplateFormatVersion: 2010-09-09
Description: Resources for the registration site

Resources:
  ClientTable:
    Type: AWS::DynamoDB::Table
    DeletionPolicy: Retain
    Properties:
      TableName: client
      AttributeDefinitions:
        - AttributeName: id
          AttributeType: S
      KeySchema:
        - AttributeName: id
          KeyType: HASH
      ProvisionedThroughput:
        ReadCapacityUnits: 2
        WriteCapacityUnits: 2
      StreamSpecification:
        StreamViewType: NEW_AND_OLD_IMAGES

Outputs:  
  ClientTableStreamArn:
      Description: The ARN for My ClientTable Stream
      Value: !GetAtt ClientTable.StreamArn
      Export:
        Name: my-client-table-stream-arn
Run Code Online (Sandbox Code Playgroud)

serverless.yml

service: my-service

frameworkVersion: ">=1.1.0 <2.0.0"

provider:
  name: aws
  runtime: nodejs6.10
  iamRoleStatements:
    - Effect: Allow
      Action:
        - dynamodb:DescribeStream …
Run Code Online (Sandbox Code Playgroud)

aws-cloudformation serverless-framework

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

如何在Azure上升级nodejs版本

目前我有Azure函数和6.5.0默认定义的Node.js版本.目标是升级它.我已经检查了Azure上可用的Node.js版本列表,最新的版本是8.9.4.我已经阅读了一些关于它的文档,其中提到了两种方法.

1)package.json

将以下配置放入package.json文件

"engines": {
    "node": "8.9.4"
}
Run Code Online (Sandbox Code Playgroud)

所以我做到了,但没有成功.

2)应用程序设置

转到应用程序设置,更新的价值WEBSITE_NODE_DEFAULT_VERSION8.9.4

这里我有3个问题:

  • 登录process.version功能告诉我6.11.0.我不知道为什么...
  • 实际上它是Node.js 8.9.4,但有些ES6功能async arrow functions会抛出错误
  • 每次我运行serverless deploy命令它重新创建服务并将WEBSITE_NODE_DEFAULT_VERSION值重置为默认值,即6.5.0

Azure功能的另一个问题:当我部署带有更改的功能时,Azure门户网站UI仍然显示我没有更新功能(旧版本),而该功能的新版本正在那里运行.奇怪的...

如果您有任何人遇到这些问题,请告诉我,也许有人知道原因甚至是解决方案.谢谢.

azure node.js serverless-framework azure-functions

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

AWS无服务器| 超出代码存储限制

我有一个错误代码存储限制,超出了在AWS中部署无服务器应用程序的范围。总大小409 B.

错误消息显示:

发生错误:HelloLambdaFunction-超出代码存储限制。(服务:AWSLambda;状态代码:400;错误代码:CodeStorageExceededException;请求ID:...)

amazon-web-services serverless-framework serverless

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

参数存储请求在AWS Lambda内部超时

我正在尝试像本文一样访问AWS SSM参数存储。我已经在本地测试过lambda函数,它可以按预期工作。但是,当推送到AWS时,lambda在尝试检索配置时会失败;它超时:

{
    "errorMessage": "2018-09-02T04:55:49.096Z 71a5006a-ae6c-11e8-9322-313ba5e28048 Task timed out after 6.01 seconds"
}
Run Code Online (Sandbox Code Playgroud)

我已将以下权限添加到serverless.yml。我已尽可能不受限制地尝试查找错误的位置。另外,该参数只是一个字符串,因此它不使用KMS。

service: pwaer-messages-service

provider:
  name: aws
  runtime: nodejs8.10
  vpc:
    securityGroupIds:
      - sg-222f126f
    subnetIds:
      - subnet-756aef12
      - subnet-130f8f3d
  environment:
    NODE_ENV: ${opt:stage, 'dev'}

  iamRoleStatements:
    - Effect: 'Allow'
      Action: 'ssm:**'
      Resource:
        - 'Fn::Join':
          - ':'
          -
            - 'arn:aws:ssm'
            - Ref: 'AWS::Region'
            - Ref: 'AWS::AccountId'
            - 'parameter/*'

functions:
  receiveText:
    handler: dist/receive.handler
    events:
      - http:
          path: sms/parse
          method: post
Run Code Online (Sandbox Code Playgroud)

我想念什么?

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

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

无法在Node.js中导入模块``处理程序''AWS Lambda函数

我不断收到此错误,但我不知道是什么原因引起的。

我有一个根据条件发布到另一个API的API,但是在包装API中遇到此错误。

这是代码...

handler.js

'use strict';
const axios = require('axios');

module.exports.thumbnailWrapperAPI = (event, context, callback) => {


  const incomingData = JSON.parse(event.body);
  if(incomingData.source.includes('png') || incomingData.source.includes('jpg')){
    const newLocal = 'some endpoint...';
    // call image resizing API...
    axios.post(newLocal,{
      source: incomingData.source,
      target: incomingData.target,
      width: incomingData.width
    })
    .then(response => callback(null,response))
    .catch(error => callback(error))

  } else if(incomingData.source.includes('html')) {
    // handle HTML
  } else {
    //...
  };
};
Run Code Online (Sandbox Code Playgroud)

serverless.yaml

service: thumbnailWrapperAPI 
provider:
  name: aws
  runtime: nodejs8.10
  region: eu-west-1

functions:
  thumbnailWrapperAPI:
    handler: handler.thumbnailWrapperAPI
    events:
      - http:
          path: generatethumbnail/ …
Run Code Online (Sandbox Code Playgroud)

node.js aws-lambda serverless-framework aws-serverless

4
推荐指数
2
解决办法
4461
查看次数