当前位置: 首页 > 知识库问答 >
问题:

Spring云数据流-如何将凭据传递给任务

万俟玉书
2023-03-14

我使用部署到pivotal cloud foundry的spring云数据流,将spring批处理作业作为spring云任务运行,这些作业需要aws凭据才能访问s3存储桶。

我尝试将aws凭据作为任务属性传递,但凭据作为参数或属性显示在任务的日志文件中。(https://docs.spring.io/spring-cloud-dataflow/docs/current/reference/htmlsingle/#spring-云数据流全局属性)

目前,我在每次部署后将凭证手动设置为pcf中的env变量,但我正在尝试将其自动化。任务在实际启动之前不会部署,因此在部署时,我必须启动任务,然后等待它由于缺少凭据而失败,然后使用cli设置env变量凭据。我如何提供这些凭证,而不在pcf应用程序的日志中显示?

我还探索了使用vault和spring cloud config,但同样,我需要向任务传递凭据才能访问spring cloud config。

谢谢!

共有3个答案

贺雪松
2023-03-14

在考虑了所提供答案中包含的方法后,我继续测试和研究并得出结论,最好的方法是使用Cloud Foundry“用户提供的服务”为任务提供AWS凭据。

https://docs.cloudfoundry.org/devguide/services/user-provided.html

Spring Boot自动处理每个应用程序容器中包含的VCAP_服务环境变量。

http://engineering.pivotal.io/post/spring-boot-injecting-credentials/

然后,我在application-cloud.properties中使用属性占位符将处理后的属性映射到spring-blod-aws属性:

cloud.aws.credentials.accessKey=${vcap.services.aws-s3.credentials.aws_access_key_id}
cloud.aws.credentials.secretKey=${vcap.services.aws-s3.credentials.aws_secret_access_key}
郭单鹗
2023-03-14

任务的安全凭据应该通过任务定义中的环境变量进行配置,或者使用Spring Cloud Config Server之类的工具来提供(并在静止时加密存储)。Spring Cloud任务将所有命令行参数以明文形式存储在数据库中,这就是为什么它们不应该以这种方式传递。

公胤运
2023-03-14

下面是一个任务/批处理作业示例。

此应用程序使用spring cloud starter aws。这个启动器已经提供了引导自动配置和覆盖AWS Cred作为引导属性的能力。

您可以在从SCDF启动时覆盖属性,例如:

任务启动--名称S3LoaderJobs--参数"--cloud.aws.credentials.access键=--cloud.aws.credentials.secret键=--cloud.aws.region.static=--cloud.aws.region.auto=false"

您可以决定控制任务的日志级别,这样它就不会以纯文本形式记录它们。

 类似资料:
  • 我在Google Cloud Platform上使用Python中的Google Cloud Dataflow实现。我的想法是使用来自AWS S3的输入。 谷歌云数据流(基于Apache Beam)支持从S3读取文件。然而,我在文档中找不到将凭证传递给作业的最佳可能性。我尝试将AWS_ACCESS_KEY_ID和AWS_ SECRET_ACCESS_KEY添加到安装程序中的环境变量中。py文件。然

  • 问题内容: 我有一个运行Jenkins的节点,该节点使用Maven构建代码。Jenkins作业是声明性管道脚本。Maven需要从需要证书才能访问的私有存储库中下载依赖项。凭证存储在Jenkins凭证管理器中。 我如何将这些凭据传递给Maven,以便Maven可以使用这些凭据从私有存储库正确下载依赖项。 问题答案: 通过将Jenkins凭证注入您的环境,然后将这些凭证传递给Maven,您可以使用Je

  • 我试图了解运行批处理任务时通过Spring Cloud数据流WRT数据源配置的预期行为。 Spring批处理数据库表(Batch\u JOB\u EXECUTION等)是否在SCDF数据库本身中?当通过SCDF启动任务时,似乎发生了一些神奇的事情,它在SCDF数据库中创建了这些表,并似乎在使用它们。它似乎正在将SCDF数据源注入我的应用程序? 我目前在localhost服务器版本2.0.1上运行。

  • 很新的反应。。。 我试图循环我的this.props.children,以便向他们传递一个在我的父项中定义的字符串。。。在没有在render方法中定义这些子对象的情况下,这是可能的吗? OwnRenderer应该将道具字符串传递给它的所有子级。。。OwnRenderer不知道要渲染哪个孩子,因此无法通过“”直接传递道具。。。 我试着绕过孩子们直接传递那根绳子,但不幸的是,这不起作用。 不知怎的,它

  • 我有三节课 1.菜单活动 2.LocationUpdateService 3.多重标记器 1.菜单活动 2、LocationUpdateService:(这是服务类) 3、多重标记(活动) 我的问题是:当我打开我的菜单活动我的Toast消息打印发送数据到广播接收器,然后点击按钮我调用MultipleMarker。我无法从服务中获取值。。。但当我按下后退按钮时,我重定向到MenuActivity,此