如何通过RESTAPI在ApacheNIFI中实例化模板
我正在尝试自动化ApacheNIFI进程组的部署 我的工作步骤如下: 创建代码段 创建模板 下载模板 上载模板 然后我尝试使用api调用: POST/processgroups/{id}/template实例实例化一个模板如何通过RESTAPI在ApacheNIFI中实例化模板,api,deployment,automation,apache-nifi,Api,Deployment,Automation,Apache Nifi,我正在尝试自动化ApacheNIFI进程组的部署 我的工作步骤如下: 创建代码段 创建模板 下载模板 上载模板 然后我尝试使用api调用: POST/processgroups/{id}/template实例实例化一个模板 instantiate_data = { "originX": 0.0, "originY": 0.0, "templateId": template_id, "snippet":
instantiate_data = {
"originX": 0.0,
"originY": 0.0,
"templateId": template_id,
"snippet": {
"processGroups": [
{
"id": group_id,
"parentGroupId": parentgroup_id,
"position": {
"x": 0.0,
"y": 0.0
},
"name": "value",
}
]
}
}
这是我从Nifi实例得到的500
在下面跟踪。。。我错过了什么
2017-05-23 14:28:49,180 INFO [NiFi Web Server-106] org.apache.nifi.web.filter.RequestLogger Attempting request for (anonymous) POST http://10.132.0.22:8080/nifi-api/process-groups/1664cd1a-015c-1000-4bbe-f63259900964/template-instance (source ip: 10.132.0.23)
2017-05-23 14:28:49185错误[NiFi Web Server-106]o.a.NiFi.Web.api.config.ThrowableMapper发生意外错误:java.lang.NullPointerException。正在返回内部服务器错误响应。
java.lang.NullPointerException:null
位于org.apache.nifi.controller.FlowController.VerifyProcessorInsnippetFlowController.java:2051
位于org.apache.nifi.controller.FlowController.lambda$verifyProcessorsInSnippet$1FlowController.java:2067
java:75
位于org.apache.nifi.controller.FlowController.VerifyProcessorInsnippetFlowController.java:2066
位于org.apache.nifi.controller.FlowController.VerifyComponentTypesInnippetFlowController.java:2100
位于org.apache.nifi.web.dao.impl.StandardTemplateDAO.verifyComponentTypesStandardTemplateDAO.java:74
在org.apache.nifi.web.dao.impl.StandardTemplateDAO$$FastClassBySpringCGLIB$$58f5765d.invoke
位于org.springframework.cglib.proxy.MethodProxy.invokeMethodProxy.java:204
位于org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpointCglibAopProxy.java:720
位于org.springframework.aop.framework.ReflectiveMethodInvocation.proceedReflectiveMethodInvocation.java:157
位于org.springframework.aop.interceptor.ExposeInvocationInterceptor.invokeeexposeinvocationinterceptor.java:92
位于org.springframework.aop.framework.ReflectiveMethodInvocation.proceedReflectiveMethodInvocation.java:179
位于org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.interceptCglibAopProxy.java:655
在org.apache.nifi.web.dao.impl.StandardTemplateDAO$$EnhancerBySpringCGLIB$$2cf2c182.verifyComponentTypes
在org.apache.nifi.web.standardinfiservicefacade.verifycomponenttypessstandardinfiservicefacade.java:1643
在org.apache.nifi.web.StandardNiFiServiceFacade$$FastClassBySpringCGLIB$$358780e0.invoke
位于org.springframework.cglib.proxy.MethodProxy.invokeMethodProxy.java:204
位于org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpointCglibAopProxy.java:720
位于org.springframework.aop.framework.ReflectiveMethodInvocation.proceedReflectiveMethodInvocation.java:157
位于org.springframework.aop.aspectj.methodinvocationprocedingjoinpoint.proceedmethodinvocationprocedingjoinpoint.java:85
位于org.apache.nifi.web.NiFiServiceFacadeLock.proceedWithReadLockNiFiServiceFacadeLock.java:137
位于org.apache.nifi.web.NiFiServiceFacadeLock.verifyLockNiFiServiceFacadeLock.java:126
位于sun.reflect.GeneratedMethodAccessor320.invokeUnknown源
在sun.reflect.DelegatingMethodAccessorImpl.invokeDelegatingMethodAccessorImpl.java:43
位于java.lang.reflect.Method.invokeMethod.java:498
在org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgsAbstractAspectJAdvice.java:621
位于org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodAbstractAspectJAdvice.java:610
位于org.springframework.aop.aspectj.AspectJAroundAdvice.invokeAspectJAroundAdvice.java:68
位于org.springframework.aop.framework.ReflectiveMethodInvocation.proceedReflectiveMethodInvocation.java:179
位于org.springframework.aop.interceptor.ExposeInvocationInterceptor.invokeeexposeinvocationinterceptor.java:92
位于org.springframework.aop.framework.ReflectiveMethodInvocation.proceedReflectiveMethodInvocation.java:179
位于org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.interceptCglibAopProxy.java:655
在org.apache.nifi.web.standardinfiservicefacade$$EnhancerBySpringCGLIB$$9a341d03.verifyComponentTypes
位于org.apache.nifi.web.api.ProcessGroupResource.lambda$InstancetTemplate$41ProcessGroupResource.java:1995
位于org.apache.nifi.web.api.ApplicationResource.withWriteLockApplicationResource.java:667
位于org.apache.nifi.web.api.ProcessGroupResource.InstanceTemplateProcessGroupResource.java:1967
位于sun.reflect.GeneratedMethodAccessor327.invokeUnknown源
在sun.reflect.DelegatingMethodAccessorImpl.invokeDelegatingMethodAccessorImpl.java:43
位于java.lang.reflect.Method.invokeMethod.java:498
位于com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invokeJavaMethodInvokerFactory.java:60
位于com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker.\u dispatchAbstractResourceMethodDispatchProvider.java:205
位于com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.DispatcherResourceJavaMethodDispatcher.java:75
在com.sun.jersey.server.impl.uri.rules.H
ttpMethodRule.acceptHttpMethodRule.java:302
位于com.sun.jersey.server.impl.uri.rules.RightHandPathRule.acceptRightHandPathRule.java:147
位于com.sun.jersey.server.impl.uri.rules.ResourceClassRule.acceptResourceClassRule.java:108
位于com.sun.jersey.server.impl.uri.rules.RightHandPathRule.acceptRightHandPathRule.java:147
位于com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.acceptRootResourceClassesRule.java:84
位于com.sun.jersey.server.impl.application.WebApplicationImpl.\u handleRequestWebApplicationImpl.java:1542
位于com.sun.jersey.server.impl.application.WebApplicationImpl.\u handleRequestWebApplicationImpl.java:1473
位于com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequestWebApplicationImpl.java:1419
位于com.sun.jersey.server.impl.application.WebApplicationImpl.HandlerRequestWebApplicationImpl.java:1409
在com.sun.jersey.spi.container.servlet.WebComponent.serviceWebComponent.java:409
位于com.sun.jersey.spi.container.servlet.ServletContainer.serviceServletContainer.java:558
位于com.sun.jersey.spi.container.servlet.ServletContainer.serviceServletContainer.java:733
位于javax.servlet.http.HttpServlet.serviceHttpServlet.java:790
位于org.eclipse.jetty.servlet.ServletHolder.handleServletHolder.java:841
位于org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilterServletHandler.java:1634
位于org.apache.nifi.web.filter.RequestLogger.doFilterRequestLogger.java:66
位于org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilterServletHandler.java:1621
位于org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilterFilterChainProxy.java:316
位于org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invokeFilterSecurityInterceptor.java:126
位于org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilterFilterSecurityInterceptor.java:90
位于org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilterFilterChainProxy.java:330
位于org.springframework.security.web.session.SessionManagementFilter.doFilterSessionManagementFilter.java:122
位于org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilterFilterChainProxy.java:330
位于org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilterAnonymousAuthenticationFilter.java:111
位于org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilterFilterChainProxy.java:330
位于org.apache.nifi.web.security.NiFiAuthenticationFilter.authenticateNiFiAuthenticationFilter.java:83
位于org.apache.nifi.web.security.NiFiAuthenticationFilter.doFilterNiFiAuthenticationFilter.java:57
位于org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilterFilterChainProxy.java:330
位于org.apache.nifi.web.security.NiFiAuthenticationFilter.authenticateNiFiAuthenticationFilter.java:83
位于org.apache.nifi.web.security.NiFiAuthenticationFilter.doFilterNiFiAuthenticationFilter.java:57
位于org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilterFilterChainProxy.java:330
位于org.apache.nifi.web.security.NiFiAuthenticationFilter.authenticateNiFiAuthenticationFilter.java:83
位于org.apache.nifi.web.security.NiFiAuthenticationFilter.doFilterNiFiAuthenticationFilter.java:57
位于org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilterFilterChainProxy.java:330
位于org.springframework.security.web.FilterChainProxy.doFilterInternalFilterChainProxy.java:213
位于org.springframework.security.web.FilterChainProxy.doFilterFilterChainProxy.java:176
位于org.springframework.web.filter.DelegatingFilterProxy.invokedelegatingfilterproxy.java:346
位于org.springframework.web.filter.DelegatingFilterProxy.doFilterDelegatingFilterProxy.java:262
位于org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilterServletHandler.java:1621
位于org.apache.nifi.web.filter.TimerFilter.doFilterTimerFilter.java:51
位于org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilterServletHandler.java:1613
位于org.eclipse.jetty.servlet.ServletHandler.doHandleServletHandler.java:541
位于org.eclipse.jetty.server.handler.ScopedHandler.handleScopedHandler.java:143
位于org.eclipse.jetty.security.SecurityHandler.handleSecurityHandler.java:548
位于org.eclipse.jetty.server.handler.HandlerWrapper.HandlerWrapper.java:132
位于org.eclipse.jetty.server.handler.ScopedHandler.nextHandleScopedHandler.java:190
位于org.eclipse.jetty.server.session.SessionHandler.doHandleSessionHandler.java:1593
位于org.eclipse.jetty.server.handler.ScopedHandler.nextHandleScopedHandler.java:188
位于org.eclipse.jetty.server.handler.ContextHandler.doHandleContextHandler.java:1239
位于org.eclipse.jetty.server.handler.ScopedHandler.nextScopedHandler.java:168
位于org.eclipse.jetty.servlet.ServletHandler.doScopeServletHandler.java:481
位于org.eclipse.jetty.server.session.SessionHandler.doScopeSession
java:1562
位于org.eclipse.jetty.server.handler.ScopedHandler.nextScopedHandler.java:166
位于org.eclipse.jetty.server.handler.ContextHandler.doScopeContextHandler.java:1141
位于org.eclipse.jetty.server.handler.ScopedHandler.handleScopedHandler.java:141
位于org.eclipse.jetty.server.handler.HandlerCollection.HandlerCollection.java:118
java:561
位于org.eclipse.jetty.server.handler.HandlerWrapper.HandlerWrapper.java:132
位于org.eclipse.jetty.server.server.handleServer.java:564
位于org.eclipse.jetty.server.HttpChannel.handleHttpChannel.java:320
位于org.eclipse.jetty.server.HttpConnection.onFillableHttpConnection.java:251
位于org.eclipse.jetty.io.AbstractConnection$ReadCallback.SucceededBstractConnection.java:279
位于org.eclipse.jetty.io.FillInterest.fillableFillInterest.java:110
位于org.eclipse.jetty.io.ChannelEndPoint$2.runChannelEndPoint.java:124
位于org.eclipse.jetty.util.thread.Invocable.invokePreferredInvocable.java:122
位于org.eclipse.jetty.util.thread.strategy.ExecutingExecutionStrategy.invokeeExecutingExecutionStrategy.java:58
位于org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsumeExecuteProduceConsume.java:201
位于org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.runExecuteProduceConsume.java:133
位于org.eclipse.jetty.util.thread.QueuedThreadPool.runJobQueuedThreadPool.java:672
位于org.eclipse.jetty.util.thread.QueuedThreadPool$2.runQueuedThreadPool.java:590
在java.lang.Thread.runThread.java:748@strzelecki.maciek
您必须传递实例化_数据才能正确地如下所示
如果任何参数属于实例化数据错误,那么您将收到500个内部服务器错误
Rest API URL:
使用以下命令可以正确地实例化数据
如果您遇到任何问题,请告诉我。您使用的是哪个版本的NiFi?它是否与用于创建模板的版本相同?您是否能够在UI中手动部署模板?如果是这样,您应该能够在浏览器的网络调试工具中捕获API调用。如果没有,我建议尝试制作一个新的、更简单的模板并进行比较。只需通过浏览器执行您需要的操作,并使用FireBug或DevTools跟踪所有api请求即可。然后只需重复实现中的api调用序列。如果api调用可以从浏览器中工作,那么它应该可以从您的代码中工作。非常感谢!窃听来自UI的API调用是一件好事:
http://localhost:8080/nifi-api/process-groups/015c100c-8968-18bb-9b56-bf5342d001fd/template-instance
{
"originX": 2.0,
"originY": 3.0,
"templateId": "87fb53bb-a4bd-4051-a129-66b29dfce2b4"
}