标签: aws-lambda

AWS Lambda 因 NodeJS 依赖项而失败

在执行具有依赖项的 NodeJS Lambda 函数时,我收到以下错误。在 MacOSX High Sierra v10.13.3 Beta 上运行 NodeJS v8.4.0 和 NPM v5.6.0。

"errorMessage": "/var/task/node_modules/webworker-threads/build/Release/WebWorkerThreads.node: invalid ELF header",
"errorType": "Error",
"stackTrace": [
    "Object.Module._extensions..node (module.js:597:18)",
    "Module.load (module.js:487:32)",
    "tryModuleLoad (module.js:446:12)",
    "Function.Module._load (module.js:438:3)",
    "Module.require (module.js:497:17)",
    "require (internal/module.js:20:19)",
    "bindings (/var/task/node_modules/bindings/bindings.js:81:44)",
    "Object.<anonymous> (/var/task/node_modules/webworker-threads/index.js:1:105)",
    "Module._compile (module.js:570:32)"
]
Run Code Online (Sandbox Code Playgroud)

我把它缩小到“自然”模块,它需要WebWorkerThreads模块触发错误。以下是我的依赖项。

"dependencies": {
    "natural": "^0.5.6",
    "path": "^0.12.7"
}
Run Code Online (Sandbox Code Playgroud)

我在AWS 论坛上提出了这个问题但没有答案,非常感谢堆栈溢出社区可以提供的任何帮助。我已经完成了大量的谷歌搜索,并找到了以下答案。不过,我没有使用自定义模块或 Docker。

lambda web-worker node.js aws-lambda serverless-framework

0
推荐指数
1
解决办法
788
查看次数

在 AWS Lambda 中维护会话状态

如何在AWS Lambda 中维护会话状态?例如,如果我需要查询DynamoDb以获取登录用户的订阅信息,如果用户使用的是AngularJS Web 应用程序,我该如何从 Lambda 函数执行此操作?

我让用户使用Auth0登录,并有一个在 AWS 上验证用户的自定义授权方。但后来我想使用登录用户CognitoID来查询 DynamoDB。

根据 Lambda (node.js) ( https://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-context.html ) 的AWS 文档,您只有有关 Amazon Cognito 身份的信息通过 AWS 移动开发工具包调用时提供程序。

identity.cognitoIdentityId

identity.cognitoIdentityPoolId
Run Code Online (Sandbox Code Playgroud)

但是如果我使用一个使用 AngularJS 和 Auth0 的网络应用程序呢?

好吧,也许在 DynamoDB 中存储用户信息的最简单的解决方案就是在客户端提取JWT,在 AngularJS 中,然后将提取的 Auth0(user_id例如)facebook|12345在 API 请求中发送到 Lambda,Lambda 查询用户是否DynamoDB 中存在,如果不存在则创建新记录。

然后,在对必须查询用户信息的 API 的每个请求中,我发送user_id并在 Lambda 中使用该 ID 查询数据库。这应该是安全的,因为我在自定义授权方验证用户令牌并在请求到达 Lambda 之前拒绝或允许请求。

lambda amazon-web-services aws-lambda auth0

0
推荐指数
1
解决办法
2407
查看次数

从存储在 Amazon S3 中的电子邮件中读取附件

请有人给我一个帮助..

我以原始格式将电子邮件存储在 S3 中(这些电子邮件通过来自 SES 的触发器存储在 S3 中)。然后,当这些对象存储在 S3 中时,另一个触发器调用 lambda .. 它工作正常......所以,这些电子邮件有附件.. 现在我想将此附件存储在另一个 S3 存储桶中。

我正在尝试这样的事情:

s3.getObject({
Bucket: src_bkt,
Key: src_key
}, function(err, data) {
        if (err) {
            console.log(err, err.stack);
            callback(err);
        } else {
            console.log('data')
            console.log(data)
            console.log("Raw text:\n" + data.Body.toString('ascii'));
            callback(null, null);
        }
    });   
Run Code Online (Sandbox Code Playgroud)

所以在数据变量中我有 S3 文档..如果我做一个 data.body.toString('ascii') 我会收到很多关于电子邮件的信息。包括这个:

From: ************** <************@gmail.com>
Date: Thu, 26 Apr 2018 12:52:51 +0000
Message-ID: <CAHj39+X87rSiuXoDatbKQeOM5izANYmQPh7Mw3zjrZe15guAkQ@mail.gmail.com>
Subject: teste
To: "**********@****.in" <**********@****.in>
Content-Type: multipart/mixed; boundary="000000000000291211056abfdea3"

--000000000000291211056abfdea3
Content-Type: multipart/alternative; boundary="00000000000029120e056abfdea1"

--00000000000029120e056abfdea1
Content-Type: text/plain; charset="UTF-8"

teste com …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-web-services amazon-ses aws-lambda

0
推荐指数
1
解决办法
1173
查看次数

在 AWS Lambda 中连接 AWS RDS (psql)

我在 python 中编写了一个简单的 lambda 函数来从 AWS RDS 获取一些数据。PostgreSQL 是数据库引擎。

conn = psycopg2.connect(host=hostname, user=username, password=password, dbname=db_name,  connect_timeout=50)
Run Code Online (Sandbox Code Playgroud)

我就是喜欢这个。但它没有用。总是返回这样的错误

响应:{“errorMessage”:“2018-06-06T11:28:53.775Z 任务在 3.00 秒后超时”}

我该如何解决这个问题??

python amazon-web-services python-3.x psql aws-lambda

0
推荐指数
1
解决办法
1865
查看次数

尝试在区域之间复制快照时,Lambda 函数抛出“您无权执行此操作”

我正在尝试运行一个测试函数,以便在 AWS 的 2 个区域之间复制单个快照(将来我想自动化它)。但是当我运行测试时它会抛出一个错误

"errorType": "ClientError", "errorMessage": "调用 CopySnapshot 操作时发生错误 (UnauthorizedOperation): 您无权执行此操作。"

这是我的 IAM 的样子:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:*"
            ],
            "Resource": "arn:aws:logs:*:*:*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:Describe*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateSnapshot",
                "ec2:DeleteSnapshot",
                "ec2:CreateTags",
                "ec2:ModifySnapshotAttribute",
                "ec2:ResetSnapshotAttribute"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

