Spring Cloud Dataflow - как передать учетные данные в задачу - PullRequest
0 голосов
/ 25 мая 2018

Я использую поток данных весеннего облака, развернутый в литейном облачном литейном цехе, для запуска весенних пакетных заданий в качестве задач весеннего облака, и для этих заданий требуются учетные данные aws для доступа к корзине s3.

Я попытался передать учетные данные aws в качестве свойств задачи, но учетные данные отображаются в файлах журнала задачи в качестве аргументов или свойств.(https://docs.spring.io/spring-cloud-dataflow/docs/current/reference/htmlsingle/#spring-cloud-dataflow-global-properties)

На данный момент я вручную устанавливаю учетные данные в качестве переменных env в pcf после каждого развертывания, но я пытаюсь автоматизировать это. Задачи не развертываются до тех пор, пока задачи фактически не запускаются,поэтому при развертывании мне нужно запустить задачу, затем дождаться ее сбоя из-за отсутствия учетных данных, а затем установить учетные данные переменной env с помощью cf. Как я предоставляю эти учетные данные, чтобы они не отображались в журналах приложения pcf?

Я также исследовал использование конфигурации хранилища и весеннего облака, но опять же, мне нужно было бы передать учетные данные в задачу для доступа к конфигурации весеннего облака.

Спасибо!

Ответы [ 3 ]

0 голосов
/ 25 мая 2018

Безопасные учетные данные для задач должны быть настроены либо с помощью переменных среды в определении задачи, либо с помощью чего-то вроде Spring Cloud Config Server, чтобы предоставить их (и хранить их в зашифрованном виде в покое).Spring Cloud Task сохраняет все аргументы командной строки в базе данных в виде открытого текста, поэтому их нельзя передавать таким образом.

0 голосов
/ 29 мая 2018

После рассмотрения подходов, включенных в предоставленные ответы, я продолжил тестирование и исследование и пришел к выводу, что наилучшим подходом является использование «Предоставляемой пользователем службы» Cloud Foundry для предоставления учетных данных AWS для задачи.

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

Spring Boot автоматически обрабатывает переменную среды VCAP_SERVICES, включенную в контейнер каждого приложения.

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

Затем я использовал заполнители свойств в 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}
0 голосов
/ 25 мая 2018

Вот задача / Пакетное задание пример .

Это приложение использует spring-cloud-starter-aws.И этот стартер уже предоставляет автоконфигурацию загрузки и возможность переопределять кредиты AWS в качестве свойств загрузки.

Вы переопределяете свойства при запуске из SCDF, например:

запуск задачи --name S3LoaderJob --arguments "--cloud.aws.credentials.accessKey = --cloud.aws.credentials.secretKey = --cloud.aws.region.static = --cloud.aws.region.auto = false "

Вы можете решить контролировать уровень журнала задачи, поэтому он не регистрирует их в виде простого текста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...