source/idea/infrastructure/install/parameters/internet_proxy.py (61 lines of code) (raw):
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
from dataclasses import dataclass
from typing import Any
from idea.infrastructure.install.constants import (
OPTIONAL_INPUT_PARAMETER_LABEL_SUFFIX,
PROXY_URL_REGEX,
)
from idea.infrastructure.install.parameters.base import Attributes, Base, Key
class InternetProxyKey(Key):
HTTP_PROXY = "HttpProxy"
HTTPS_PROXY = "HttpsProxy"
NO_PROXY = "NoProxy"
@dataclass
class InternetProxyParameters(Base):
http_proxy: str = Base.parameter(
Attributes(
id=InternetProxyKey.HTTP_PROXY,
type="String",
description="For deployment in isolated environment, please configure a HTTP proxy to connect to AWS services without VPC endpoints.",
allowed_pattern=PROXY_URL_REGEX,
constraint_description="The http proxy must be a valid url with IP address and port number. example: http://169.254.169.254:8080",
)
)
https_proxy: str = Base.parameter(
Attributes(
id=InternetProxyKey.HTTPS_PROXY,
type="String",
description="For deployment in isolated environment, please configure a HTTPS proxy to connect to AWS services without VPC endpoints.",
allowed_pattern=PROXY_URL_REGEX,
constraint_description="The https proxy must be a valid url with IP address and port number. example: http://169.254.169.254:8080",
)
)
no_proxy: str = Base.parameter(
Attributes(
id=InternetProxyKey.NO_PROXY,
type="String",
description="For deployment in isolated environment, if you are setting up HTTP_PROXY and HTTPS_PROXY, the NO_PROXY parameters are required to prevent the instance from using proxy to query localhost, instance metadata IP addresses, and the services that support VPC endpoints. example: 169.254.170.2,localhost",
)
)
class InternetProxyParameterGroups:
parameter_group_for_internet_proxy: dict[str, Any] = {
"Label": {
"default": "Internet proxy configuration for RES deployed in isolated environment."
},
"Parameters": [
InternetProxyKey.HTTPS_PROXY,
InternetProxyKey.HTTP_PROXY,
InternetProxyKey.NO_PROXY,
],
}
class InternetProxyParameterLabels:
parameter_labels_for_internet_proxy: dict[str, Any] = {
InternetProxyKey.HTTPS_PROXY: {
"default": f"{InternetProxyKey.HTTPS_PROXY}{OPTIONAL_INPUT_PARAMETER_LABEL_SUFFIX}"
},
InternetProxyKey.HTTP_PROXY: {
"default": f"{InternetProxyKey.HTTP_PROXY}{OPTIONAL_INPUT_PARAMETER_LABEL_SUFFIX}"
},
InternetProxyKey.NO_PROXY: {
"default": f"{InternetProxyKey.NO_PROXY}{OPTIONAL_INPUT_PARAMETER_LABEL_SUFFIX}"
},
}