标签: aws-lambda

通过virtualenv在AWS Lambda上进行Tesseract OCR

我花了整整一周的时间尝试这个,所以这是一个冰雹玛丽.

我试图将Tesseract OCR打包到运行在Python上的AWS Lambda(我也使用PILLOW进行图像预处理,因此选择了Python).

我理解如何使用virtualenv将Python软件包部署到AWS,但是我似乎无法找到将实际的Tesseract OCR部署到环境中的方法(例如/ env /)

  • 这样做pip install py-tesseract在Python包装成/ ENV /的成功部署的结果,但是这依赖于一个单独的(本地)安装正方体的
  • pip install tesseract-ocr在我错误输出之前做的事情让我只有一定距离,我假设是由于缺少leptonica依赖.但是,我不知道如何将leptonica打包成/ env /(如果可能的话)
tesseract_ocr.cpp:264:10: fatal error: 'leptonica/allheaders.h' file not found
#include "leptonica/allheaders.h"
Run Code Online (Sandbox Code Playgroud)
Processing dependencies for python-tesseract==0.9.1
Searching for python-tesseract==0.9.1
Reading https://pypi.python.org/simple/python-tesseract/
Couldn't find index page for 'python-tesseract' (maybe misspelled?)
Scanning index of all packages (this may take a while)
Reading https://pypi.python.org/simple/
No local packages or download links found for python-tesseract==0.9.1
Run Code Online (Sandbox Code Playgroud)

任何指针都将非常感激.

python tesseract virtualenv amazon-web-services aws-lambda

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

AWS Cloudwatch日志流名称无法识别

所以,

我正在使用AWS Lambda的自动日志记录.它生成的日志流的名称如下所示:2016/05/18/[$LATEST]99577d10a8cb420cb124a90c20d5653a

我可以使用'aws logs describe-log-streams'查询可用的日志流,并获取一些包含这些名称的JSON以及其他元数据.

但是,如果我尝试这样做:

aws logs get-log-events --log-group-name /aws/lambda/categorise --log-stream-name "2016/05/18/[$LATEST]99577d10a8cb420cb124a90c20d5653a"
Run Code Online (Sandbox Code Playgroud)

我收到一个错误

A client error (ResourceNotFoundException) occurred when calling the GetLogEvents operation: The specified log stream does not exist.
Run Code Online (Sandbox Code Playgroud)

因此,如果describe log streams命令返回的日志流名称实际上不存在.它是什么?

我已经尝试了一下这个命令,删除它[$LATEST],引用它,逃避它.但没有快乐.有没有人设法使用aws cli检索他们的Lambda日志事件?

amazon-web-services aws-cli aws-lambda

15
推荐指数
1
解决办法
5028
查看次数

为什么AWS Lambda功能总是超时?

我正在测试aws lambda,使用4.3版本的nodejs.我能够在控制台测试中成功完成处理函数中的所有语句,包括连接到我们的vpc中的mongodb主机.但是,该功能总是超时.我发现了几个讨论使用回调,设置上下文属性和IAM角色权限的帖子和资源,但无论我做什么,它总是会超时.当前代码:

'use strict';

var Mongoose = require('mongoose');
var Device = require('./device_model');
var Alarm = require('./alarm_model');
var Event = require('./event_model');

var mongoConnection = process.env.MONGO_URL;

var connection = Mongoose.connect(mongoConnection);

Mongoose.connection.once('open', function() {
    console.log("Connecting to mongo at: " + mongoConnection);
    console.log("Mongoose connection in lambda opened");
});

Mongoose.connection.on('error', function(){
    console.error("Error creating mongoose connection in lambda, exiting!");
    process.exit(1);
});

