我目前正在收集和记录我的函数的性能指标,我缺少的唯一指标是启动持续时间(我的函数非常大,压缩了大约 35MB)。我真的需要知道启动需要多长时间,更重要的是,它发生的频率(我感觉它发生的频率更高,因为我的并发执行限制已经提高)。
有没有办法在 Lambda 中检索这些信息?或者有人可以想到通过例如映射模板传递 API 网关调用的当前时间戳的可能性,以便我可以自己计算启动时间?
我有一个名为“环境”的阶段变量设置。
我想将它POST作为 JSON 的一部分在请求中传递。
例子:
阶段变量
JSON
{
"name": "Toli",
"company": "SomeCompany"
}
Run Code Online (Sandbox Code Playgroud)
event 变量应该看起来像;
{
"name": "Toli",
"company": "SomeCompany",
"environment": "development"
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我能想到的最好的是以下映射模板(在集成请求下):
{
"body" : $input.json('$'),
"environment" : "$stageVariables.environment"
}
Run Code Online (Sandbox Code Playgroud)
然后在节点我做
exports.handler = function(event, context) {
var environment = event.environment;
// hack to merge stage and JSON
event = _.extend(event.body, {
environment : environment
});
....
Run Code Online (Sandbox Code Playgroud) 我是 AWS 的新手,并试图弄清楚如何使用 ruby 调用 lambda 函数。有人可以向我提供示例代码以使用 ruby 调用 AWS lambda 函数吗
谢谢
编辑1:尝试代码后,我收到以下错误
nil:NilClass 的未定义方法“匹配”
这是我的代码:
require 'aws/decider'
require 'aws-sdk'
class U_Act
extend AWS::Flow::Activities
activity :b_u do
{
version: "1.0"
}
end
def b_u(c_id)
lambda=Aws::Lambda::Client.new(
access_key_id: “XxXXXXXXXXX”,
secret_access_key: “XXXXXXXXXX”
)
resp = lambda.invoke(
function_name: “s_u_1” # required
)
print "#{resp}"
end
Run Code Online (Sandbox Code Playgroud)
结尾
我有一个由 Kinesis 流触发的 lambda。考虑到我已将批处理大小设置为 5,流会在发送 5 条消息时触发 lambda 吗?还是会触发 5 个不同的 lambda 线程?
有人可以向我解释使用 SNS -> Lambda 与 SNS -> SQS -> Lambda 的优缺点。
我正在寻找为发布/订阅微服务消息传递设置架构,但是在每个 Lambda 前面都有一个队列似乎过多。
我在使用 API Gateway + Lambda 实现可行的版本控制方案时遇到问题。我的要求是在 API 级别进行主要版本控制,然后在服务级别进行次要版本控制。我的环境也分布在各个帐户中,因此暂存不是 env 传播的选项。有没有人使用 AWS API Gateway 成功实现 API 管理?
amazon-web-services aws-lambda api-versioning aws-api-gateway
I have a lambda configured to be triggered when messages are published to SQS queue. Here is the SAM template for deployment.
MyQueue:
Type: AWS::SQS::Queue
Properties:
VisibilityTimeout: 180
DelaySeconds: 90
MyLambda:
Type: AWS::Serverless::Function
Properties:
CodeUri: ../pathToCode
Handler: index.handler
Events:
MySQSEvent:
Type: SQS
Properties:
Queue: !GetAtt MyQueue.Arn
Run Code Online (Sandbox Code Playgroud)
I am using DelaySeconds property of AWS::SQS::QUEUE which apparently doesn't work. My lambda get executed as soon as the message is published to queue. How can I put delay in it?
我目前正在尝试使用S3静态网站,API Gateway和AWS Lambda设计无服务器应用程序。我想将此网站公开,所以每个用户没有API密钥。
我想防止将这些端点滥用到非常低的水平,例如给定的公共IP每5秒发出1个请求。
AWS Shield或其中任何一种服务都可能吗?
我使用.Net Core 2.1创建了一个简单的空AWS Lambda函数:
这是文件夹结构:
(这是csproj)
还有一个FunctionHandler,它获取DI并调用一些虚拟方法:
现在运行“ Mock Lambda测试工具”,我们可以看到它有效:
那么问题出在哪里呢?
这意味着您现在可以使用.NET Core 2.2和.NET Core 3.0预览编写Lambda函数。Amazon.Lambda.RuntimeSupport可作为GitHub上的源代码或NuGet包提供。
因此,我创建了一个新的空lambda项目,但使用2.2:
相同的代码。但是现在当我运行“ Mock Lambda测试工具”时,出现了一个错误:
AWS .NET Mock Lambda测试工具(0.9.2)发生未知错误,导致进程退出:无法在E:\ JenkinsWorkspaces \ Lam中的Amazon.Lambda.TestTool.Runtime.LocalLambdaRuntime.Initialize(String directory)上找到deps.json文件。 \ E:JenkinsWorkspaces \ Lam \ LambdaSandboxCoreCLRApi \ Tools \ LambdaSandboxCoreCLRApi \ Tools \ LambdaTestTool \ Amazon.Lambda.TestTool \ Runtime \ LocalLambdaRuntime.cs:Amazon.Lambda.TestTool.Program.Main(String [] args)处的第50行\ Amazon.Lambda.TestTool \ Program.cs:line 46按任意键退出
这是错误:
题:
这是为什么?我deps.json在2.1中没有任何文件。
那么,为什么在2.2中需要它?另外,此路径在错误中显示的是什么:E:\JenkinsWorkspaces...?我没有詹金斯,也没有类似的东西。
几天前,我们收到了有关“ Lambda操作通知”的通知,将我们的Node.js 8.10运行时更新为Node.js 10.x运行时。
响应此通知,我们在开发系统中安装了Node.js版本v10.16.3,并测试了现有代码。我们发现代码在我们的开发系统中运行良好,但是当我们在带有Node.js 10.x运行时的AWS Lambda中测试相同的代码时,出现以下错误:
2019-10-28T12:03:31.771Z 8e2472b4-a838-4ede-bc70-a53aa41d9b79 INFO错误:服务器在EarlyTermination.catch.e(/ var / task / node_modules / selenium-webdriver / remote / index。 js:251:52)在process._tickCallback(内部/进程/next_tick.js:68:7)
'aws-sdk','selenium-webdriver'npm软件包和google chrome二进制文件是我们项目中唯一使用的依赖项。
我们的项目具有以下文件结构。
/var/task/
??? index.js
??? lib
? ??? chrome
? ??? chromedriver
? ??? libgconf-2.so.4
? ??? libORBit-2.so.0
? ??? libosmesa.so
??? node_modules
??? selenium-webdriver
??? ...
Run Code Online (Sandbox Code Playgroud)
由于此代码不会在我们的开发系统中引发任何错误,因此我们怀疑它与新的运行时有关。
我们尝试使用setChromeBinaryPath()设置二进制路径
这是我们正在使用的代码。调用build()方法时发生错误。
var webdriver = require('selenium-webdriver');
var chrome = require('selenium-webdriver/chrome');
var builder = new webdriver.Builder().forBrowser('chrome');
var chromeOptions = new chrome.Options();
const defaultChromeFlags = [
'--headless',
'--disable-gpu',
'--window-size=1280x1696', // …Run Code Online (Sandbox Code Playgroud) aws-lambda ×10
amazon-sqs ×2
.net-core ×1
aws-sam ×1
c# ×1
delay ×1
node.js ×1
ruby ×1
throttling ×1
triggers ×1