在执行具有依赖项的 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。
如何在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 之前拒绝或允许请求。
请有人给我一个帮助..
我以原始格式将电子邮件存储在 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) 我在 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 秒后超时”}
我该如何解决这个问题??
我正在尝试运行一个测试函数,以便在 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) 在AWS 网站上,据说 Lambda 的免费套餐每月有 1,000,000 个请求。是 100 万个请求分布在我的 AWS 账户中的所有 Lambda 函数中,还是每个 1 个 Lambda 函数有 100 万个请求?谢谢。
我一直致力于将 Amazon Lambda 函数与 mySQL 数据库和外部 API 的 RDS 连接集成。要访问 API,需要有一个 Internet 网关,然后是允许从0.0.0.0/0.
我有一个公共子网和一个私有子网。公共子网路由到 Internet 网关,而私有子网路由到 NAT。
这让我想到,如果我使用公共子网运行 Lambda 函数,它会连接到 Internet。但是,每次都超时。但是,当我从私有子网中运行 lambda 函数时,它起作用了!因此,NAT 似乎可以工作,因为这是与私有 sunet 相关联的,但仅使用 Internet 网关是行不通的。
有没有人对此有任何解释?
我在AWS Lambda上有一个nodejs函数,它在Async Parallel中运行多个setTimeout.有些是即时的,有些可能是从现在开始的30分钟.我遇到的问题是它永远不会达到30分钟的超时,因为它会空闲然后死掉.无论如何都要保持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) 我正在从我的浏览器上传一张 jpg 图像,作为表单的一部分,到我位于 AWS Lambda 上的 .Net Core web api。它上传但在我尝试使用 ImageSharp 处理它时导致错误。我还注意到上传版本的文件大小几乎是原始文件大小的两倍。请注意,在从 Visual Studio 2019 预览版运行的 Windows 环境中本地上传时没有问题。这是从 Visual Studio 发布到 AWS Lambda 的版本出现问题。
更多信息:图像作为 IForm 中的 IFormFile 进入我的 .NET 控制器。
我想要一个解决方案,允许管理 json 对象、调用 SOAP 服务以及通过一组 lambda 服务上的 Spring 数据访问数据库。但在网上我读到 lambda 函数应该非常简单。也许 Spring Cloud 是解决方案?
问候
当我尝试通过命令行触发更新功能代码时,出现错误“此区域无法访问”。
我相信我当前位于 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' 中的函数
我在 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) aws-lambda ×13
node.js ×3
lambda ×2
python ×2
.net-core ×1
amazon-ec2 ×1
amazon-iam ×1
amazon-s3 ×1
amazon-ses ×1
auth0 ×1
aws-sdk ×1
boto3 ×1
imagesharp ×1
javascript ×1
json ×1
nat ×1
psql ×1
python-3.x ×1
spring-boot ×1
spring-cloud ×1
spring-data ×1
subnet ×1
vpc ×1
web-worker ×1