airflow.providers.microsoft.azure.operators.container_instances

模块内容

AzureContainerInstancesOperator

在 Azure 容器实例上启动容器。

属性

Volume

DEFAULT_ENVIRONMENT_VARIABLES

DEFAULT_SECURED_VARIABLES

DEFAULT_VOLUMES

DEFAULT_MEMORY_IN_GB

DEFAULT_CPU

airflow.providers.microsoft.azure.operators.container_instances.Volume[source]
airflow.providers.microsoft.azure.operators.container_instances.DEFAULT_ENVIRONMENT_VARIABLES: dict[str, str][source]
airflow.providers.microsoft.azure.operators.container_instances.DEFAULT_SECURED_VARIABLES: collections.abc.Sequence[str] = [][source]
airflow.providers.microsoft.azure.operators.container_instances.DEFAULT_VOLUMES: collections.abc.Sequence[Volume] = [][source]
airflow.providers.microsoft.azure.operators.container_instances.DEFAULT_MEMORY_IN_GB = 2.0[source]
airflow.providers.microsoft.azure.operators.container_instances.DEFAULT_CPU = 1.0[source]
class airflow.providers.microsoft.azure.operators.container_instances.AzureContainerInstancesOperator(*, ci_conn_id, resource_group, name, image, region, registry_conn_id=None, environment_variables=None, secured_variables=None, volumes=None, memory_in_gb=None, cpu=None, gpu=None, command=None, remove_on_error=True, fail_if_exists=True, tags=None, xcom_all=None, os_type='Linux', restart_policy='Never', ip_address=None, ports=None, subnet_ids=None, dns_config=None, diagnostics=None, priority='Regular', **kwargs)[source]

基类:airflow.models.BaseOperator

在 Azure 容器实例上启动容器。

参数
  • ci_conn_id (str) – 用于启动容器实例的服务主体的连接 ID

  • registry_conn_id (str | None) – 可以登录私有 Docker 注册表的用户连接 ID。对于 Azure,请使用 Azure 连接 ID

  • resource_group (str) – 应在其中启动此容器实例的资源组的名称

  • name (str) – 此容器实例的名称。请注意,此名称必须是唯一的,以便并行运行容器。

  • image (str) – 要使用的 Docker 镜像

  • region (str) – 应在其中启动此容器实例的区域

  • environment_variables (dict | None) – 包含将传递给正在运行的容器的环境变量的键值对

  • secured_variables (str | None) – 不应在容器外部公开的环境变量的名称(通常是密码)。

  • volumes (list | None) – 要挂载到容器的 Volume 元组列表。目前仅支持 Azure 文件共享。

  • memory_in_gb (Any | None) – 分配给此容器的内存量(以 GB 为单位)。

  • cpu (Any | None) – 分配给此容器的 CPU 数量。

  • gpu (Any | None) – 容器的 GPU 资源。

  • command (list[str] | None) – 在容器内运行的命令。

  • container_timeout – 容器实例执行允许的最长时间。

  • tags (dict[str, str] | None) – Azure 标签,以 str:str 的字典形式表示。

  • xcom_all (bool | None) – 控制日志是否像 DockerOperator 一样推送到 XCOM。可能的值包括: ‘None’, ‘True’, ‘False’。默认为 ‘None’,表示不将日志推送到 XCOM,这是历史行为。 ‘True’ 表示将所有日志推送到 XCOM,这可能存在超出 XCOM 大小限制的风险。 ‘False’ 表示仅将日志的最后一行推送到 XCOM。但是,日志将推送到 XCOM 的 “logs” 下,而不是 return_value,以避免破坏现有行为。

  • os_type (str) – 容器组中容器所需的操作系统类型。可能的值包括: ‘Windows’, ‘Linux’。

  • restart_policy (str) – 容器组中所有容器的重启策略。可能的值包括: ‘Always’, ‘OnFailure’, ‘Never’。

  • ip_address (azure.mgmt.containerinstance.models.IpAddress | None) – 容器组的 IP 地址类型。

  • subnet_ids (list[azure.mgmt.containerinstance.models.ContainerGroupSubnetId] | None) – 容器组的子网资源 ID。

  • dns_config (azure.mgmt.containerinstance.models.DnsConfiguration | None) – 容器组的 DNS 配置。

  • diagnostics (azure.mgmt.containerinstance.models.ContainerGroupDiagnostics | None) – 容器组诊断信息 (Log Analytics)。

  • priority (str | None) – 容器组优先级。可能的值包括: ‘Regular’, ‘Spot’。

示例:

AzureContainerInstancesOperator(
    ci_conn_id="azure_service_principal",
    registry_conn_id="azure_registry_user",
    resource_group="my-resource-group",
    name="my-container-name-{{ ds }}",
    image="myprivateregistry.azurecr.io/my_container:latest",
    region="westeurope",
    environment_variables={
        "MODEL_PATH": "my_value",
        "POSTGRES_LOGIN": "{{ macros.connection('postgres_default').login }}",
        "POSTGRES_PASSWORD": "{{ macros.connection('postgres_default').password }}",
        "JOB_GUID": "{{ ti.xcom_pull(task_ids='task1', key='guid') }}",
    },
    secured_variables=["POSTGRES_PASSWORD"],
    volumes=[
        ("azure_container_instance_conn_id", "my_storage_container", "my_fileshare", "/input-data", True),
    ],
    memory_in_gb=14.0,
    cpu=4.0,
    gpu=GpuResource(count=1, sku="K80"),
    subnet_ids=[
        {
            "id": "/subscriptions/00000000-0000-0000-0000-00000000000/resourceGroups/my_rg/providers/Microsoft.Network/virtualNetworks/my_vnet/subnets/my_subnet"
        }
    ],
    dns_config={"name_servers": ["10.0.0.10", "10.0.0.11"]},
    diagnostics={
        "log_analytics": {
            "workspaceId": "workspaceid",
            "workspaceKey": "workspaceKey",
        }
    },
    priority="Regular",
    command=["/bin/echo", "world"],
    task_id="start_container",
)
template_fields: collections.abc.Sequence[str] = ('name', 'image', 'command', 'environment_variables', 'volumes')[source]
template_fields_renderers[source]
execute(context)[source]

创建操作符时派生。

上下文是与渲染 Jinja 模板时使用的相同字典。

请参阅 get_template_context 以了解更多上下文。

on_kill()[source]

当任务实例被终止时,重写此方法以清理子进程。

操作符中任何对 threading、subprocess 或 multiprocessing 模块的使用都需要清理,否则会留下僵尸进程。

此条目是否有帮助?