如何在Nifi中使用Aws临时凭证

时间:2019-03-22 22:28:56

标签: amazon-web-services access-token apache-nifi

我必须在nifi进程中使用aws临时凭据AccessKey,SecretKey和Token来访问S3对象。 AccessKey,SecretKey和Token将通过Api调用提供。如何在nifi ListS3 Object等中使用这些临时凭证?

我发现的一种选择是使用 自此以来的AWSCredentialsProviderControllerService 可以基于API调用更新控制器服务的值吗?

AwsCrentialsProviderControllerService

在这种情况下还可以使用其他选项吗?

谢谢! 阿尼

1 个答案:

答案 0 :(得分:3)

是的,尽管它可能有点复杂,但我们可以利用AWSCredentialsProvider控制器服务和NiFi REST API来构建它。不过,让我们在这里画一下。

无论您对NiFi采取什么措施-更新处理器/控制器服务配置,停止/启动服务/处理器,都在后端进行API调用。 NiFi框架在幕后发出了呼吁。并且由于我们也有像InvokeHTTP这样的HTTP处理器,我们可以构建这个东西。我可以想到类似以下的内容:

  1. 创建AWSCredentialsProvider控制器服务,并将配置留空,以有效地使组件处于无效状态。记下其唯一ID(UUID)。我们称之为cp-id。我们待会儿使用。
  2. 使用涉及ListS3 -> <OTHER_PROCESSORS>的逻辑来创建流程。使用我们在步骤1中创建的AWSCredentialsProvider配置ListS3处理器。
  3. 记下此ListS3处理器的组件ID。我们称之为s3-id
  4. 使用InvokeHTTP创建另一个流,并将其配置到您的服务端点,这将为您提供临时的AWS凭证。使用凭据并使用InvokeHTTP再次调用带有PUT /controller-services/{cp-id}端点的NiFi服务器以更新属性
  5. 再次调用以PUT /controller-services/{cp-id}/run-status更新控制器服务的运行状态。这将启用控制器服务,这意味着您现在可以启动ListS3处理器,可以使用对NiFi服务器的HTTP调用再次完成该操作:PUT /processors/{s3-id}/run-status

一些有用的链接: