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

How to use Aws Temporary credentials in Nifi

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

我找到的选项之一是使用 AWSCredentialsProviderControllerService 自此 我可以根据 API 调用更新控制器服务的值吗?

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

谢谢! 阿尼

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

无论您在 NiFi 上做什么 - 更新 processor/controller 服务配置,stopping/starting services/processors,都是在后端进行 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

一些有用的链接: