# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import warnings
import pulumi
import pulumi.runtime
from typing import Any, Dict, List, Mapping, Optional, Tuple, Union
from .. import _utilities, _tables

__all__ = [
    'EndpointConfigurationProductionVariantArgs',
    'ModelContainerArgs',
    'ModelPrimaryContainerArgs',
    'ModelVpcConfigArgs',
]

@pulumi.input_type
class EndpointConfigurationProductionVariantArgs:
    def __init__(__self__, *,
                 initial_instance_count: pulumi.Input[float],
                 instance_type: pulumi.Input[str],
                 model_name: pulumi.Input[str],
                 accelerator_type: Optional[pulumi.Input[str]] = None,
                 initial_variant_weight: Optional[pulumi.Input[float]] = None,
                 variant_name: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[float] initial_instance_count: Initial number of instances used for auto-scaling.
        :param pulumi.Input[str] instance_type: The type of instance to start.
        :param pulumi.Input[str] model_name: The name of the model to use.
        :param pulumi.Input[str] accelerator_type: The size of the Elastic Inference (EI) instance to use for the production variant.
        :param pulumi.Input[float] initial_variant_weight: Determines initial traffic distribution among all of the models that you specify in the endpoint configuration. If unspecified, it defaults to 1.0.
        :param pulumi.Input[str] variant_name: The name of the variant. If omitted, this provider will assign a random, unique name.
        """
        pulumi.set(__self__, "initial_instance_count", initial_instance_count)
        pulumi.set(__self__, "instance_type", instance_type)
        pulumi.set(__self__, "model_name", model_name)
        if accelerator_type is not None:
            pulumi.set(__self__, "accelerator_type", accelerator_type)
        if initial_variant_weight is not None:
            pulumi.set(__self__, "initial_variant_weight", initial_variant_weight)
        if variant_name is not None:
            pulumi.set(__self__, "variant_name", variant_name)

    @property
    @pulumi.getter(name="initialInstanceCount")
    def initial_instance_count(self) -> pulumi.Input[float]:
        """
        Initial number of instances used for auto-scaling.
        """
        return pulumi.get(self, "initial_instance_count")

    @initial_instance_count.setter
    def initial_instance_count(self, value: pulumi.Input[float]):
        pulumi.set(self, "initial_instance_count", value)

    @property
    @pulumi.getter(name="instanceType")
    def instance_type(self) -> pulumi.Input[str]:
        """
        The type of instance to start.
        """
        return pulumi.get(self, "instance_type")

    @instance_type.setter
    def instance_type(self, value: pulumi.Input[str]):
        pulumi.set(self, "instance_type", value)

    @property
    @pulumi.getter(name="modelName")
    def model_name(self) -> pulumi.Input[str]:
        """
        The name of the model to use.
        """
        return pulumi.get(self, "model_name")

    @model_name.setter
    def model_name(self, value: pulumi.Input[str]):
        pulumi.set(self, "model_name", value)

    @property
    @pulumi.getter(name="acceleratorType")
    def accelerator_type(self) -> Optional[pulumi.Input[str]]:
        """
        The size of the Elastic Inference (EI) instance to use for the production variant.
        """
        return pulumi.get(self, "accelerator_type")

    @accelerator_type.setter
    def accelerator_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "accelerator_type", value)

    @property
    @pulumi.getter(name="initialVariantWeight")
    def initial_variant_weight(self) -> Optional[pulumi.Input[float]]:
        """
        Determines initial traffic distribution among all of the models that you specify in the endpoint configuration. If unspecified, it defaults to 1.0.
        """
        return pulumi.get(self, "initial_variant_weight")

    @initial_variant_weight.setter
    def initial_variant_weight(self, value: Optional[pulumi.Input[float]]):
        pulumi.set(self, "initial_variant_weight", value)

    @property
    @pulumi.getter(name="variantName")
    def variant_name(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the variant. If omitted, this provider will assign a random, unique name.
        """
        return pulumi.get(self, "variant_name")

    @variant_name.setter
    def variant_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "variant_name", value)


