使用 Boto3 放置 json 数据管道定义

Put json data pipeline definition using Boto3

我有一个 json 格式的数据管道定义,我想 'put' 在 Python.

中使用 Boto3

我知道您可以使用 put-pipeline-definition, but Boto3 (and the AWS API) use a different format 通过 AWS CLI 执行此操作,将定义拆分为 pipelineObjectsparameterObjectsparameterValues

我是否需要编写代码来将 json 定义转换为 API/Boto 所期望的定义?如果是这样,是否有图书馆可以做到这一点?

AWS CLI 有 code that does this translation,所以我可以借用它!

您可以使用以下形式的 python 函数将数据管道导出的 JSON 格式转换为 boto3 期望的 pipelineObjects 格式。

def convert_to_pipeline_objects(pipeline_definition_dict):
    objects_list = []
    for def_object in pipeline_definition_dict['objects']:
        new_object = {
            'id': def_object['id'],
            'name': def_object['name'],
            'fields': []
        }
        for key in def_object.keys():
            if key in ('id', 'name'):
                continue
            if type(def_object[key]) == dict:
                new_object['fields'].append(
                    {
                        'key': key,
                        'refValue': def_object[key]['ref']
                    }
                )
            else:
                new_object['fields'].append(
                    {
                        'key': key,
                        'stringValue': def_object[key]
                    }
                )
        objects_list.append(new_object)