我正在使用 Lambda 处理程序加载腌制的机器学习模型,因此我需要 sklearn(如果未包含,我会收到“ModuleNotFoundError:没有名为 'sklearn' 的模块”)
因此,我使用 sklearn 在 Docker 中创建了一个新的部署包。
但是当我尝试上传新的 lambda.zip 文件时,我无法保存 lambda 函数。我收到错误:解压后的大小必须小于 262144000 字节
我做了一些谷歌搜索,发现了两个建议:(1)将 CLFAG 与 PIP 结合使用,(2)使用 Lambda Layers。
我不认为图层会起作用。将我的部署包的部分内容移动到层不会减少总大小(并且AWS 文档指出“函数和所有层的解压缩总大小不能超过解压部署包大小限制 250 MB”。
CFLAGS 听起来很有希望,但我以前从未使用过 CFLAGS,并且遇到了错误。
我正在尝试添加标志:-Os -g0 -Wl,--strip-all
在 CLFAGS 之前,我的 docker pip 命令是:pip3 install requests pandas s3fs datetime bs4 sklearn -t ./
首先我尝试:pip3 install requests pandas s3fs datetime bs4 sklearn -t -Os -g0 -Wl,--strip-all ./
这产生了各种错误“没有这样的选项:-g”
然后我尝试了CFLAGS = -Os -g0 -Wl,--strip-all pip3 …
我尝试将图像上传到 S3 使用serverless和 NodeJS,但上传后出现问题。在本地使用中,serverless-offline一切都像冠军一样工作,但部署后我收到此错误。然后我尝试拦截并检测发生了什么并看到这个结果:
图像主体中出现了一些奇怪的字符,例如<0x0a> 0x01 0x04
我也尝试过使用serverless-apigw-binary,但运气不好。
我有 API Gateway 作为 lambda 函数的触发器。每当我的 lambda 引发异常时,它就会与集成响应中配置的模式匹配。问题是,如果异常包含换行符,则该模式将被忽略,并且默认返回 200 作为状态代码。
要重现该问题:
注意:如果从异常消息中删除换行符,它会正常工作并按预期返回 500。
有人遇到同样的问题吗?有什么解决办法吗?
http-status-codes amazon-web-services aws-lambda aws-api-gateway
我使用运行时 Python 3.8 将以下代码部署到 AWS Lambda。
\n\ntry:\n raise Exception(\'my exception\')\nexcept Exception as e:\n raise ValueError(\'my exception 2\') from e\nRun Code Online (Sandbox Code Playgroud)\n\n在 CloudWatch 中,我希望看到像这样的异常链:
\n\nTraceback (most recent call last):\n File "/var/task/handler.py", line 2, in <module>\n raise Exception(\'my exception\')\nException: my exception\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File "/var/task/handler.py", line 4, in <module>\n raise ValueError(\'my exception 2\') from e\nValueError: my exception 2\nRun Code Online (Sandbox Code Playgroud)\n\n相反,我只看到 CloudWatch 中报告的第一个异常,如下所示:
\n\n[ERROR] ValueError: my exception 2\nTraceback …Run Code Online (Sandbox Code Playgroud) 我是 AWS 新手。我正在尝试使用 Lambda 函数连接到 AWS RDS postgreSQL 实例。我遵循了aws 文档。但它使用 python 来执行 Lambda 函数。下面是我的代码。
'use strict';
var pg = require('pg');
exports.handler = function (event, context) {
var dbConfig = {
username: '<username>',
password: '<password>',
database: '<database>',
host: '<db-endpoint>',
};
var client = new pg.Client(dbConfig);
try {
client.connect();
context.callbackWaitsForEmptyEventLoop = false;
client.end();
}
catch (err) {
console.log(err);
client.end();
}
};Run Code Online (Sandbox Code Playgroud)
我收到如下超时错误
START RequestId: 368e619e-ed9d-4241-93a5-764ee01aa847 Version: $LATEST
2020-06-15T16:28:18.911Z 368e619e-ed9d-4241-93a5-764ee01aa847 INFO connected
END RequestId: 368e619e-ed9d-4241-93a5-764ee01aa847
REPORT RequestId: 368e619e-ed9d-4241-93a5-764ee01aa847 Duration: 20020.16 ms …Run Code Online (Sandbox Code Playgroud) 我有一个 Lambda 函数,当消息发送到 SQS 队列时,它将发送 SNS 通知。但我观察到 Lambda 会在处理完消息后从队列中删除该消息,并且此处提到了这一点
有没有一种方法可以让 lambda 失败,而不用在 java.lang.String 中实际抛出新的异常。
我想创建一个 lambda 函数,每当创建新的 EC2 实例时都会触发该函数,此 Lambda 函数应自动在此新实例上配置 StatusCheck 警报。这样我就不必在每次创建新实例时手动配置 cloudwatch 警报。有人可以帮助编写完成此任务的 lambda 函数代码吗?
我有这样的事情:
response = client.put_metric_alarm(
AlarmName='StatusCheckFailed-Alarm-for-i-1234567890abcdef0',
AlarmActions=[
'arn:aws:sns:us-west-2:111122223333:my-sns-topic',
],
MetricName='StatusCheckFailed',
Namespace='AWS/EC2',
Statistic='Maximum',
Dimensions=[
{
'Name': 'InstanceId',
'Value': 'i-1234567890abcdef0'
},
],
Period=300,
Unit='Count',
EvaluationPeriods=2,
Threshold=1,
ComparisonOperator='GreaterThanOrEqualToThreshold')
Run Code Online (Sandbox Code Playgroud)
但我必须将 cloudwatch 规则中的实例 ID 作为输入映射到 Lambda。由于该函数会自动触发,因此无法每次手动输入实例 ID。
我正在使用 AWS Cloudfront 和 API 网关作为文件上传 API。我已将相同的代码部署到两个不同但相同的环境。这两个环境都是由相同的 cloudformation 脚本构建的。我们遇到了一个奇怪的问题
当我们在环境 A 中上传文件时,我们收到以下请求
"headers": {
"content-type": "multipart/form-data; boundary=----WebKitFormBoundarygPe3hR4e1dTzLdBt",
Run Code Online (Sandbox Code Playgroud)
然而,在环境中,BI 正在关注
"headers": {
"Content-Type": "multipart/form-data; boundary=----WebKitFormBoundarygPe3hR4e1dTzLdBt",
Run Code Online (Sandbox Code Playgroud)
区别在于内容类型。在环境 A 中,我得到小写的 Content-Type。不知道为什么。此行为在所有浏览器中都是一致的。
我在用着:
我正在连接到数据库,就像 github 中描述的那样,
const connection = await createConnection({
type: 'aurora-data-api-pg',
database: 'test-db',
secretArn: 'arn:aws:secretsmanager:eu-west-1:537011205135:secret:xxxxxx/xxxxxx/xxxxxx',
resourceArn: 'arn:aws:rds:eu-west-1:xxxxx:xxxxxx:xxxxxx',
region: 'eu-west-1'
})
Run Code Online (Sandbox Code Playgroud)
这就是我在 Lambda 函数中使用它的方式
export const testConfiguration: APIGatewayProxyHandler = async (event, _context) => {
let response;
try {
const connectionOptions: ConnectionOptions = await getConnectionOptions();
const connection = await createConnection({
...connectionOptions,
entities,
});
const userRepository = connection.getRepository(User);
const users = await userRepository.find();
response = {
statusCode: 200,
body: JSON.stringify({ users }),
}; …Run Code Online (Sandbox Code Playgroud) aws-lambda serverless-framework typeorm aws-aurora-serverless
aws-lambda ×10
amazon-rds ×1
amazon-sqs ×1
api ×1
automation ×1
image-upload ×1
java ×1
node.js ×1
pip ×1
postgresql ×1
python ×1
python-3.x ×1
scikit-learn ×1
serverless ×1
typeorm ×1