标签: aws-lambda

AWS Lambda通过cloudformation安排事件源

我已经在cloudformation中定义了我的lambda/roles,并且还希望使用它来添加预定的事件源......是否有任何文档或示例?

amazon-web-services aws-cloudformation aws-lambda

29
推荐指数
4
解决办法
2万
查看次数

AWS Lambda NoClassDefFoundError

我很难使用基于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)

amazon-web-services amazon-sns aws-lambda

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

如何使用aws Lambda和python将一个Item放在aws DynamoDb中

在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等价物.

python-2.7 amazon-dynamodb aws-lambda

28
推荐指数
4
解决办法
5万
查看次数

由于配置错误,执行失败:Lambda 函数的权限无效

我正在通过 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)

aws-lambda aws-api-gateway serverless-application-model

28
推荐指数
4
解决办法
2万
查看次数

AWS Cognito:处理从不同身份提供商(Google、Facebook)登录的同一用户(使用相同电子邮件地址)的最佳实践

当用户通过 Google 和 Facebook 身份提供商使用相同的电子邮件地址登录时,AWS Cognito 在用户池中创建多个条目,每个身份提供商使用一个条目:

AWS Cognito 用户池的屏幕截图

我使用本教程中提供的示例代码来设置 AWS Cognito:使用 Amplify 框架进行用户身份验证的完整指南

  • 如何只创建一个用户而不是多个用户?
  • 是否可以让 AWS Cognito 自动将来自多个提供商的条目合并(联合)到一个条目中,还是应该使用 AWS Lambda 函数来实现这一点?

amazon-web-services google-login amazon-cognito aws-lambda amazon-cognito-facebook

28
推荐指数
3
解决办法
7855
查看次数

aws lambda函数为单个事件触发多次

我正在使用aws lambda函数将存储桶中的上传的wav文件转换为mp3格式,然后将文件移动到另一个存储桶.它工作正常.但是触发有问题.当我上传小wav文件时,lambda函数被调用一次.但是当我上传一个大型的wav文件时,会多次触发此功能.

我已经google了这个问题,发现它是无状态的,所以它会被多次调用(不确定这个触发器是多次上传还是同一次上传).

https://aws.amazon.com/lambda/faqs/

是否有任何方法可以为单个上传调用此函数一次?

amazon-s3 amazon-web-services aws-lambda

27
推荐指数
3
解决办法
1万
查看次数

可以在AWS Lambda函数中编写bash脚本

我可以在Lambda函数中编写一个bash脚本吗?我在aws文档中读到它可以执行用Python,NodeJS和Java 8编写的代码.

在一些文件中提到可能使用Bash但没有具体证据支持它或任何例子

bash amazon-web-services aws-lambda

27
推荐指数
6
解决办法
3万
查看次数

AWS Lambda函数返回模块'index'上缺少Handler'handler'

考虑以下代码 -

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上传网站的屏幕截图: 在此输入图像描述

node.js aws-lambda

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

AWS Lambda的conda环境

我想建立一个我在AWS Lambda上编写的Python函数,这个函数依赖于我在conda环境中收集的一堆Python库.

要在Lambda上进行设置,我应该将此环境压缩,但Lambda文档仅提供有关如何使用pip/VirtualEnv执行此操作的说明.有任何人对此有经验吗?

python amazon-web-services conda aws-lambda

27
推荐指数
3
解决办法
5221
查看次数

索引处理程序未定义或未导出

我有一个运行良好的 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.jsnode_modules在同一个目录中。

aws-cli aws-lambda

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