我已经在cloudformation中定义了我的lambda/roles,并且还希望使用它来添加预定的事件源......是否有任何文档或示例?
我很难使用基于Java的Lambda函数设置来接收来自SNS的消息.我的功能如下所示:
package com.mycompany;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.LambdaLogger;
import com.amazonaws.services.lambda.runtime.events.SNSEvent;
public class LambdaHandler {
public void Handler(SNSEvent event, Context context) {
//Process the event
}
}
Run Code Online (Sandbox Code Playgroud)
它编译得很好,我没有任何问题上传jar文件到Lambda(通过Web控制台).
但是,当我使用表示SNSEvent模型的JSON发布它(通过SNS到订阅的Lambda函数)时,Lambda函数抛出以下异常:
在类com.mycompany.LambdaHandler上加载方法处理程序时出错:class java.lang.NoClassDefFoundError java.lang.NoClassDefFoundError:com/amazonaws/services/lambda/runtime/events/SNSEvent at
爪哇java.lang.Class.Class.AvlaredMethods(Class.java:2701)的java.lang.Class.getDeclaredMethods0(本地方法)java.lang.Class.TM中的java.lang.Class.privateGetPublicMethods(Class.java:2902) Class.java:1615)引起:java.lang.ClassNotFoundException:com.amazonaws.services.lambda.runtime.events.SNSEvent at java.net.URLClassLoader.findClass(URLClassLoader.java:381)at java.lang.ClassLoader. java.lang.ClassLoader.loadClass(ClassLoader.java:357)中的loadClass(ClassLoader.java:424)
我使用Maven + Netbeans,它是一个Maven Java Application项目.我从Lambda控制台下载了该函数并确认,该jar有一个lib /目录,其中包含所有用于导入的jar,包括aws-lambda-java-events-1.1.0.jar,它本身包含/ com/amazonaws /services/lambda/runtime/events/SNSEvent.class文件.
为什么运行时无法在jar文件中找到类?还有什么我需要做的,设置任何环境变量等吗?
任何帮助,将不胜感激!
编辑1 我尝试降级到aws-lambda-java-events 1.0.0并且它仍然报告相同的异常.根据要求,下面是我的POM文件(只更改了项目名称).我不知道如何告诉Maven将库放在树形结构中.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.app</groupId>
<artifactId>Handler</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-lambda</artifactId>
<version>1.10.6</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-core</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-events</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies> …Run Code Online (Sandbox Code Playgroud) 在AWS Lambda中使用python,如何从DynamoDB表中放入/获取项目?
在Node.js中,这将是这样的:
dynamodb.getItem({
"Key": {"fruitName" : 'banana'},
"TableName": "fruitSalad"
}, function(err, data) {
if (err) {
context.fail('Incorrect username or password');
} else {
context.succeed('yay it works');
}
});
Run Code Online (Sandbox Code Playgroud)
我需要的只是python等价物.
我正在通过 Visual Studio 使用 AWS Lambda 和 API Gateway 构建无服务器应用程序。我正在使用 C#,并使用无服务器应用程序模型 (SAM) 来部署我的 API。我在 Visual Studio 中构建代码,然后通过发布到 Lambda 进行部署。这是有效的,除了每次我进行新构建并尝试执行 API 调用时,我都会收到此错误:
由于配置错误,执行失败:Lambda 函数的权限无效
做了一些研究,我发现其他地方提到了这个修复(通过 AWS 控制台完成):
修复:转到 API 网关 > API 名称 > 资源 > 资源名称 > 方法 > 集成请求 > Lambda 函数并重新选择我现有的函数,然后用小复选标记“保存”它。
现在这对我有用,但它破坏了使用 serverless.template (JSON) 构建我的 API 的自动化。有谁知道如何在 serverless.template 文件中解决这个问题?这样我就不需要在控制台中采取行动来解决?这是 serverless.template 文件中我的一种方法的示例
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Transform" : "AWS::Serverless-2016-10-31",
"Description" : "An AWS Serverless Application.",
"Resources" : {
"Get" : {
"Type" : "AWS::Serverless::Function",
"Properties": {
"VpcConfig":{
"SecurityGroupIds" : …Run Code Online (Sandbox Code Playgroud) 当用户通过 Google 和 Facebook 身份提供商使用相同的电子邮件地址登录时,AWS Cognito 在用户池中创建多个条目,每个身份提供商使用一个条目:
我使用本教程中提供的示例代码来设置 AWS Cognito:使用 Amplify 框架进行用户身份验证的完整指南
amazon-web-services google-login amazon-cognito aws-lambda amazon-cognito-facebook
我正在使用aws lambda函数将存储桶中的上传的wav文件转换为mp3格式,然后将文件移动到另一个存储桶.它工作正常.但是触发有问题.当我上传小wav文件时,lambda函数被调用一次.但是当我上传一个大型的wav文件时,会多次触发此功能.
我已经google了这个问题,发现它是无状态的,所以它会被多次调用(不确定这个触发器是多次上传还是同一次上传).
https://aws.amazon.com/lambda/faqs/
是否有任何方法可以为单个上传调用此函数一次?
我可以在Lambda函数中编写一个bash脚本吗?我在aws文档中读到它可以执行用Python,NodeJS和Java 8编写的代码.
在一些文件中提到可能使用Bash但没有具体证据支持它或任何例子
考虑以下代码 -
function index(event, context, callback) {
//some code
}
exports.handler = index();
{
"errorMessage": "Handler 'handler' missing on module 'index'"
}
Run Code Online (Sandbox Code Playgroud)
这是我的功能,它具有业务逻辑.我的javascript文件名是index.js.
每当我在aws lambda上测试这段代码时,它会给出以下内容log(failed).
我有一个运行良好的 lambda 函数,但我想导入一个包,所以我用 index.js 创建了一个目录并安装了我的 npm 包。
然后创建此文件夹的 zip 并使用上传
aws lambda 更新函数代码 --function-name smrtfac-test --zip-file fileb://lambda.zip
但现在我收到这个错误
index.handler is undefined or not exported
Run Code Online (Sandbox Code Playgroud)
原因可能是什么?myindex.js和node_modules在同一个目录中。
aws-lambda ×10
amazon-s3 ×1
amazon-sns ×1
aws-cli ×1
bash ×1
conda ×1
google-login ×1
node.js ×1
python ×1
python-2.7 ×1