• resource "aws_security_group_rule" "http_ingress" count = module.this.enabled && var.security_group_enabled && var.http_enabled ? 1 : 0type = "ingressfrom_port = var.http_portto_port = var.http_portprotocol = "tcp"cidr_blocks = var.http_ingress_cidr_blocksprefix_list_ids = var.http_ingress_prefix_list_idssecurity_group_id = join("", aws_security_group.default.*.id)}resource "aws_security_group_rule" "https_ingress" {count = module.this.enabled && var.security_group_enabled && var.https_enabled ? 1 : type = "ingressfrom_port = var.https_portto_port = var.https_portprotocol = "tcp"cidr_blocks = var.https_ingress_cidr_blocksprefix_list_ids = var.https_ingress_prefix_list_idssecurity_group_id = join("", aws_security_group.default.*.id)}module "access_logs" {source = "cloudposse/lb-s3-bucket/aws"version = "0.16.0"enabled = module.this.enabled && var.access_logs_enabled && var.access_logs_s3_bucket_id == nullattributes = compact(concat(module.this.attributes, ["alb", "access", "logs"]))force_destroy = var.alb_access_logs_s3_bucket_force_destroyforce_destroy_enabled = var.alb_access_logs_s3_bucket_force_destroy_enabledlifecycle_configuration_rules = var.lifecycle_configuration_rules# TODO: deprecate these inputs in favor of `lifecycle_configuration_rules`lifecycle_rule_enabled = var.lifecycle_rule_enabledenable_glacier_transition = var.enable_glacier_transitionexpiration_days = var.expiration_daysglacier_transition_days = var.glacier_transition_daysnoncurrent_version_expiration_days = var.noncurrent_version_expiration_daysnoncurrent_version_transition_days = var.noncurrent_version_transition_daysstandard_transition_days = var.standard_transition_dayscontext = module.this.context}module "default_load_balancer_label" {source = "cloudposse/label/null"version = "0.25.0 id_length_limit = var.load_balancer_name_max_lengthcontext = module.this.contextresource "aws_lb" "default" {#bridgecrew:skip=BC_AWS_NETWORKING_41 - Skipping Ensure that ALB Drops HTTP Headers#bridgecrew:skip=BC_AWS_LOGGING_22 - Skipping Ensure ELBv2 has Access Logging Enabledcount = module.this.enabled ? 1 : 0name = var.load_balancer_name == "" ? module.default_load_balancer_label.id : substr(var.load_balancer_name, 0, var.load_balancer_name_max_length)tags = module.this.tagsinternal = var.internalload_balancer_type = "application"security_groups = compact(concat(var.security_group_ids, [join("", aws_security_group.default.*.id)])) subnets = var.subnet_idsenable_cross_zone_load_balancing = var.cross_zone_load_balancing_enabledenable_http2 = var.http2_enabledidle_timeout = var.idle_timeouip_address_type var.ip_address_typeenable_deletion_protection = var.deletion_protection_enableddrop_invalid_header_fields = var.drop_invalid_header_fieldspreserve_host_header = var.preserve_host_headerresource "aws_security_group_rule" "http_ingress" count = module.this.enabled && var.security_group_enabled && var.http_enabled ? 1 : 0type = "ingressfrom_port = var.http_portto_port = var.http_portprotocol = "tcp"cidr_blocks = var.http_ingress_cidr_blocksprefix_list_ids = var.http_ingress_prefix_list_idssecurity_group_id = join("", aws_security_group.default.*.id)}resource "aws_security_group_rule" "https_ingress" {count = module.this.enabled && var.security_group_enabled && var.https_enabled ? 1 : type = "ingressfrom_port = var.https_portto_port = var.https_portprotocol = "tcp"cidr_blocks = var.https_ingress_cidr_blocksprefix_list_ids = var.https_ingress_prefix_list_idssecurity_group_id = join("", aws_security_group.default.*.id)}module "access_logs" {source = "cloudposse/lb-s3-bucket/aws"version = "0.16.0"enabled = module.this.enabled && var.access_logs_enabled && var.access_logs_s3_bucket_id == nullattributes = compact(concat(module.this.attributes, ["alb", "access", "logs"]))force_destroy = var.alb_access_logs_s3_bucket_force_destroyforce_destroy_enabled = var.alb_access_logs_s3_bucket_force_destroy_enabledlifecycle_configuration_rules = var.lifecycle_configuration_rules# TODO: deprecate these inputs in favor of `lifecycle_configuration_rules`lifecycle_rule_enabled = var.lifecycle_rule_enabledenable_glacier_transition = var.enable_glacier_transitionexpiration_days = var.expiration_daysglacier_transition_days = var.glacier_transition_daysnoncurrent_version_expiration_days = var.noncurrent_version_expiration_daysnoncurrent_version_transition_days = var.noncurrent_version_transition_daysstandard_transition_days = var.standard_transition_dayscontext = module.this.context}module "default_load_balancer_label" {source = "cloudposse/label/null"version = "0.25.0 id_length_limit = var.load_balancer_name_max_lengthcontext = module.this.contextresource "aws_lb" "default" {#bridgecrew:skip=BC_AWS_NETWORKING_41 - Skipping Ensure that ALB Drops HTTP Headers#bridgecrew:skip=BC_AWS_LOGGING_22 - Skipping Ensure ELBv2 has Access Logging Enabledcount = module.this.enabled ? 1 : 0name = var.load_balancer_name == "" ? module.default_load_balancer_label.id : substr(var.load_balancer_name, 0, var.load_balancer_name_max_length)tags = module.this.tagsinternal = var.internalload_balancer_type = "application"security_groups = compact(concat(var.security_group_ids, [join("", aws_security_group.default.*.id)])) subnets = var.subnet_idsenable_cross_zone_load_balancing = var.cross_zone_load_balancing_enabledenable_http2 = var.http2_enabledidle_timeout = var.idle_timeouip_address_type var.ip_address_typeenable_deletion_protection = var.deletion_protection_enableddrop_invalid_header_fields = var.drop_invalid_header_fieldspreserve_host_header =resource "aws_security_group_rule" "http_ingress" count = module.this.enabled && var.security_group_enabled && var.http_enabled ? 1 : 0type = "ingressfrom_port = var.http_portto_port = var.http_portprotocol = "tcp"cidr_blocks = var.http_ingress_cidr_blocksprefix_list_ids = var.http_ingress_prefix_list_idssecurity_group_id = join("", aws_security_group.default.*.id)}resource "aws_security_group_rule" "https_ingress" {count = module.this.enabled && var.security_group_enabled && var.https_enabled ? 1 : type = "ingressfrom_port = var.https_portto_port = var.https_portprotocol = "tcp"cidr_blocks = var.https_ingress_cidr_blocksprefix_list_ids = var.https_ingress_prefix_list_idssecurity_group_id = join("", aws_security_group.default.*.id)}module "access_logs" {source = "cloudposse/lb-s3-bucket/aws"version = "0.16.0"enabled = module.this.enabled && var.access_logs_enabled && var.access_logs_s3_bucket_id == nullattributes = compact(concat(module.this.attributes, ["alb", "access", "logs"]))force_destroy = var.alb_access_logs_s3_bucket_force_destroyforce_destroy_enabled = var.alb_access_logs_s3_bucket_force_destroy_enabledlifecycle_configuration_rules = var.lifecycle_configuration_rules# TODO: deprecate these inputs in favor of `lifecycle_configuration_rules`lifecycle_rule_enabled = var.lifecycle_rule_enabledenable_glacier_transition = var.enable_glacier_transitionexpiration_days = var.expiration_daysglacier_transition_days = var.glacier_transition_daysnoncurrent_version_expiration_days = var.noncurrent_version_expiration_daysnoncurrent_version_transition_days = var.noncurrent_version_transition_daysstandard_transition_days = var.standard_transition_dayscontext = module.this.context}module "default_load_balancer_label" {source = "cloudposse/label/null"version = "0.25.0 id_length_limit = var.load_balancer_name_max_lengthcontext = module.this.contextresource "aws_lb" "default" {#bridgecrew:skip=BC_AWS_NETWORKING_41 - Skipping Ensure that ALB Drops HTTP Headers#bridgecrew:skip=BC_AWS_LOGGING_22 - Skipping Ensure ELBv2 has Access Logging Enabledcount = module.this.enabled ? 1 : 0name = var.load_balancer_name == "" ? module.default_load_balancer_label.id : substr(var.load_balancer_name, 0, var.load_balancer_name_max_length)tags = module.this.tagsinternal = var.internalload_balancer_type = "application"security_groups = compact(concat(var.security_group_ids, [join("", aws_security_group.default.*.id)])) subnets = var.subnet_idsenable_cross_zone_load_balancing = var.cross_zone_load_balancing_enabledenable_http2 = var.http2_enabledidle_timeout = var.idle_timeouip_address_type var.ip_address_typeenable_deletion_protection = var.deletion_protection_enableddrop_invalid_header_fields = var.drop_invalid_header_fieldspreserve_host_header = var.preserve_host_header var.preserve_host_header
Train and Deploy AI/ML Models with a Single Line of Code, Saving 70% on Compute Costs
Focus on Your Models;
We'll Take Care of the Machinery.
Train and deploy models, eliminating the instance guesswork.
No instance guesswork
GPU billed by seconds
Hassle-free access to GPUs at the lowest pricing
Provide the best compute prices for your needs.
Best CPU / GPU prices
Focus on model development. We've got the data, infrastructure, and deployment covered.
Push Data, Train Models, and Deploy as APIs in Minutes, Not Days.
Quickly Push youre data and store datasets at best prices
Upload datasets seamlessly. We automatically find the best cloud storage prices for you.
Turn your models into APIs instantly
With a single command, your model is an active API. We handle data storage, instances, and load balancers. Receive a URL for immediate use, with autoscaling, high availability, and guaranteed best compute price.
Train on optimal instances eliminating guesswork
Initiate training with a simple Python command. We select the best spot instance based on your model's requirements, ensuring quick training at minimal costs. Just initiate and step back.
Train on optimal instances eliminating guesswork
Initiate training with a simple Python command. We select the best spot instance based on your model's requirements, ensuring quick training at minimal costs. Just initiate and step back.
Pricing
Pay As You Go
<2 days reaction
Email only
No region selection
AWS only
8x5 support
Self-Hosted
30% off AWS on-demand
29+ regions
All channels
15 min reaction
24/7 support
AWS, GCP, Azure
Up to 90% compute discount
KTL.AI, INC.
353 West 48th St
New York, NY 10036
hi@ktl.ai