如何重命名Azure功能?
我想将默认的'HttpTriggerCSharp1'名称替换为我自己的名称.目前遗憾的是,此名称包含在函数URL中,并且没有更改它的选项:
https://functions-xxx.azurewebsites.net/api/HttpTriggerCSharp1
azure azure-webjobs serverless-framework azure-functions serverless-architecture
您认为在AWS API Gateway中使用和不使用代理功能的Lambda集成的优点和缺点是什么(更具体地说,在使用无服务器框架时)?这是我现在的想法:
Lambda与代理集成
没有代理的Lambda集成
你的想法是什么?您通常使用Lambda Proxy还是普通的Lambda集成?你喜欢什么,为什么?
编辑:到目前为止,我倾向于总是选择不使用代理功能,因为提到的原因(解耦和说明依赖关系 - 标题,状态代码等 - 预先).
我相当新,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部署的实际监听器在哪里?
我一直在尝试在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) 我有一个用node.js express开发的移动应用程序后端.我尝试将其部署为lambda服务.为此,我创建了一个无服务器框架项目(https://github.com/serverless).之前我通过启动快速后端应用程序在本地测试了移动应用程序.现在我找不到一种方法来在没有本地后端的情况下在本地测试我的移动应用程序.jaws run命令只在我调用它时运行.
是否有任何方法可以将lambda函数作为Web服务启动?或者是否有无服务器框架的替代方案?
python amazon-web-services node.js aws-lambda serverless-framework
我正在开发一个无服务器的无需项目,需要在本地测试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) 我有一个运行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
我正在使用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
我的情况是我在向我的无服务器框架项目添加外部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模块添加到无服务器框架项目?
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