Spring batch Spring云数据流-如何向任务传递凭据

Spring batch Spring云数据流-如何向任务传递凭据,spring-batch,spring-cloud,cloud-foundry,spring-cloud-dataflow,spring-cloud-task,Spring Batch,Spring Cloud,Cloud Foundry,Spring Cloud Dataflow,Spring Cloud Task,我使用部署到pivotal cloud foundry的spring cloud数据流,将spring批处理作业作为spring云任务运行,这些作业需要aws凭据才能访问s3存储桶 我已尝试将aws凭据作为任务属性传递,但这些凭据将作为参数或属性显示在任务的日志文件中。() 目前,我在每次部署后都将凭证手动设置为pcf中的env变量,但我正在尝试将其自动化。任务在实际启动之前不会部署,因此在部署时,我必须启动任务,然后等待它由于缺少凭据而失败,然后使用cfcli设置env变量凭据。我如何提供这些

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

我已尝试将aws凭据作为任务属性传递,但这些凭据将作为参数或属性显示在任务的日志文件中。()

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

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

谢谢

这里有一个任务/批处理作业

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

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

任务启动--名称S3LoaderJob--参数--cloud.aws.credentials.accessKey=--cloud.aws.credentials.secretKey=--cloud.aws.region.static=--cloud.aws.region.auto=false”

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

这里是一个任务/批处理作业

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

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

任务启动--名称S3LoaderJob--参数--cloud.aws.credentials.accessKey=--cloud.aws.credentials.secretKey=--cloud.aws.region.static=--cloud.aws.region.auto=false”


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

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

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

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

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

然后,我使用application-cloud.properties中的属性占位符将处理后的属性映射到spring cloud 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}

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

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

然后,我使用application-cloud.properties中的属性占位符将处理后的属性映射到spring cloud 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}

我已经探索过如何使用SpringCloudConfigServer,但是我需要将凭据传递给它,这与目的背道而驰。您介意指出在我的任务定义中包含环境变量的位置吗。是不是像
task create mytask--definition“inset-from-s3--cloud.aws.credentials.accessKey=“foo”
你说的“挫败目的”是什么意思?是的,这就是你的DSL的样子(尽管我不相信foo周围需要引用)“我的意思是,如果我将spring cloud config server凭据作为参数传递,我仍然传递会出现在日志中的凭据,只是不同的凭据。不,它们不会出现在日志中。数据库和日志中应该只显示命令行参数。我已经使用spring cloud config server进行了探索,但是我需要将凭据传递给该服务器,这与目的背道而驰。请您指出在我的任务定义中应该在哪里包含环境变量好吗。是不是像
task create mytask--definition“inset-from-s3--cloud.aws.credentials.accessKey=“foo”
你说的“挫败目的”是什么意思?是的,这就是你的DSL的样子(尽管我不相信foo周围需要引用)“我的意思是,如果我将spring cloud config server凭据作为参数传递,我仍然传递会出现在日志中的凭据,只是不同的凭据。不,它们不会出现在日志中。数据库和日志中只应显示命令行参数。