Запуск лямбды с использованием уведомления SNS не работает

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"
                }
            }
        }
    ]
}
  • Обработчик: Я новичок в веб-сервисах Amazon, я сделал демонстрационную лямбду. Когда я вызываю его с помощью cli (или веб-консоли) с любой случайной строкой, он работает и показывает длину входной строки на веб-странице лямбда. Затем я подписался на тему в соцсети и попытался опубликовать событие со случайной строкой. Я не вижу результат на веб-странице (лямбда), т.е. длина строки не отображается. Как узнать, что лямбда правильно обрабатывает строку?

person Crosk Cool    schedule 31.07.2017    source источник
comment
Если вы создали ресурсы с помощью CloudFormation (или CLI), вам необходимо предоставить Lambda разрешение для вызова: aws lambda add-permission --region REGION_NAME --function-name LAMBDA_FUNCTION_NAME --statement-id SOME_ID --action lambda: InvokeFunction - -principal config.amazonaws.com.   -  person krishna_mee2004    schedule 31.07.2017
comment
Я проверил свою политику функций, и эффект разрешен, не могли бы вы его увидеть и сказать мне, если я что-то упускаю. @ KrishnaKumarR   -  person Crosk Cool    schedule 31.07.2017
comment
Это в соцсети. Это правильно. Но вам нужно включить Lambda для вызова. Команда для этого упоминалась в предыдущем комментарии.   -  person krishna_mee2004    schedule 31.07.2017
comment
Возможный дубликат AWS Lambda & SNS: Invoke Lambda cross-region   -  person adamkonrad    schedule 31.07.2017
comment
Ваш вопрос требует решения, аналогичного stackoverflow.com/questions/35006556/   -  person adamkonrad    schedule 31.07.2017


Ответы (1)


По-видимому, лямбда aws вызывалась правильно, причина, по которой длина строки, которую я отображал в обработчике, не отображалась из-за параметра, который я принимал внутри лямбды, чтобы обработать что-то в качестве входных данных из SNS я должен принять событие типа SNSevent в аргументе, а затем обработать его.

person Crosk Cool    schedule 01.08.2017