使用 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 执行此操作,将定义拆分为 pipelineObjects
、parameterObjects
和 parameterValues
。
我是否需要编写代码来将 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)
我有一个 json 格式的数据管道定义,我想 'put' 在 Python.
中使用 Boto3我知道您可以使用 put-pipeline-definition
, but Boto3 (and the AWS API) use a different format 通过 AWS CLI 执行此操作,将定义拆分为 pipelineObjects
、parameterObjects
和 parameterValues
。
我是否需要编写代码来将 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)