标签: serverless-framework

重命名Azure功能

如何重命名Azure功能

我想将默认的'HttpTriggerCSharp1'名称替换为我自己名称.目前遗憾的是,此名称包含在函数URL中,并且没有更改它的选项:

https://functions-xxx.azurewebsites.net/api/HttpTriggerCSharp1

图片

azure azure-webjobs serverless-framework azure-functions serverless-architecture

52
推荐指数
5
解决办法
1万
查看次数

Lambda集成与Lambda代理:优点和缺点

您认为在AWS API Gateway中使用和不使用代理功能的Lambda集成的优点和缺点是什么(更具体地说,在使用无服务器框架时)?这是我现在的想法:

Lambda与代理集成

  • Pro:人们可以快速进行原型设计和编码,而无需担心所有必需的配置细节(并重新发明一些轮子,如通用模板映射等).
  • Pro:返回任何状态代码和自定义标题非常容易,同时还有一种通用的方法来读取请求的正文,标题和参数.
  • Con:一切都在代码中完成,因此自动生成文档有点困难.依赖关系(标题,模型,返回的状态代码)在代码中"隐藏".

没有代理的Lambda集成

  • Con:需要更多的工作来设置它,并且这种配置可能在不同的资源中重复.
  • Pro:它允许人们分离lambda接收和返回的内容,以及如何将其映射到不同的HTTP状态代码,标头和有效负载.
  • Pro:非常有用,因为它预先规定了它返回的内容,以及它在标题和有效负载方面的要求.
  • Pro:从长远来看,设置所有内容时的艰苦工作非常有用,因为可以将所有内容导出到Swagger,以便其他人可以使用它为它生成不同的SDK.

你的想法是什么?您通常使用Lambda Proxy还是普通的Lambda集成?你喜欢什么,为什么?

编辑:到目前为止,我倾向于总是选择不使用代理功能,因为提到的原因(解耦和说明依赖关系 - 标题,状态代码等 - 预先).

aws-lambda aws-api-gateway serverless-framework

32
推荐指数
2
解决办法
5982
查看次数

AWS Lambda http,我在哪里可以找到该URL?

我相当新,AWS Lambda但肯定可以看到它的好处,并偶然发现了一流的框架,Serverless以帮助我在Lambda上构建解决方案.

我开始使用AWS APIGateway 构建解决方案,但确实需要"internal" VPC API而不是像API GW所创建的公共Internet面向API.

我发现Servless确实可以暴露一个HTTP端点,但我无法弄清楚这是如何完成的以及如何创建URL.当我从Serverless部署Lambda时,它会给我一个URL,例如:

https://uxezd6ry8z.execute-api.eu-west-1.amazonaws.com/dev/ping

我希望能够找到(或创建)已存在的同一个http监听器,Lambdas所以我的问题是如何URL创建以及HTTP部署的实际监听器在哪里?

amazon-web-services aws-lambda serverless-framework

29
推荐指数
3
解决办法
2万
查看次数

如何将json输入传递给使用事件在Serverless中部署的Cron计划Lambda?

我一直在尝试在Serverless中部署Lambda,以便在每小时调用它的Cron计划上运行.在调用它时,我希望Lambda中的事件由我自己的JSON输入填充,而不是来自Cron事件的信息,这是部署时的默认输入.

在AWS控制台内部,我可以手动进入Lambda的Cron触发器,并将输入从"匹配事件"更改为"常量(JSON文本)",以获得我想要的结果.由于Serverless在部署Lambda时创建了这个规则,我觉得应该有一些方法可以通过serverless.yml文件中的配置来改变输入.在搜索无服务器的文档时,我无法找到任何内容,所以现在我想知道这是否可以通过无服务器处于当前状态,如果可以,那么如何去做.

任何意见,将不胜感激.

编辑:有一个应该添加此功能的更新,但是我仍然无法使用无服务器1.3.0的JSON进行部署(并且还使用1.2.0进行了测试).我使用的serverless.yml的一些例子如下:

