首页 > 解决方案 > 如何在 Nifi 中使用 Aws 临时凭证

问题描述

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

我发现的选项之一是使用 AWSCredentialsProviderControllerService,因为我可以根据 API 调用更新控制器服务的值吗?

AwsCrentialsProviderControllerService

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

谢谢!阿尼

标签: amazon-web-servicesaccess-tokenapache-nifi

解决方案


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

无论您在 NiFi 上执行什么操作——更新处理器/控制器服务配置、停止/启动服务/处理器,都在后端进行 API 调用。NiFi 框架在幕后进行调用。因为我们也有 HTTP 处理器,所以InvokeHTTP我们可以构建这个东西。我可以想到类似下面的东西:

  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

一些有用的链接:


推荐阅读