Я пытаюсь запустить установку конвейера kubeflow, и у меня есть несколько окружений (dev, staging, prod).
В моем конвейере я использую kfp.components.func_to_container_op
для получения экземпляра задачи конвейера (ContainerOp) ), а затем выполните его с соответствующими аргументами, позволяющими интегрировать его с моим сегментом s3:
from utils.test import test
test_op = comp.func_to_container_op(test, base_image='my_image')
read_data_task = read_data_op(
bucket,
aws_key,
aws_pass,
)
arguments = {
'bucket': 's3',
'aws_key': 'key',
'aws_pass': 'pass',
}
kfp.Client().create_run_from_pipeline_func(pipeline, arguments=arguments)
Каждая из сред использует различные учетные данные для подключения к нему, и эти учетные данные передаются в функция:
def test(s3_bucket: str, aws_key: str, aws_pass: str):
....
s3_client = boto3.client('s3', aws_access_key_id=aws_key, aws_secret_access_key=aws_pass)
s3_client.upload_file(from_filename, bucket_name, to_filename)
, поэтому для каждой среды мне нужно обновить аргументы, чтобы они содержали правильные учетные данные, и это усложняет поддержку, поскольку каждый раз, когда я хочу обновиться с dev на stg на prod, могу просто скопируйте код.
Мой вопрос: как лучше всего передать эти полномочия?