amazon-web-services - 如何在 Nifi 中使用 Aws 临时凭证
问题描述
我必须在 nifi 进程中使用 aws 临时凭证 AccessKey、SecretKey 和 Token 来访问 S3 对象。AccessKey、SecretKey 和 Token 将由 Api 调用提供。如何在 nifi ListS3 Object 等中使用这些临时凭证?
我发现的选项之一是使用 AWSCredentialsProviderControllerService,因为我可以根据 API 调用更新控制器服务的值吗?
在这种情况下我可以使用任何其他选项吗?
谢谢!阿尼
解决方案
是的,我们可以利用AWSCredentialsProvider
控制器服务和 NiFi REST API 来构建它,尽管它可能有点复杂。尽管如此,让我们在这里勾勒出来。
无论您在 NiFi 上执行什么操作——更新处理器/控制器服务配置、停止/启动服务/处理器,都在后端进行 API 调用。NiFi 框架在幕后进行调用。因为我们也有 HTTP 处理器,所以InvokeHTTP
我们可以构建这个东西。我可以想到类似下面的东西:
- 创建 AWSCredentialsProvider 控制器服务并将配置留空,这会有效地使组件处于无效状态。记下其唯一 ID (UUID)。让我们称之为
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
一些有用的链接:
推荐阅读
- javascript - 在 Vue 中测量溢出不正确
- javascript - Chart JS 在 Bar 顶部显示数据值
- r - R - 按日期分组,然后按唯一 ID 求和
- json - 如何使用 serde_json 将 JSON 字符串转换为 i64?
- amazon-web-services - X-Forwarded-Proto 未通过带有 Palo Alto VM 防火墙的 AWS ALB Sandwich
- c - 多次定义符号“file@variable”
- swift - 本地化翻译不更新/被删除
- python - cx_Freeze Python 可执行错误 - IndexError:列表索引超出范围
- javascript - 与参数匹配时返回对象的键和值
- python - keras中文本分类中相同代码的不同精度