这是函数:

import boto3

def lambda_handler(event, context):
client = boto3.client('ec2')
client.copy_snapshot(SourceSnapshotId='snap-xxxxxxxxxxxxxxxxxxxxx',
                     SourceRegion='us-central-1',
                     DestinationRegion='eu-west-3')
Run Code Online (Sandbox Code Playgroud)

json amazon-ec2 amazon-web-services amazon-iam aws-lambda

0
推荐指数
1
解决办法
1828
查看次数

Lambda 的 Aws 免费套餐定价

AWS 网站上,据说 Lambda 的免费套餐每月有 1,000,000 个请求。是 100 万个请求分布在我的 AWS 账户中的所有 Lambda 函数中,还是每个 1 个 Lambda 函数有 100 万个请求?谢谢。

amazon-web-services aws-lambda

0
推荐指数
1
解决办法
355
查看次数

带有 VPC 的 AWS Lambda 函数仅在私有子网中有效

我一直致力于将 Amazon Lambda 函数与 mySQL 数据库和外部 API 的 RDS 连接集成。要访问 API,需要有一个 Internet 网关,然后是允许从0.0.0.0/0.

我有一个公共子网和一个私有子网。公共子网路由到 Internet 网关,而私有子网路由到 NAT。

这让我想到,如果我使用公共子网运行 Lambda 函数,它会连接到 Internet。但是,每次都超时。但是,当我从私有子网中运行 lambda 函数时,它起作用了!因此,NAT 似乎可以工作,因为这是与私有 sunet 相关联的,但仅使用 Internet 网关是行不通的。

有没有人对此有任何解释?

nat subnet vpc amazon-web-services aws-lambda

0
推荐指数
1
解决办法
819
查看次数

AWS Lambda功能保持活力

我在AWS Lambda上有一个nodejs函数,它在Async Parallel中运行多个setTimeout.有些是即时的,有些可能是从现在开始的30分钟.我遇到的问题是它永远不会达到30分钟的超时,因为它会空闲然后死掉.无论如何都要保持lambda函数在等待触发其他超时函数时保持活动状态.

amazon-web-services node.js aws-lambda

-1
推荐指数
2
解决办法
366
查看次数

如何检查 Node.JS AWS Lambda 数据?

我对 Lambda 和 Node.JS 都很陌生。我本来想用 Python 编写这个函数,但老板说他喜欢用 Node 编写。我正在编写一个 AWS Lambda 函数来在一天结束时关闭指定的 EC2 实例。我无法检查describeInstances 是否正在获取正确的数据。