exports.check_alarms = function(event, context, callback) {

    context.callbackWaitsForEmtpyEventLoop = false;
    console.log("The incoming event: " + JSON.stringify(event));

    var device = null;
    Device.findByUUID(event.uuid, function(error, result){
        if(!error){
            device = …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services node.js aws-lambda

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

AWS Lambda Container销毁事件

何时释放lambda中的连接和清理资源.在普通的Node JS应用程序中,我们使用钩子

process.on('exit', (code) => {
    console.log(`About to exit with code: ${code}`);
});
Run Code Online (Sandbox Code Playgroud)

但是,这不适用于AWS Lambda.导致睡眠模式下的Mysql连接.我们没有足够的资源用于此类活动连接.AWS文档均未指定实现此目的的方法.

如何接收AWS Lambda容器的停止事件?

containers node.js aws-lambda serverless-framework

15
推荐指数
1
解决办法
2863
查看次数

没有为方法定义集成 - 选择将部署API的阶段

我正在使用AWS API Gateway和AWS Lambda.在尝试部署API时,我经常会遇到此类错误消息.错误消息表示选择部署阶段.但我仍然选择并尝试部署!但同样的错误发生!

弹出错误消息的屏幕截图

在这个API中,我有多个具有多种方法的资源.以前我成功地以相同的方式部署这个相同的API.但现在我无法部署它.

请有人帮我修理它.另外:我不使用AWS CLI工具,只使用AWS Web仪表板.

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

15
推荐指数
2
解决办法
6616
查看次数

VPC删除中的Lambda需要更多时间

我使用云形成在VPC中创建了一个lambda的堆栈.当我尝试删除整个堆栈时,需要40-45分钟的时间.

我的Iam角色具有以下权限:

Action:                            
          - ec2:DescribeInstances
          - ec2:CreateNetworkInterface
          - ec2:AttachNetworkInterface
          - ec2:DescribeNetworkInterfaces
          - ec2:DeleteNetworkInterface
          - ec2:DetachNetworkInterface
          - ec2:ModifyNetworkInterfaceAttribute
          - ec2:ResetNetworkInterfaceAttribute
          - autoscaling:CompleteLifecycleAction
          - iam:CreateRole
          - iam:CreatePolicy
          - iam:AttachRolePolicy
          - iam:PassRole
          - lambda:GetFunction
          - lambda:ListFunctions
          - lambda:CreateFunction
          - lambda:DeleteFunction
          - lambda:InvokeFunction
          - lambda:GetFunctionConfiguration
          - lambda:UpdateFunctionConfiguration
          - lambda:UpdateFunctionCode
          - lambda:CreateAlias
          - lambda:UpdateAlias
          - lambda:GetAlias
          - lambda:ListAliases
          - lambda:ListVersionsByFunction
          - logs:FilterLogEvents
          - cloudwatch:GetMetricStatistics
Run Code Online (Sandbox Code Playgroud)

如何改善堆栈的删除时间?

aws-cloudformation aws-lambda

15
推荐指数
1
解决办法
5476
查看次数

我们如何在 AWS 控制台中按“最新”对 CloudWatch 流日志进行排序?

有没有办法在 AWS 控制台中按“最近”到最旧来过滤 CloudWatch 日志流?我不得不向下滚动得难以置信的远才能看到我最近的日志消息。

我尝试过按 30 秒 - 5 分钟进行过滤,现在可以使用,我只是认为可能有一种更简单的方法来列出所有日志流,这些日志流从最近的顶部而不是最旧的开始。

amazon-web-services aws-lambda amazon-cloudwatchlogs

15
推荐指数
1
解决办法
6783
查看次数

Lambda 服务抛出错误执行角色无权在 SQS 上调用 receiveMessage

我有一个 SQS 队列,我想在消息到达队列时触发 lambda 函数。我已经编写了 lambda 函数,当我单击“测试”按钮时它可以成功运行。当我转到 SQS 并尝试将其配置为 lambda 触发器时,我看到以下错误消息。

我使用相同的用户和角色创建了 SQS 队列和 lambda 函数,并且 lambda 函数对同一角色具有执行权限。

我还添加了 SQS receiveMessage 权限,但它似乎没有什么区别,除非我在设置时做错了什么。

什么可能导致问题?

谢谢你的帮助

在此处输入图片说明

amazon-sqs amazon-web-services aws-lambda

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

当我的代码中没有语法错误时,为什么会出现 UserCodeSyntaxError?

我目前正在 nodejs 中创建一个 Dialogflow 聊天机器人,在部署我的代码时,我收到一条错误消息。我试图取消对大多数事情的注释,只留下基本功能代码,但我仍然无法让它工作。我不完全确定这里的问题是什么

'use strict';
  import {getAPIresponse} from "./api/index.js";

// const http = require('https');

// const respond = fulfillmentText => {
//   return {
//     statusCode: 200,
//     body: JSON.stringify({
//       fulfillmentText
//     }),
//     headers: {
//       "Content-Type": "application/json"
//     }
//   }
//
// };

module.exports.dining = async (event,context) => {


    const incoming= JSON.parse(event.body).queryResult;

    console.log(`INCOMING: ${incoming.parameters.hall}`);

    const {
      displayName
    } = incoming.intent;

    console.log(displayName);


    //const menu = getAPIresponse('https://esb.prod.uds.harvard.edu/api/dining/2.0/','events?locationId=36');
    //console.log(menu);
    // if(displayName === 'dining'){
    //   if(incoming.parameters.meal === 'breakfast'){ …
Run Code Online (Sandbox Code Playgroud)

node.js aws-lambda serverless

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

AWS Lambda@Edge 不记录

我已将查看器请求和源响应 Lambda 函数部署到 CloudFront 分配,这些函数正在触发,但未记录到 CloudWatch。我花了大量时间研究这个主题,并浏览了其他帖子的所有建议,包括:

  • 检查所有区域的日志,因为我知道它们 CloudWatch 日志将在 labmda@edge 函数运行的区域中创建。没有登录任何一个。
  • 我已检查 AWSServiceRoleForCloudFrontLogger 角色是否存在。

有趣的是,当我故意将错误编码到一个 Lambda 函数中时,我确实在一个名为/aws/cloudfront/LambdaEdge/<cloudfront distribution id>包含错误日志的组中创建了日志,但是这里的 console.log 语句没有输出。

在我的一生中,我无法弄清楚如何将所有请求(成功和失败)记录到 CloudWatch,其中包含使用 console.log() 的调试语句。

AWSServiceRoleForCloudFrontLogger 包含一个策略AWSCloudFrontLogger:

    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "arn:aws:logs:*:*:/aws/cloudfront/*"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

编辑:

以下是 AWS 支持建议的 AWS 角色。我可以确认这有效并解决了问题。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:*:*:*"
            ]
        }
    ]
}```
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-cloudfront aws-lambda aws-lambda-edge

15
推荐指数
1
解决办法
1819
查看次数