functions:
  test:
    handler: test.test
    description: "test serverless Lambda"
    memorySize: 128
    timeout: 300
    events:
      - schedule:
        rate: rate(10 minutes)
        input:
          key: value
      - schedule:
        rate: rate(10 minutes)
        input: '{"key": "value"}'
      - schedule:
        rate: rate(10 minutes)
        input:
          key: 'value'
Run Code Online (Sandbox Code Playgroud)

从1.3.0开始,任何人都可以评论无服务器中此功能的状态,以及我上面的serverless.yml是否正常?

编辑2:发布工作serverless.yml

functions:
  test:
    handler: test.test
    description: "test serverless Lambda"
    memorySize: 128
    timeout: 300
    events:
      - schedule:
          rate: rate(10 minutes)
          enabled: true
          input:
            key: value
      - schedule:
          rate: rate(10 minutes)
          input: '{"key": "value"}'
          enabled: true
      - schedule:
          rate: rate(10 …
Run Code Online (Sandbox Code Playgroud)

aws-lambda serverless-framework

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

如何在本地测试aws lambda函数

我有一个用node.js express开发的移动应用程序后端.我尝试将其部署为lambda服务.为此,我创建了一个无服务器框架项目(https://github.com/serverless).之前我通过启动快速后端应用程序在本地测试了移动应用程序.现在我找不到一种方法来在没有本地后端的情况下在本地测试我的移动应用程序.jaws run命令只在我调用它时运行.

是否有任何方法可以将lambda函数作为Web服务启动?或者是否有无服务器框架的替代方案?

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

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

如何将参数传递给无服务器调用本地

我正在开发一个无服务器的无需项目,需要在本地测试lambda函数.
我正在使用serverless invoke local -f {function_name}命令来测试不请求任何路径或查询参数的API调用.
我的问题是如何使用此命令将任何路径或查询参数传递给函数?

示例无服务器描述

getFoodDetails:
    handler: handler.getFoodDetails
    events:
      - http:
          method: get
          path: /foods/{food_id}
          cors: true
          request:
            parameters:
              paths:
                food_id: true
Run Code Online (Sandbox Code Playgroud)

aws-lambda serverless-framework aws-serverless

24
推荐指数
5
解决办法
1万
查看次数

如何调试AWS Api Gateway&Lambda的"AWS/ApiGateway 5XXError"

我有一个运行lambda函数的API网关资源.我正在使用来自Api Gateway的AWS Generated SDK调用API网关资源.

这是我的客户端堆栈跟踪的一部分似乎相关:

Caused by: com.amazonaws.mobileconnectors.apigateway.ApiClientException: {"message": "Internal server error"} (Service: DevnetcountableClient; Status Code: 500; Error Code: null; Request ID: 348e8f98-6f55-11e6-97f6-098c2caf220f)
at com.amazonaws.mobileconnectors.apigateway.ApiClientHandler.handleResponse(ApiClientHandler.java:255) at com.amazonaws.mobileconnectors.apigateway.ApiClientHandler.invoke(ApiClientHandler.java:88)
    at java.lang.reflect.Proxy.invoke(Proxy.java:393)
    at $Proxy1.accountCreatePost(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

现在看AWS控制台,我的API网关仪表板内我看到的请求进来并导致"AWS/ApiGateway 5XXError".但是有0个日志(我可以找到).我的lambda函数似乎没有被调用,也没有显示lambda日志.

现在这是我的lambda看起来像:

module.exports.createAccount = function(event, context, cb) {
    console.log('createAccount');
    console.log(event);
    console.log(context);
    console.log(cb);
    cb(null, {status: 'SUCCESS', message: 'I ran!'});
};
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能调试这个?

编辑:好的,这是将所有内容整合在一起的cloudformation脚本.

{
   "AWSTemplateFormatVersion":"2010-09-09",
   "Description":"The AWS CloudFormation template for this Serverless application",
   "Resources":{
      "ServerlessDeploymentBucket":{
         "Type":"AWS::S3::Bucket"
      },
      "IamRoleLambda":{
         "Type":"AWS::IAM::Role",
         "Properties":{
            "AssumeRolePolicyDocument":{
               "Version":"2012-10-17",
               "Statement":[
                  {
                     "Effect":"Allow",
                     "Principal":{
                        "Service":[
                           "lambda.amazonaws.com"
                        ] …
Run Code Online (Sandbox Code Playgroud)

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

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

如何在AWS Lambda上安装GraphicsMagick或ImageMagick?

我正在使用gmNode.js 的包以及AWS Lambda上提供的默认ImageMagick安装.

const gm = require('gm').subClass({ imageMagick: true });

出于某种原因,某些图像的调整大小功能失败.

我使用Amazon Linux AMI(ami-hvm-2016.03.3.x86_64-gp2)创建了一个EC2实例.我安装了可用的(旧)6.x版ImageMagick yum.当我在EC2实例上使用该安装运行我的脚本时,它会再现我在Lambda上运行代码时看到的失败,确认这是导致失败的此版本IM的问题.

如果我安装GrpahicsMagick sudo yum install GraphicsMagick.这允许我的脚本无错误地执行调整大小.

const gm = require('gm').subClass({ imageMagick: false });

但是,我不确定如何在无服务器的部署中捆绑这个.如果我将GraphicsMagick安装到与脚本相同的文件夹中sudo yum --installroot=/var/task install GraphicsMagick,并使用此require语句运行我的脚本:

const gm = require('gm').subClass({ imageMagick: false, appPath: './usr/bin/' });

当我在EC2实例上运行脚本时,调整大小工作.但是,当我使用无服务器进行部署,并且脚本在Lambda中运行时,可执行文件似乎已损坏. gm在调用时失败并出现以下错误gm(buffer).size(/*...*/).

could not get the image size: ERR: {"code":"EPIPE","errno":"EPIPE","syscall":"write"}

如何构建可以无服务器部署的ImageMagick或GraphicsMagick版本?

imagemagick node.js graphicsmagick aws-lambda serverless-framework

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

无服务器框架:如何添加外部NPM包?

我的情况是我在向我的无服务器框架项目添加外部NPM包时遇到了一些麻烦(特定包是geopoint).

我去了无服务器项目的根文件夹并运行npm install geopoint --save.package.json已更新,dependencies": { "geopoint": "^1.0.1" }并创建了node_modules文件夹.

我的文件夹结构是这样的:
根项目文件夹
-functions
--geospatial
--- handler.js
-node_modules
--geopoint

在我的函数/ geospatial/handler.js中,我将geopoint模块声明为:

    var geopoint = require('geopoint');
    var geopoint = require('../../geopoint');
    var geopoint = require('../../../geopoint');
Run Code Online (Sandbox Code Playgroud)

lambda控制台返回错误:

    {
      "errorMessage": "Cannot find module '../../geopoint'",
      "errorType": "Error",
      "stackTrace": []
    }
Run Code Online (Sandbox Code Playgroud)

如何正确地将外部NPM模块添加到无服务器框架项目?

node.js aws-lambda serverless-framework

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

如何为无服务器-1.0.0框架定义/部署的API添加自定义域?

Serverless-1.0.0-rc.1支持部署可通过AWS API Gateway访问的API.

问题:我需要通过带有SSL证书的自定义域而不是随机分配的(URL https://qwertylgbtqert.execute-api....)来公开部署的API 吗?

可以从内部serverless.yml或无服务器框架完成吗?

这是我简单的服务serverless.yml定义:

service: my-service
provider:
  name: aws
  runtime: nodejs4.3

functions:
  generate:
    handler: handler.generate
    events:
      - http:
         method: get
         path: url
         cors: true
Run Code Online (Sandbox Code Playgroud)

有一个问题与此有关:答案在这里,但没有提供适用的答案.特别是如何从serverless.yml自身内部分配自定义域.

它认为是否有可能创建AWS :: Route53资源并利用它,但我不知道如何在无服务器中执行此操作.

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

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