现在代码显示返回String(instances);,但我尝试了许多不同的操作,例如return instances.response.data;在尝试对数据或其他内容进行字符串化时出现错误。

var AWS = require('aws-sdk');
var ec2 = new AWS.EC2();
AWS.config.update({region: 'us-west-2'});

exports.handler = async (event) => {

 var params = {
  Filters: [
     {
    Name: "tag:Parking", 
    Values: [
       "true"
    ]
   }
  ]
 };

var instances = ec2.describeInstances(params, function(err, data) {
   if (err) console.log(err, err.stack); // an error occurred
   else return data; // successful response
 });

 //return Object.getOwnPropertyNames(instances);
 //return instances.response.httpResponse; …
Run Code Online (Sandbox Code Playgroud)

javascript amazon-web-services node.js aws-sdk aws-lambda

-1
推荐指数
1
解决办法
390
查看次数

将图像文件从浏览器上传到 AWS Lambda .Net Core 应用程序会导致文件不可用 - 如何修复?

我正在从我的浏览器上传一张 jpg 图像,作为表单的一部分,到我位于 AWS Lambda 上的 .Net Core web api。它上传但在我尝试使用 ImageSharp 处理它时导致错误。我还注意到上传版本的文件大小几乎是原始文件大小的两倍。请注意,在从 Visual Studio 2019 预览版运行的 Windows 环境中本地上传时没有问题。这是从 Visual Studio 发布到 AWS Lambda 的版本出现问题。

更多信息:图像作为 IForm 中的 IFormFile 进入我的 .NET 控制器。

amazon-web-services .net-core aws-lambda imagesharp

-1
推荐指数
1
解决办法
874
查看次数

将 spring boot 与 amazon lambda 一起使用是正确的吗?

我想要一个解决方案,允许管理 json 对象、调用 SOAP 服务以及通过一组 lambda 服务上的 Spring 数据访问数据库。但在网上我读到 lambda 函数应该非常简单。也许 Spring Cloud 是解决方案?

问候

spring-data spring-boot spring-cloud aws-lambda

-1
推荐指数
1
解决办法
3509
查看次数

AWS - LAMBDA - CLI - 更新功能代码 - 在此区域无法访问

当我尝试通过命令行触发更新功能代码时,出现错误“此区域无法访问”。

我相信我当前位于 eu-west-2 区域的配置文件与 us-east-1 的功能部署相冲突。无需更改我的个人资料和/或区域,允许我的用户访问/写入该区域 lambda 函数的最佳方式是什么

aws lambda update-function-code \
    --function-name  arn:aws:lambda:us-east-1:xxxxxxxx:function:xxxxxx \ 
    --zip-file fileb://lambda_bundle.zip
Run Code Online (Sandbox Code Playgroud)

错误:调用 UpdateFunctionCode 操作时发生错误 (ResourceNotFoundException):在此区域 ('eu-west-2') 中无法访问 'us-east-1' 中的函数

amazon-web-services aws-lambda

-1
推荐指数
1
解决办法
2719
查看次数

AWS Lambda Boto3 python - dynamodb 表上的过滤器表达式抛出错误“errorMessage”:“名称'Attr'未定义”,

我在 dynamodb 表上使用过滤器。它会抛出以下错误。Boto3 文档显示 response = table.scan(FilterExpression=Attr('myattribute').eq('myvalue')

我也做了同样的事情。我想要此表中的项目,其中 agentRole = Receiver

  Response
  {
        "errorMessage": "name 'Attr' is not defined",
        "errorType": "NameError",
        "requestId": "1b2fbee6-5fa2-4951-8689-3d1bfec76e5c",
         "stackTrace": [
              "  File \"/var/task/lambda_function.py\", line 21, in lambda_handler\n    
          response = tableresource.scan(FilterExpression=Attr('agentRole').eq('Receiver'))\n"
       ]
   }
Run Code Online (Sandbox Code Playgroud)

这是代码:

   import json
   import os
   import boto3
   from pprint import pprint

    #Find records that has agentRole as 'Receiver'

    tableName = os.environ.get('TABLE')
    fieldName = os.environ.get('FIELD')
    keytofind = os.environ.get('FILTER')
    fieldname = "agentRole"
    dbclient = boto3.resource('dynamodb')

    def lambda_handler(event, context):
   
         tableresource = dbclient.Table(tableName)
         count = tableresource.item_count
         response …
Run Code Online (Sandbox Code Playgroud)

python boto3 aws-lambda

-1
推荐指数
1
解决办法
1449
查看次数