我编写了AWS lambda函数,因为我想从属性文件中读取数据库连接详细信息,并且在我的类路径中,但是我无法加载该文件.这是我的代码:
InputStream input = DBConfiguartion.class.getResourceAsStream("appsettings");
Reader r = new InputStreamReader(input, "UTF-8");
Properties prop = new Properties();
prop.load(r);
Run Code Online (Sandbox Code Playgroud)
如果我通过普通的java控制台应用程序运行此代码,那时它正在运行,但每当我将其作为AWS lambda函数运行时, InputStream将变为null.
我使用cloudwatch预定事件在特定时间间隔后触发我的lambda函数.我想使用云形成模板在cloudwatch中添加此规则.我已经浏览了cloudformation模板文档,但我无法找到使用云形成模板配置事件的方法.任何人都可以建议如何使用云形成模板实现它.
我正在使用下面的模板.
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Provision environment specific",
"Resources": {
"lambdaScheduler": {
"Type": "AWS::CloudWatch::Event",
"Properties": {
"detail-type": "Scheduled Event",
"source": "aws.events",
"name": "TEST_EVENT_10_MINS_RULE",
"schedule-expression": "rate(5 minutes)"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
A client error (ValidationError) occurred when calling the ValidateTemplate operation: Template format error: Unrecognized resource type: AWS::CloudWatch::Event当我使用aws cli验证它时,我收到错误消息.
amazon-web-services aws-cloudformation amazon-cloudwatch aws-lambda amazon-cloudwatchlogs
我想使用的路径PARAM /customer/{customerId}一个的GET请求,以便使用AWS LAMBDA查询客户:
functions:
createCustomer:
handler: handler.createCustomer
events:
- http:
path: customer
method: post
readCustomer:
handler: handler.readCustomer
events:
- http:
path: customer
method: get
Run Code Online (Sandbox Code Playgroud)
我如何定义路径参数以便使用无服务器框架1.0将其传递给我的AWS Lambda函数?
我一直在研究这个项目,因为让整个系统成为Lambda函数集合的想法似乎非常有吸引力.事实上,几年前我写了一些与MoonMail几乎完全相同的软件,并且由于某些规格已经改变而需要更新.我正在评估将我的软件移植到Lambda或只是调整使用MoonMail的东西.
我有以下问题:
在我使用Serverless的测试中,我注意到当我更改资源名称(如DynamoDb表的名称)并重新部署时,没有警告,旧表及其内容被销毁.我认为像配置文件中的额外字符这样的简单错误导致删除数据库中的所有数据是非常危险的.你是如何处理这类问题的?
关于通过SES发送电子邮件.当您达到特定帐户的发送限制时,如何处理限制?你做指数退避吗?我似乎无法在代码库中找到它.如果你能指出我在回购的一般区域发生这种情况,我将非常感激.
当前,每当尝试在AWS Lambda上测试Lambda函数时,我都会收到ClassNotFoundException。异常显示在这里:
我已经在线搜索过,包括此处的以下链接:AWS Lambda:class java.lang.ClassNotFoundException,无济于事。
我正在Android Studio中工作,并创建了一个JAR文件(使用此链接:如何从Android Studio项目中制作一个.jar),用于将类上传到AWS Lambda控制台。
下面是我的项目的结构:
当我将JAR文件上传到AWS Lambda控制台时,“配置”选项卡如下所示:[
以前有人告诉我,这可能是因为我的JAR文件不是带有MANIFEST.MF文件的可执行JAR文件,但是我绝对有。
还有其他原因导致此错误持续出现以及如何解决?
我在AWS Compute Blog中找到了以下代码示例:
package main
import (
"github.com/aws/aws-lambda-go/events"
"github.com/aws/aws-lambda-go/lambda"
)
func handler(request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
return events.APIGatewayProxyResponse{
StatusCode: 200,
Body: "Hello World",
}, nil
}
func main() {
lambda.Start(handler)
}
Run Code Online (Sandbox Code Playgroud)
由于lambda.Start只接受一个处理程序而Go程序的入口点是主函数,这是否意味着一个CodeStar项目只能由一个处理程序组成?
我理解lambda函数的大小应该很小,最好处理一个功能,但似乎需要创建很多项目并且很难管理.我理解正确吗?
对于node.js 使用清晰图像调整大小库https://github.com/lovell/sharp时,图像正在旋转.
我没有代码说.rotate(),为什么它被旋转,我怎么能阻止它旋转?
我使用的是由AWS提供的无服务器,图像缩放例如: https://github.com/awslabs/serverless-image-resizing使用拉姆达在飞行中调整图像如果缩略图不存在
S3.getObject({Bucket: BUCKET, Key: originalKey}).promise()
.then(data => Sharp(data.Body)
.resize(width, height)
.toFormat('png')
.toBuffer()
)
.then(buffer => S3.putObject({
Body: buffer,
Bucket: BUCKET,
ContentType: 'image/png',
Key: key,
}).promise()
)
.then(() => callback(null, {
statusCode: '301',
headers: {'location': `${URL}/${key}`},
body: '',
})
)
.catch(err => callback(err))
Run Code Online (Sandbox Code Playgroud)
原始大图:
已调整大小的图片:请注意它已被旋转:
C#中的AWS Lambda函数处理程序是否提供取消令牌?
我已经阅读了AWS网站上的文档(https://docs.aws.amazon.com/lambda/latest/dg/dotnet-programming-model-handler-types.html),但在任何提及取消的地方都看不到令牌。我还检查了ILambdaContext传递给执行方法的,但是那里什么也没有。
我以前使用过Azure Functions,它们只是将它作为本文所述的函数的另一个参数传递给了我:https : //docs.microsoft.com/zh-cn/azure/azure-functions/functions-dotnet-类别库#取消令牌
我正在尝试创建一个集中模块来设置我的日志格式化程序,以便在我的lambda函数中的多个python模块之间共享.此功能最终将在本地内部部署设备上的AWS Greengrass上运行.
出于某种原因,当我添加自己的处理程序来格式化消息时,日志将被输出两次 - 一次是在正确的日志级别,第二次是在错误的级别.
如果我使用标准的python记录器而不设置任何处理程序,它可以正常工作,例如
main.py:
import logging
logging.debug("test1")
Run Code Online (Sandbox Code Playgroud)
cloudwatch logs:
12:28:42 [DEBUG]-main.py:38,test1
Run Code Online (Sandbox Code Playgroud)
我的目标是在我的代码上有一个格式化程序,它将这些日志消息格式化为JSON.然后它们将被摄入集中式日志记录数据库.但是,当我这样做时,我得到两次日志消息.
loghelper.py:
def setup_logging(name):
formatter = logging.Formatter("%(name)s, %(asctime)s, %(message)s")
handler = logging.StreamHandler(sys.stdout)
handler.setFormatter(formatter)
logger = logging.getLogger(name)
if logger.handlers:
for handler in logger.handlers:
logger.removeHandler(handler)
logger.setLevel(logging.DEBUG)
logger.addHandler(handler)
return logger
Run Code Online (Sandbox Code Playgroud)
main.py:
import logging
logger = loghelper.setup_logging('main.test_function')
def test_function():
logger.debug("test function log statement")
test_function()
Run Code Online (Sandbox Code Playgroud)
现在运行lambda函数时,我在云监视日志中收到两次调试消息,如下所示:
cloudwatch logs:
12:22:53 [DEBUG]-main.py:5, test function log statement
12:22:53 [INFO]-__init__.py:880,main.test_function,2018-06-18 12:22:53,099, test function log statement
Run Code Online (Sandbox Code Playgroud)
请注意:
我无法解释这种行为,并会对可能导致这种行为的任何想法表示感谢.我也不知道第880行存在哪个构造函数.这可能会对正在发生的事情有所了解.
参考文献: …
aws-lambda ×10
node.js ×3
amazon-s3 ×2
aws-sdk ×2
android ×1
aws-java-sdk ×1
c# ×1
go ×1
greengrass ×1
html-pdf ×1
java ×1
logging ×1
moonmail ×1
python ×1
sharp ×1