Amazon web services 无法使用aws lambda函数将消息生成kafka主题

Amazon web services 无法使用aws lambda函数将消息生成kafka主题,amazon-web-services,apache-kafka,aws-lambda,kafka-producer-api,amazon-msk,Amazon Web Services,Apache Kafka,Aws Lambda,Kafka Producer Api,Amazon Msk,所以我试图在S3事件上编写一个lambda函数,它将把消息放入kafka主题中。 我的aws lambda函数正在触发,并且没有得到任何错误。 但我无法将这些信息纳入卡夫卡主题 这是我的lambda函数 String srcBucket = record.getS3().getBucket().getName(); String srcKey = record.getS3().getObject().getUrlDecodedKey(); System.out

所以我试图在S3事件上编写一个lambda函数,它将把消息放入kafka主题中。 我的aws lambda函数正在触发,并且没有得到任何错误。 但我无法将这些信息纳入卡夫卡主题

这是我的lambda函数

String srcBucket = record.getS3().getBucket().getName();

        String srcKey = record.getS3().getObject().getUrlDecodedKey();

        System.out.println("Bucket is " + srcBucket + "  and Key is " + srcKey);
        // Assign topicName to string variable
        String topicName = "AWSKafkaTutorialTopic";

        // create instance for properties to access producer configs
        Properties props = new Properties();

        props.put("bootstrap.servers",
                "b-3.205147-riskaudit.rtyrty.c5.kafka.us-east-1.amazonaws.com:9092,b-4.205147-riskaudit.rtyt.c5.kafka.us-east-1.amazonaws.com:9092,b-5.205147-tryrt.xt08nj.c5.kafka.us-east-1.amazonaws.com:9092");
        System.out.println("bootstrap.servers successfully");
        // Set acknowledgements for producer requests.
        props.put("acks", "all");

        // If the request fails, the producer can automatically retry,
        props.put("retries", 0);

        // Specify buffer size in config
        props.put("batch.size", 16384);

        // Reduce the no of requests less than 0
        props.put("linger.ms", 1);

        // The buffer.memory controls the total amount of memory available to the
        // producer for buffering.
        props.put("buffer.memory", 33554432);

        System.out.println("before key.serializer successfully");

        props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");

        props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

        System.out.println("after  key.serializer successfully");
        Producer<String, String> producer = new KafkaProducer<String, String>(props);
        System.out.println("Inside loop successfully");
        for (int i = 0; i < 10; i++)

            producer.send(new ProducerRecord<String, String>(topicName, Integer.toString(i), Integer.toString(i)));
        System.out.println("Message sent successfully");
        producer.close();

        return "Message Pushed success fully";
String srcBucket=record.getS3().getBucket().getName();
字符串srcKey=record.getS3().getObject().getUrlDecodedKey();
System.out.println(“Bucket为“+srcBucket+”,Key为“+srcKey”);
//将topicName分配给字符串变量
字符串topicName=“AWSKafkaTutorialTopic”;
//为访问生产者配置的属性创建实例
Properties props=新属性();
props.put(“bootstrap.servers”,
“b-3.205147-riskaudit.rtyrty.c5.kafka.us-east-1.amazonaws.com:9092,b-4.205147-riskaudit.rtyt.c5.kafka.us-east-1.amazonaws.com:9092,b-5.205147-tryrt.xt08nj.c5.kafka.us-east-1.amazonaws.com:9092”);
System.out.println(“bootstrap.servers成功”);
//为生产者请求设置确认。
道具放置(“阿克斯”、“全部”);
//如果请求失败,生产者可以自动重试,
道具放置(“重试”,0);
//在配置中指定缓冲区大小
道具放置(“批量大小”,16384);
//将请求数减少到0以下
道具放置(“玲儿小姐”,1);
//buffer.memory控制可用于存储的内存总量
//缓冲的生产者。
props.put(“buffer.memory”,33554432);
System.out.println(“在key.serializer成功之前”);
put(“key.serializer”、“org.apache.kafka.common.serialization.StringSerializer”);
put(“value.serializer”、“org.apache.kafka.common.serialization.StringSerializer”);
System.out.println(“在key.serializer成功之后”);
制作人=新卡夫卡制作人(道具);
System.out.println(“内部循环成功”);
对于(int i=0;i<10;i++)
producer.send(新的ProducerRecord(topicName、Integer.toString(i)、Integer.toString(i));
System.out.println(“消息发送成功”);
producer.close();
返回“消息推送成功”;
我的lambda函数一直运行到for循环,但无法看到之后会发生什么。 请帮帮我,我觉得一切都很好 只需添加
props.put(“producer.type”,“async”)
您可能没有从MSK启动所在的vpc运行lmbda功能。
此外,请注意IAM政策。
尝试使用此
AWSLambdaVPCAccessExecutionRole
和安全组

如果您设置了所有这些设置,代码将开始工作