Vadym Dytyniak
12/03/2021, 10:13 AMAnna Geller
Vadym Dytyniak
12/03/2021, 10:19 AMVadym Dytyniak
12/03/2021, 10:21 AMAnna Geller
flow.run_config = DockerRun(env={"EXTRA_PIP_PACKAGES": "my-extra-package1 my-extra-package2"})
But even if it works with ECSRun and KubernetesRun, would you want that any time your flow starts to run it needs to first install all dependencies every time? It introduces a lot of unnecessary (expensive) latency to each run. If you instead have all your dependencies baked into an image, the only latency is pulling the image, not building it.Anna Geller
from prefect.run_configs import ECSRun
flow.run_config = ECSRun(env={"EXTRA_PIP_PACKAGES": "scikit-learn pandas"})
Vadym Dytyniak
12/03/2021, 10:29 AMVadym Dytyniak
12/03/2021, 10:29 AMself.run_config = UniversalRun(
env={
"EXTRA_PIP_PACKAGES": "my-lib==0.1.3"
}
)
Anna Geller
Vadym Dytyniak
12/03/2021, 10:30 AMVadym Dytyniak
12/03/2021, 10:30 AMVadym Dytyniak
12/03/2021, 10:30 AMVadym Dytyniak
12/03/2021, 10:30 AMAnna Geller
Anna Geller
Vadym Dytyniak
12/03/2021, 10:33 AMVadym Dytyniak
12/03/2021, 10:36 AMVadym Dytyniak
12/03/2021, 10:36 AMAnna Geller
Vadym Dytyniak
12/03/2021, 11:04 AMAnna Geller
Vadym Dytyniak
12/03/2021, 11:10 AMVadym Dytyniak
12/03/2021, 1:41 PMVadym Dytyniak
12/03/2021, 1:41 PMVadym Dytyniak
12/03/2021, 1:41 PMAnna Geller
from prefect.run_configs import ECSRun
flow.run_config = ECSRun(env={"EXTRA_PIP_PACKAGES": "scikit-learn pandas"})
and then check in your flow if you can import those:
import pandas
you could e.g. test it by installing e.g. a different version of some package that you use in your base image and log the version in your flow to see of that worked.Vadym Dytyniak
12/03/2021, 1:53 PMAnna Geller
Vadym Dytyniak
12/03/2021, 1:56 PMVadym Dytyniak
12/03/2021, 1:56 PMVadym Dytyniak
12/03/2021, 1:56 PMAnna Geller
Vadym Dytyniak
12/03/2021, 2:03 PMVadym Dytyniak
12/03/2021, 2:04 PMAnna Geller
Vadym Dytyniak
12/03/2021, 2:25 PMKevin Kho
Vadym Dytyniak
12/03/2021, 4:06 PMVadym Dytyniak
12/03/2021, 4:07 PMVadym Dytyniak
12/03/2021, 4:25 PMKevin Kho
task_definition = yaml.safe_load(
"""
cpu: 1024
memory: 2048
containerDefinitions:
- name: flow
logConfiguration:
logDriver: awslogs
options:
awslogs-group: /ecs/prefect-flow
awslogs-region: us-east-1
awslogs-stream-prefix: ecs
awslogs-create-group: 'true'
"""
)
ECSRun( ..., task_definition=task_definition)
Vadym Dytyniak
12/03/2021, 4:28 PMKevin Kho
Kevin Kho
Kevin Kho
Vadym Dytyniak
12/03/2021, 4:31 PMKevin Kho
env
argument of the RunConfig?Vadym Dytyniak
12/03/2021, 4:37 PMVadym Dytyniak
12/03/2021, 4:37 PMKevin Kho
Spin up container (prefect base image)
Run entrypoint with EXTRA_PIP_PACKAGES
Download flow from Storage
Get ready to deploy flow (includes combining the env with agent env variables)
Run flow in container
So I think for that installation of the EXTRA_PIP_PACKAGES, that env variable won’t be set because it’s not set on the container, it’s set on the Flow RunVadym Dytyniak
12/03/2021, 4:40 PMKevin Kho
Kevin Kho
Vadym Dytyniak
12/03/2021, 4:42 PMKevin Kho
Vadym Dytyniak
12/03/2021, 4:45 PMKevin Kho
Vadym Dytyniak
12/03/2021, 4:47 PMKevin Kho