在气流中为ECS操作员添加docker运行标志



我在气流中使用ECSBoperator,我需要将标志传递给docker运行。我在互联网上搜索了一下,但找不到一种方法来给ECOperator提供标志,比如:-D、-cpus等等。

有没有办法使用ECOperator将这些标志传递给docker运行(如果某个条件为true((与我们传递标签和网络配置的方式相同(,或者它们只能在运行docker映像的ECS容器中定义?

我不熟悉ECSOpearor,但如果我理解正确,那就是python库。您可以使用python 创建新任务

正如我在这个例子中看到的,可以设置task_definitionoverrides:

...
ecs_operator_task = ECSOperator(
task_id = "ecs_operator_task",
dag=dag,
cluster=CLUSTER_NAME,
task_definition=service['services'][0]['taskDefinition'],
launch_type=LAUNCH_TYPE,
overrides={
"containerOverrides":[
{
"name":CONTAINER_NAME,
"command":["ls", "-l", "/"],
},
],
},
network_configuration=service['services'][0]['networkConfiguration'],
awslogs_group="mwaa-ecs-zero",
awslogs_stream_prefix=f"ecs/{CONTAINER_NAME}",
...

因此,如果您想为整个任务设置CPU和内存规格,您必须更新task_definition字典参数(类似于service['services'][0]['taskDefinition']['cpu'] = 2048(
如果您想指定确切容器的参数,overrides应该是正确的方式:

overrides={
"containerOverrides":[
{
"cpu": 2048,
...
},
],
},

或者编辑后的CCD_ 7理论上可以直接设置在CCD_。。。

无论如何,大多数docker参数应该在containerDefinitions节中传递。

关于你的问题:

有没有办法将这些标志传递给docker运行的

如果我理解正确,您有一个JSONTaskDefinition文件,并希望使用docker在本地运行它?然后试着检查这些工具。它允许您将docker-compose.yml转换为ECS定义,这与您想要的相反,但也许其中一些工具能够将其转换为ECS。。?换句话说,您必须手动解析TaskDefinition的JSON,并将其转换为docker命令参数

最新更新