@pulumi.input_type
class ModelContainerArgs:
    def __init__(__self__, *,
                 image: pulumi.Input[str],
                 container_hostname: Optional[pulumi.Input[str]] = None,
                 environment: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 model_data_url: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] image: The registry path where the inference code image is stored in Amazon ECR.
        :param pulumi.Input[str] container_hostname: The DNS host name for the container.
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] environment: Environment variables for the Docker container.
               A list of key value pairs.
        :param pulumi.Input[str] model_data_url: The URL for the S3 location where model artifacts are stored.
        """
        pulumi.set(__self__, "image", image)
        if container_hostname is not None:
            pulumi.set(__self__, "container_hostname", container_hostname)
        if environment is not None:
            pulumi.set(__self__, "environment", environment)
        if model_data_url is not None:
            pulumi.set(__self__, "model_data_url", model_data_url)

    @property
    @pulumi.getter
    def image(self) -> pulumi.Input[str]:
        """
        The registry path where the inference code image is stored in Amazon ECR.
        """
        return pulumi.get(self, "image")

    @image.setter
    def image(self, value: pulumi.Input[str]):
        pulumi.set(self, "image", value)

    @property
    @pulumi.getter(name="containerHostname")
    def container_hostname(self) -> Optional[pulumi.Input[str]]:
        """
        The DNS host name for the container.
        """
        return pulumi.get(self, "container_hostname")

    @container_hostname.setter
    def container_hostname(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "container_hostname", value)

    @property
    @pulumi.getter
    def environment(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
        """
        Environment variables for the Docker container.
        A list of key value pairs.
        """
        return pulumi.get(self, "environment")

    @environment.setter
    def environment(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
        pulumi.set(self, "environment", value)

    @property
    @pulumi.getter(name="modelDataUrl")
    def model_data_url(self) -> Optional[pulumi.Input[str]]:
        """
        The URL for the S3 location where model artifacts are stored.
        """
        return pulumi.get(self, "model_data_url")

    @model_data_url.setter
    def model_data_url(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "model_data_url", value)


@pulumi.input_type
class ModelPrimaryContainerArgs:
    def __init__(__self__, *,
                 image: pulumi.Input[str],
                 container_hostname: Optional[pulumi.Input[str]] = None,
                 environment: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 model_data_url: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] image: The registry path where the inference code image is stored in Amazon ECR.
        :param pulumi.Input[str] container_hostname: The DNS host name for the container.
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] environment: Environment variables for the Docker container.
               A list of key value pairs.
        :param pulumi.Input[str] model_data_url: The URL for the S3 location where model artifacts are stored.
        """
        pulumi.set(__self__, "image", image)
        if container_hostname is not None:
            pulumi.set(__self__, "container_hostname", container_hostname)
        if environment is not None:
            pulumi.set(__self__, "environment", environment)
        if model_data_url is not None:
            pulumi.set(__self__, "model_data_url", model_data_url)

    @property
    @pulumi.getter
    def image(self) -> pulumi.Input[str]:
        """
        The registry path where the inference code image is stored in Amazon ECR.
        """
        return pulumi.get(self, "image")

    @image.setter
    def image(self, value: pulumi.Input[str]):
        pulumi.set(self, "image", value)

    @property
    @pulumi.getter(name="containerHostname")
    def container_hostname(self) -> Optional[pulumi.Input[str]]:
        """
        The DNS host name for the container.
        """
        return pulumi.get(self, "container_hostname")

    @container_hostname.setter
    def container_hostname(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "container_hostname", value)

    @property
    @pulumi.getter
    def environment(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
        """
        Environment variables for the Docker container.
        A list of key value pairs.
        """
        return pulumi.get(self, "environment")

    @environment.setter
    def environment(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
        pulumi.set(self, "environment", value)

    @property
    @pulumi.getter(name="modelDataUrl")
    def model_data_url(self) -> Optional[pulumi.Input[str]]:
        """
        The URL for the S3 location where model artifacts are stored.
        """
        return pulumi.get(self, "model_data_url")

    @model_data_url.setter
    def model_data_url(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "model_data_url", value)


@pulumi.input_type
class ModelVpcConfigArgs:
    def __init__(__self__, *,
                 security_group_ids: pulumi.Input[List[pulumi.Input[str]]],
                 subnets: pulumi.Input[List[pulumi.Input[str]]]):
        pulumi.set(__self__, "security_group_ids", security_group_ids)
        pulumi.set(__self__, "subnets", subnets)

    @property
    @pulumi.getter(name="securityGroupIds")
    def security_group_ids(self) -> pulumi.Input[List[pulumi.Input[str]]]:
        return pulumi.get(self, "security_group_ids")

    @security_group_ids.setter
    def security_group_ids(self, value: pulumi.Input[List[pulumi.Input[str]]]):
        pulumi.set(self, "security_group_ids", value)

    @property
    @pulumi.getter
    def subnets(self) -> pulumi.Input[List[pulumi.Input[str]]]:
        return pulumi.get(self, "subnets")

    @subnets.setter
    def subnets(self, value: pulumi.Input[List[pulumi.Input[str]]]):
        pulumi.set(self, "subnets", value)


