Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用SNS通知触发lambda无效 Handler:我对amazon web服务非常陌生,我做了一个演示lambda。当我使用cli(或web控制台)和任意随机字符串调用它时,它工作并在lambda的网页上显示输入字符串的长度。然后我订阅了一个SNS主题,并试图发布一个带有随机字符串的事件。我在网页上看不到结果(lambda),即未显示字符串的长度。如何知道lambda正在正确处理字符串_Java_Amazon Web Services_Aws Lambda_Amazon Sns - Fatal编程技术网

Java 使用SNS通知触发lambda无效 Handler:我对amazon web服务非常陌生,我做了一个演示lambda。当我使用cli(或web控制台)和任意随机字符串调用它时,它工作并在lambda的网页上显示输入字符串的长度。然后我订阅了一个SNS主题,并试图发布一个带有随机字符串的事件。我在网页上看不到结果(lambda),即未显示字符串的长度。如何知道lambda正在正确处理字符串

Java 使用SNS通知触发lambda无效 Handler:我对amazon web服务非常陌生,我做了一个演示lambda。当我使用cli(或web控制台)和任意随机字符串调用它时,它工作并在lambda的网页上显示输入字符串的长度。然后我订阅了一个SNS主题,并试图发布一个带有随机字符串的事件。我在网页上看不到结果(lambda),即未显示字符串的长度。如何知道lambda正在正确处理字符串,java,amazon-web-services,aws-lambda,amazon-sns,Java,Amazon Web Services,Aws Lambda,Amazon Sns,显然,aws lambda被正确调用,我在处理程序中显示的字符串长度之所以没有显示,是因为我在lambda中使用了参数,为了处理来自SNS的输入,我必须在参数中获取类型为SNSevent的事件,然后再进行处理。显然,aws lambda被正确调用,我在处理程序中显示的字符串长度之所以没有显示,是因为我在lambda中使用了参数,为了处理来自SNS的输入,我必须在参数中使用类型为SNSevent的事件,然后再进行处理。如果使用CloudFormation创建资源(或CLI),您需要授予Lambda

显然,aws lambda被正确调用,我在处理程序中显示的字符串长度之所以没有显示,是因为我在lambda中使用了参数,为了处理来自SNS的输入,我必须在参数中获取类型为SNSevent的事件,然后再进行处理。

显然,aws lambda被正确调用,我在处理程序中显示的字符串长度之所以没有显示,是因为我在lambda中使用了参数,为了处理来自SNS的输入,我必须在参数中使用类型为SNSevent的事件,然后再进行处理。

如果使用CloudFormation创建资源(或CLI),您需要授予Lambda权限才能被调用:aws Lambda add permission--region region\u NAME--function NAME Lambda\u function\u NAME--statement id SOME\u id--action Lambda:InvokeFunction--principal config.amazonaws.com。我检查了我的函数策略,结果是允许的,您能看到它并告诉我是否遗漏了什么吗。@KrishnaKumarRThis在SNS中。这是正确的。但是,您需要启用Lambda才能被调用。在前面的评论中提到了执行此操作的命令。您的问题的可能重复之处在于寻求类似于使用CloudFormation(或CLI)创建资源的解决方案,您需要授予Lambda权限才能被调用:aws Lambda add permission--region region\u NAME--function NAME Lambda\u function\u NAME--statement id SOME\u id--action Lambda:InvokeFunction--principal config.amazonaws.com。我检查了我的函数策略,结果是允许的,您能看到它并告诉我是否遗漏了什么吗。@KrishnaKumarRThis在SNS中。这是正确的。但是,您需要启用Lambda来调用。在前面的评论中提到了执行此操作的命令。您的问题的可能重复之处在于寻求类似的解决方案
package example;
import java.io.*;
import com.amazonaws.services.lambda.runtime.Context; 
public class LambdaMethodHandler {
    public String handlerString(String input,Context context) {
    System.out.println(input.length());
        return input;
    }
}
// This is my function policy
{
    "Version": "2012-10-17",
    "Id": "default",
    "Statement": [
        {
            "Sid": "sns-xxxx-Sns_Lambda_test",
            "Effect": "Allow",
            "Principal": {
                "Service": "sns.amazonaws.com"
            },
            "Action": "lambda:invokeFunction",
            "Resource": "arn:aws:lambda:xxxxx:function:theSimplestLambda",
            "Condition": {
                "ArnLike": {
                    "AWS:SourceArn": "arn:aws:sns:eu-west-1:xxxx:Sns_Lambda_test"
                }
            }
        }
    ]
}