我必须在nifi进程中使用aws临时凭据AccessKey,SecretKey和Token来访问S3对象。 AccessKey,SecretKey和Token将通过Api调用提供。如何在nifi ListS3 Object等中使用这些临时凭证?
我发现的一种选择是使用 自此以来的AWSCredentialsProviderControllerService 可以基于API调用更新控制器服务的值吗?
在这种情况下还可以使用其他选项吗?
谢谢! 阿尼
答案 0 :(得分:3)
是的,尽管它可能有点复杂,但我们可以利用AWSCredentialsProvider
控制器服务和NiFi REST API来构建它。不过,让我们在这里画一下。
无论您对NiFi采取什么措施-更新处理器/控制器服务配置,停止/启动服务/处理器,都在后端进行API调用。 NiFi框架在幕后发出了呼吁。并且由于我们也有像InvokeHTTP
这样的HTTP处理器,我们可以构建这个东西。我可以想到类似以下的内容:
cp-id
。我们待会儿使用。ListS3 -> <OTHER_PROCESSORS>
的逻辑来创建流程。使用我们在步骤1中创建的AWSCredentialsProvider配置ListS3处理器。ListS3
处理器的组件ID。我们称之为s3-id
InvokeHTTP
创建另一个流,并将其配置到您的服务端点,这将为您提供临时的AWS凭证。使用凭据并使用InvokeHTTP再次调用带有PUT /controller-services/{cp-id}
端点的NiFi服务器以更新属性PUT /controller-services/{cp-id}/run-status
更新控制器服务的运行状态。这将启用控制器服务,这意味着您现在可以启动ListS3处理器,可以使用对NiFi服务器的HTTP调用再次完成该操作:PUT /processors/{s3-id}/run-status
一些有用的链接: