Commit c326287d authored by Ilia Lazebnik's avatar Ilia Lazebnik Committed by Anton Babenko

Add VPC endpoints for ELB, CloudTrail, CloudWatch and SNS (#274)

parent 3d33b1fc
......@@ -16,7 +16,8 @@ These types of resources are supported:
* [VPN Gateway](https://www.terraform.io/docs/providers/aws/r/vpn_gateway.html)
* [VPC Endpoint](https://www.terraform.io/docs/providers/aws/r/vpc_endpoint.html):
* Gateway: S3, DynamoDB
* Interface: EC2, SSM, EC2 Messages, SSM Messages, SQS, ECR API, ECR DKR, API Gateway, KMS, ECS, ECS Agent, ECS Telemetry
* Interface: EC2, SSM, EC2 Messages, SSM Messages, SQS, ECR API, ECR DKR, API Gateway, KMS, ECS, ECS Agent, ECS
Telemetry, SNS, CloudWatch(Monitoring, Logs, Events), Elastic Load Balancing, CloudTrail-
* [RDS DB Subnet Group](https://www.terraform.io/docs/providers/aws/r/db_subnet_group.html)
* [ElastiCache Subnet Group](https://www.terraform.io/docs/providers/aws/r/elasticache_subnet_group.html)
* [Redshift Subnet Group](https://www.terraform.io/docs/providers/aws/r/redshift_subnet_group.html)
......@@ -209,6 +210,9 @@ Sometimes it is handy to have public access to Redshift clusters (for example if
| assign\_generated\_ipv6\_cidr\_block | Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IP addresses, or the size of the CIDR block | string | `"false"` | no |
| azs | A list of availability zones in the region | list | `[]` | no |
| cidr | The CIDR block for the VPC. Default value is a valid CIDR, but not acceptable by AWS and should be overridden | string | `"0.0.0.0/0"` | no |
| cloudtrail\_endpoint\_private\_dns\_enabled | Whether or not to associate a private hosted zone with the specified VPC for CloudTrail endpoint | string | `"false"` | no |
| cloudtrail\_endpoint\_security\_group\_ids | The ID of one or more security groups to associate with the network interface for CloudTrail endpoint | list | `[]` | no |
| cloudtrail\_endpoint\_subnet\_ids | The ID of one or more subnets in which to create a network interface for CloudTrail endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used. | list | `[]` | no |
| create\_database\_internet\_gateway\_route | Controls if an internet gateway route for public database access should be created | string | `"false"` | no |
| create\_database\_nat\_gateway\_route | Controls if a nat gateway route should be created to give internet access to the database subnets | string | `"false"` | no |
| create\_database\_subnet\_group | Controls if database subnet group should be created | string | `"true"` | no |
......@@ -271,7 +275,11 @@ Sometimes it is handy to have public access to Redshift clusters (for example if
| elasticache\_subnet\_suffix | Suffix to append to elasticache subnets name | string | `"elasticache"` | no |
| elasticache\_subnet\_tags | Additional tags for the elasticache subnets | map | `{}` | no |
| elasticache\_subnets | A list of elasticache subnets | list | `[]` | no |
| elasticloadbalancing\_endpoint\_private\_dns\_enabled | Whether or not to associate a private hosted zone with the specified VPC for Elastic Load Balancing endpoint | string | `"false"` | no |
| elasticloadbalancing\_endpoint\_security\_group\_ids | The ID of one or more security groups to associate with the network interface for Elastic Load Balancing endpoint | list | `[]` | no |
| elasticloadbalancing\_endpoint\_subnet\_ids | The ID of one or more subnets in which to create a network interface for Elastic Load Balancing endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used. | list | `[]` | no |
| enable\_apigw\_endpoint | Should be true if you want to provision an api gateway endpoint to the VPC | string | `"false"` | no |
| enable\_cloudtrail\_endpoint | Should be true if you want to provision a CloudTrail endpoint to the VPC | string | `"false"` | no |
| enable\_dhcp\_options | Should be true if you want to specify a DHCP options set with a custom domain name, DNS servers, NTP servers, netbios servers, and/or netbios server type | string | `"false"` | no |
| enable\_dns\_hostnames | Should be true to enable DNS hostnames in the VPC | string | `"false"` | no |
| enable\_dns\_support | Should be true to enable DNS support in the VPC | string | `"true"` | no |
......@@ -283,14 +291,22 @@ Sometimes it is handy to have public access to Redshift clusters (for example if
| enable\_ecs\_agent\_endpoint | Should be true if you want to provision a ECS Agent endpoint to the VPC | string | `"false"` | no |
| enable\_ecs\_endpoint | Should be true if you want to provision a ECS endpoint to the VPC | string | `"false"` | no |
| enable\_ecs\_telemetry\_endpoint | Should be true if you want to provision a ECS Telemetry endpoint to the VPC | string | `"false"` | no |
| enable\_elasticloadbalancing\_endpoint | Should be true if you want to provision a Elastic Load Balancing endpoint to the VPC | string | `"false"` | no |
| enable\_events\_endpoint | Should be true if you want to provision a CloudWatch Events endpoint to the VPC | string | `"false"` | no |
| enable\_kms\_endpoint | Should be true if you want to provision a KMS endpoint to the VPC | string | `"false"` | no |
| enable\_logs\_endpoint | Should be true if you want to provision a CloudWatch Logs endpoint to the VPC | string | `"false"` | no |
| enable\_monitoring\_endpoint | Should be true if you want to provision a CloudWatch Monitoring endpoint to the VPC | string | `"false"` | no |
| enable\_nat\_gateway | Should be true if you want to provision NAT Gateways for each of your private networks | string | `"false"` | no |
| enable\_public\_redshift | Controls if redshift should have public routing table | string | `"false"` | no |
| enable\_s3\_endpoint | Should be true if you want to provision an S3 endpoint to the VPC | string | `"false"` | no |
| enable\_sns\_endpoint | Should be true if you want to provision a SNS endpoint to the VPC | string | `"false"` | no |
| enable\_sqs\_endpoint | Should be true if you want to provision an SQS endpoint to the VPC | string | `"false"` | no |
| enable\_ssm\_endpoint | Should be true if you want to provision an SSM endpoint to the VPC | string | `"false"` | no |
| enable\_ssmmessages\_endpoint | Should be true if you want to provision a SSMMESSAGES endpoint to the VPC | string | `"false"` | no |
| enable\_vpn\_gateway | Should be true if you want to create a new VPN Gateway resource and attach it to the VPC | string | `"false"` | no |
| events\_endpoint\_private\_dns\_enabled | Whether or not to associate a private hosted zone with the specified VPC for CloudWatch Events endpoint | string | `"false"` | no |
| events\_endpoint\_security\_group\_ids | The ID of one or more security groups to associate with the network interface for CloudWatch Events endpoint | list | `[]` | no |
| events\_endpoint\_subnet\_ids | The ID of one or more subnets in which to create a network interface for CloudWatch Events endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used. | list | `[]` | no |
| external\_nat\_ip\_ids | List of EIP IDs to be assigned to the NAT Gateways (used in combination with reuse_nat_ips) | list | `[]` | no |
| igw\_tags | Additional tags for the internet gateway | map | `{}` | no |
| instance\_tenancy | A tenancy option for instances launched into the VPC | string | `"default"` | no |
......@@ -305,9 +321,15 @@ Sometimes it is handy to have public access to Redshift clusters (for example if
| kms\_endpoint\_private\_dns\_enabled | Whether or not to associate a private hosted zone with the specified VPC for KMS endpoint | string | `"false"` | no |
| kms\_endpoint\_security\_group\_ids | The ID of one or more security groups to associate with the network interface for KMS endpoint | list | `[]` | no |
| kms\_endpoint\_subnet\_ids | The ID of one or more subnets in which to create a network interface for KMS endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used. | list | `[]` | no |
| logs\_endpoint\_private\_dns\_enabled | Whether or not to associate a private hosted zone with the specified VPC for CloudWatch Logs endpoint | string | `"false"` | no |
| logs\_endpoint\_security\_group\_ids | The ID of one or more security groups to associate with the network interface for CloudWatch Logs endpoint | list | `[]` | no |
| logs\_endpoint\_subnet\_ids | The ID of one or more subnets in which to create a network interface for CloudWatch Logs endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used. | list | `[]` | no |
| manage\_default\_network\_acl | Should be true to adopt and manage Default Network ACL | string | `"false"` | no |
| manage\_default\_vpc | Should be true to adopt and manage Default VPC | string | `"false"` | no |
| map\_public\_ip\_on\_launch | Should be false if you do not want to auto-assign public IP on launch | string | `"true"` | no |
| monitoring\_endpoint\_private\_dns\_enabled | Whether or not to associate a private hosted zone with the specified VPC for CloudWatch Monitoring endpoint | string | `"false"` | no |
| monitoring\_endpoint\_security\_group\_ids | The ID of one or more security groups to associate with the network interface for CloudWatch Monitoring endpoint | list | `[]` | no |
| monitoring\_endpoint\_subnet\_ids | The ID of one or more subnets in which to create a network interface for CloudWatch Monitoring endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used. | list | `[]` | no |
| name | Name to be used on all the resources as identifier | string | `""` | no |
| nat\_eip\_tags | Additional tags for the NAT EIP | map | `{}` | no |
| nat\_gateway\_tags | Additional tags for the NAT gateways | map | `{}` | no |
......@@ -342,6 +364,9 @@ Sometimes it is handy to have public access to Redshift clusters (for example if
| reuse\_nat\_ips | Should be true if you don't want EIPs to be created for your NAT Gateways and will instead pass them in via the 'external_nat_ip_ids' variable | string | `"false"` | no |
| secondary\_cidr\_blocks | List of secondary CIDR blocks to associate with the VPC to extend the IP Address pool | list | `[]` | no |
| single\_nat\_gateway | Should be true if you want to provision a single shared NAT Gateway across all of your private networks | string | `"false"` | no |
| sns\_endpoint\_private\_dns\_enabled | Whether or not to associate a private hosted zone with the specified VPC for SNS endpoint | string | `"false"` | no |
| sns\_endpoint\_security\_group\_ids | The ID of one or more security groups to associate with the network interface for SNS endpoint | list | `[]` | no |
| sns\_endpoint\_subnet\_ids | The ID of one or more subnets in which to create a network interface for SNS endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used. | list | `[]` | no |
| sqs\_endpoint\_private\_dns\_enabled | Whether or not to associate a private hosted zone with the specified VPC for SQS endpoint | string | `"false"` | no |
| sqs\_endpoint\_security\_group\_ids | The ID of one or more security groups to associate with the network interface for SQS endpoint | list | `[]` | no |
| sqs\_endpoint\_subnet\_ids | The ID of one or more subnets in which to create a network interface for SQS endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used. | list | `[]` | no |
......@@ -419,6 +444,9 @@ Sometimes it is handy to have public access to Redshift clusters (for example if
| vpc\_endpoint\_apigw\_dns\_entry | The DNS entries for the VPC Endpoint for APIGW. |
| vpc\_endpoint\_apigw\_id | The ID of VPC endpoint for APIGW |
| vpc\_endpoint\_apigw\_network\_interface\_ids | One or more network interfaces for the VPC Endpoint for APIGW. |
| vpc\_endpoint\_cloudtrail\_dns\_entry | The DNS entries for the VPC Endpoint for CloudTrail. |
| vpc\_endpoint\_cloudtrail\_id | The ID of VPC endpoint for CloudTrail |
| vpc\_endpoint\_cloudtrail\_network\_interface\_ids | One or more network interfaces for the VPC Endpoint for CloudTrail. |
| vpc\_endpoint\_dynamodb\_id | The ID of VPC endpoint for DynamoDB |
| vpc\_endpoint\_dynamodb\_pl\_id | The prefix list for the DynamoDB VPC endpoint. |
| vpc\_endpoint\_ec2\_dns\_entry | The DNS entries for the VPC Endpoint for EC2. |
......@@ -442,11 +470,26 @@ Sometimes it is handy to have public access to Redshift clusters (for example if
| vpc\_endpoint\_ecs\_telemetry\_dns\_entry | The DNS entries for the VPC Endpoint for ECS Telemetry. |
| vpc\_endpoint\_ecs\_telemetry\_id | The ID of VPC endpoint for ECS Telemetry |
| vpc\_endpoint\_ecs\_telemetry\_network\_interface\_ids | One or more network interfaces for the VPC Endpoint for ECS Telemetry. |
| vpc\_endpoint\_elasticloadbalancing\_dns\_entry | The DNS entries for the VPC Endpoint for Elastic Load Balancing. |
| vpc\_endpoint\_elasticloadbalancing\_id | The ID of VPC endpoint for Elastic Load Balancing |
| vpc\_endpoint\_elasticloadbalancing\_network\_interface\_ids | One or more network interfaces for the VPC Endpoint for Elastic Load Balancing. |
| vpc\_endpoint\_events\_dns\_entry | The DNS entries for the VPC Endpoint for CloudWatch Events. |
| vpc\_endpoint\_events\_id | The ID of VPC endpoint for CloudWatch Events |
| vpc\_endpoint\_events\_network\_interface\_ids | One or more network interfaces for the VPC Endpoint for CloudWatch Events. |
| vpc\_endpoint\_kms\_dns\_entry | The DNS entries for the VPC Endpoint for KMS. |
| vpc\_endpoint\_kms\_id | The ID of VPC endpoint for KMS |
| vpc\_endpoint\_kms\_network\_interface\_ids | One or more network interfaces for the VPC Endpoint for KMS. |
| vpc\_endpoint\_logs\_dns\_entry | The DNS entries for the VPC Endpoint for CloudWatch Logs. |
| vpc\_endpoint\_logs\_id | The ID of VPC endpoint for CloudWatch Logs |
| vpc\_endpoint\_logs\_network\_interface\_ids | One or more network interfaces for the VPC Endpoint for CloudWatch Logs. |
| vpc\_endpoint\_monitoring\_dns\_entry | The DNS entries for the VPC Endpoint for CloudWatch Monitoring. |
| vpc\_endpoint\_monitoring\_id | The ID of VPC endpoint for CloudWatch Monitoring |
| vpc\_endpoint\_monitoring\_network\_interface\_ids | One or more network interfaces for the VPC Endpoint for CloudWatch Monitoring. |
| vpc\_endpoint\_s3\_id | The ID of VPC endpoint for S3 |
| vpc\_endpoint\_s3\_pl\_id | The prefix list for the S3 VPC endpoint. |
| vpc\_endpoint\_sns\_dns\_entry | The DNS entries for the VPC Endpoint for SNS. |
| vpc\_endpoint\_sns\_id | The ID of VPC endpoint for SNS |
| vpc\_endpoint\_sns\_network\_interface\_ids | One or more network interfaces for the VPC Endpoint for SNS. |
| vpc\_endpoint\_sqs\_dns\_entry | The DNS entries for the VPC Endpoint for SQS. |
| vpc\_endpoint\_sqs\_id | The ID of VPC endpoint for SQS |
| vpc\_endpoint\_sqs\_network\_interface\_ids | One or more network interfaces for the VPC Endpoint for SQS. |
......
......@@ -851,7 +851,6 @@ resource "aws_vpc_endpoint" "kms" {
private_dns_enabled = "${var.kms_endpoint_private_dns_enabled}"
}
#######################
# VPC Endpoint for ECS
#######################
......@@ -873,7 +872,6 @@ resource "aws_vpc_endpoint" "ecs" {
private_dns_enabled = "${var.ecs_endpoint_private_dns_enabled}"
}
#######################
# VPC Endpoint for ECS Agent
#######################
......@@ -895,7 +893,6 @@ resource "aws_vpc_endpoint" "ecs_agent" {
private_dns_enabled = "${var.ecs_agent_endpoint_private_dns_enabled}"
}
#######################
# VPC Endpoint for ECS Telemetry
#######################
......@@ -917,6 +914,132 @@ resource "aws_vpc_endpoint" "ecs_telemetry" {
private_dns_enabled = "${var.ecs_telemetry_endpoint_private_dns_enabled}"
}
#######################
# VPC Endpoint for Elasic Load Balancing
#######################
data "aws_vpc_endpoint_service" "elasticloadbalancing" {
count = "${var.create_vpc && var.enable_elasticloadbalancing_endpoint ? 1 : 0}"
service = "elasticloadbalancing"
}
resource "aws_vpc_endpoint" "elasticloadbalancing" {
count = "${var.create_vpc && var.enable_elasticloadbalancing_endpoint ? 1 : 0}"
vpc_id = "${local.vpc_id}"
service_name = "${data.aws_vpc_endpoint_service.elasticloadbalancing.service_name}"
vpc_endpoint_type = "Interface"
security_group_ids = ["${var.elasticloadbalancing_endpoint_security_group_ids}"]
subnet_ids = ["${coalescelist(var.elasticloadbalancing_endpoint_subnet_ids, aws_subnet.private.*.id)}"]
private_dns_enabled = "${var.elasticloadbalancing_endpoint_private_dns_enabled}"
}
#######################
# VPC Endpoint for SNS
#######################
data "aws_vpc_endpoint_service" "sns" {
count = "${var.create_vpc && var.enable_sns_endpoint ? 1 : 0}"
service = "sns"
}
resource "aws_vpc_endpoint" "sns" {
count = "${var.create_vpc && var.enable_sns_endpoint ? 1 : 0}"
vpc_id = "${local.vpc_id}"
service_name = "${data.aws_vpc_endpoint_service.sns.service_name}"
vpc_endpoint_type = "Interface"
security_group_ids = ["${var.sns_endpoint_security_group_ids}"]
subnet_ids = ["${coalescelist(var.sns_endpoint_subnet_ids, aws_subnet.private.*.id)}"]
private_dns_enabled = "${var.sns_endpoint_private_dns_enabled}"
}
#######################
# VPC Endpoint for CloudWatch Logs
#######################
data "aws_vpc_endpoint_service" "logs" {
count = "${var.create_vpc && var.enable_logs_endpoint ? 1 : 0}"
service = "logs"
}
resource "aws_vpc_endpoint" "logs" {
count = "${var.create_vpc && var.enable_logs_endpoint ? 1 : 0}"
vpc_id = "${local.vpc_id}"
service_name = "${data.aws_vpc_endpoint_service.logs.service_name}"
vpc_endpoint_type = "Interface"
security_group_ids = ["${var.logs_endpoint_security_group_ids}"]
subnet_ids = ["${coalescelist(var.logs_endpoint_subnet_ids, aws_subnet.private.*.id)}"]
private_dns_enabled = "${var.logs_endpoint_private_dns_enabled}"
}
#######################
# VPC Endpoint for CloudTrail
#######################
data "aws_vpc_endpoint_service" "cloudtrail" {
count = "${var.create_vpc && var.enable_cloudtrail_endpoint ? 1 : 0}"
service = "cloudtrail"
}
resource "aws_vpc_endpoint" "cloudtrail" {
count = "${var.create_vpc && var.enable_cloudtrail_endpoint ? 1 : 0}"
vpc_id = "${local.vpc_id}"
service_name = "${data.aws_vpc_endpoint_service.cloudtrail.service_name}"
vpc_endpoint_type = "Interface"
security_group_ids = ["${var.cloudtrail_endpoint_security_group_ids}"]
subnet_ids = ["${coalescelist(var.cloudtrail_endpoint_subnet_ids, aws_subnet.private.*.id)}"]
private_dns_enabled = "${var.cloudtrail_endpoint_private_dns_enabled}"
}
#######################
# VPC Endpoint for CloudWatch Monitoring
#######################
data "aws_vpc_endpoint_service" "monitoring" {
count = "${var.create_vpc && var.enable_monitoring_endpoint ? 1 : 0}"
service = "monitoring"
}
resource "aws_vpc_endpoint" "monitoring" {
count = "${var.create_vpc && var.enable_monitoring_endpoint ? 1 : 0}"
vpc_id = "${local.vpc_id}"
service_name = "${data.aws_vpc_endpoint_service.monitoring.service_name}"
vpc_endpoint_type = "Interface"
security_group_ids = ["${var.monitoring_endpoint_security_group_ids}"]
subnet_ids = ["${coalescelist(var.monitoring_endpoint_subnet_ids, aws_subnet.private.*.id)}"]
private_dns_enabled = "${var.monitoring_endpoint_private_dns_enabled}"
}
#######################
# VPC Endpoint for CloudWatch Events
#######################
data "aws_vpc_endpoint_service" "events" {
count = "${var.create_vpc && var.enable_events_endpoint ? 1 : 0}"
service = "events"
}
resource "aws_vpc_endpoint" "events" {
count = "${var.create_vpc && var.enable_events_endpoint ? 1 : 0}"
vpc_id = "${local.vpc_id}"
service_name = "${data.aws_vpc_endpoint_service.events.service_name}"
vpc_endpoint_type = "Interface"
security_group_ids = ["${var.events_endpoint_security_group_ids}"]
subnet_ids = ["${coalescelist(var.events_endpoint_subnet_ids, aws_subnet.private.*.id)}"]
private_dns_enabled = "${var.events_endpoint_private_dns_enabled}"
}
##########################
# Route table association
##########################
......
......@@ -524,6 +524,96 @@ output "vpc_endpoint_ecs_telemetry_dns_entry" {
value = "${flatten(aws_vpc_endpoint.ecs_telemetry.*.dns_entry)}"
}
output "vpc_endpoint_sns_id" {
description = "The ID of VPC endpoint for SNS"
value = "${element(concat(aws_vpc_endpoint.sns.*.id, list("")), 0)}"
}
output "vpc_endpoint_sns_network_interface_ids" {
description = "One or more network interfaces for the VPC Endpoint for SNS."
value = "${flatten(aws_vpc_endpoint.sns.*.network_interface_ids)}"
}
output "vpc_endpoint_sns_dns_entry" {
description = "The DNS entries for the VPC Endpoint for SNS."
value = "${flatten(aws_vpc_endpoint.sns.*.dns_entry)}"
}
output "vpc_endpoint_monitoring_id" {
description = "The ID of VPC endpoint for CloudWatch Monitoring"
value = "${element(concat(aws_vpc_endpoint.monitoring.*.id, list("")), 0)}"
}
output "vpc_endpoint_monitoring_network_interface_ids" {
description = "One or more network interfaces for the VPC Endpoint for CloudWatch Monitoring."
value = "${flatten(aws_vpc_endpoint.monitoring.*.network_interface_ids)}"
}
output "vpc_endpoint_monitoring_dns_entry" {
description = "The DNS entries for the VPC Endpoint for CloudWatch Monitoring."
value = "${flatten(aws_vpc_endpoint.monitoring.*.dns_entry)}"
}
output "vpc_endpoint_elasticloadbalancing_id" {
description = "The ID of VPC endpoint for Elastic Load Balancing"
value = "${element(concat(aws_vpc_endpoint.elasticloadbalancing.*.id, list("")), 0)}"
}
output "vpc_endpoint_elasticloadbalancing_network_interface_ids" {
description = "One or more network interfaces for the VPC Endpoint for Elastic Load Balancing."
value = "${flatten(aws_vpc_endpoint.elasticloadbalancing.*.network_interface_ids)}"
}
output "vpc_endpoint_elasticloadbalancing_dns_entry" {
description = "The DNS entries for the VPC Endpoint for Elastic Load Balancing."
value = "${flatten(aws_vpc_endpoint.elasticloadbalancing.*.dns_entry)}"
}
output "vpc_endpoint_cloudtrail_id" {
description = "The ID of VPC endpoint for CloudTrail"
value = "${element(concat(aws_vpc_endpoint.cloudtrail.*.id, list("")), 0)}"
}
output "vpc_endpoint_cloudtrail_network_interface_ids" {
description = "One or more network interfaces for the VPC Endpoint for CloudTrail."
value = "${flatten(aws_vpc_endpoint.cloudtrail.*.network_interface_ids)}"
}
output "vpc_endpoint_cloudtrail_dns_entry" {
description = "The DNS entries for the VPC Endpoint for CloudTrail."
value = "${flatten(aws_vpc_endpoint.cloudtrail.*.dns_entry)}"
}
output "vpc_endpoint_logs_id" {
description = "The ID of VPC endpoint for CloudWatch Logs"
value = "${element(concat(aws_vpc_endpoint.logs.*.id, list("")), 0)}"
}
output "vpc_endpoint_logs_network_interface_ids" {
description = "One or more network interfaces for the VPC Endpoint for CloudWatch Logs."
value = "${flatten(aws_vpc_endpoint.logs.*.network_interface_ids)}"
}
output "vpc_endpoint_logs_dns_entry" {
description = "The DNS entries for the VPC Endpoint for CloudWatch Logs."
value = "${flatten(aws_vpc_endpoint.logs.*.dns_entry)}"
}
output "vpc_endpoint_events_id" {
description = "The ID of VPC endpoint for CloudWatch Events"
value = "${element(concat(aws_vpc_endpoint.events.*.id, list("")), 0)}"
}
output "vpc_endpoint_events_network_interface_ids" {
description = "One or more network interfaces for the VPC Endpoint for CloudWatch Events."
value = "${flatten(aws_vpc_endpoint.events.*.network_interface_ids)}"
}
output "vpc_endpoint_events_dns_entry" {
description = "The DNS entries for the VPC Endpoint for CloudWatch Events."
value = "${flatten(aws_vpc_endpoint.events.*.dns_entry)}"
}
# Static values (arguments)
output "azs" {
description = "A list of availability zones specified as argument to this module"
......
......@@ -424,6 +424,126 @@ variable "ecs_telemetry_endpoint_private_dns_enabled" {
default = false
}
variable "enable_logs_endpoint" {
description = "Should be true if you want to provision a CloudWatch Logs endpoint to the VPC"
default = false
}
variable "logs_endpoint_security_group_ids" {
description = "The ID of one or more security groups to associate with the network interface for CloudWatch Logs endpoint"
default = []
}
variable "logs_endpoint_subnet_ids" {
description = "The ID of one or more subnets in which to create a network interface for CloudWatch Logs endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used."
default = []
}
variable "logs_endpoint_private_dns_enabled" {
description = "Whether or not to associate a private hosted zone with the specified VPC for CloudWatch Logs endpoint"
default = false
}
variable "enable_cloudtrail_endpoint" {
description = "Should be true if you want to provision a CloudTrail endpoint to the VPC"
default = false
}
variable "cloudtrail_endpoint_security_group_ids" {
description = "The ID of one or more security groups to associate with the network interface for CloudTrail endpoint"
default = []
}
variable "cloudtrail_endpoint_subnet_ids" {
description = "The ID of one or more subnets in which to create a network interface for CloudTrail endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used."
default = []
}
variable "cloudtrail_endpoint_private_dns_enabled" {
description = "Whether or not to associate a private hosted zone with the specified VPC for CloudTrail endpoint"
default = false
}
variable "enable_elasticloadbalancing_endpoint" {
description = "Should be true if you want to provision a Elastic Load Balancing endpoint to the VPC"
default = false
}
variable "elasticloadbalancing_endpoint_security_group_ids" {
description = "The ID of one or more security groups to associate with the network interface for Elastic Load Balancing endpoint"
default = []
}
variable "elasticloadbalancing_endpoint_subnet_ids" {
description = "The ID of one or more subnets in which to create a network interface for Elastic Load Balancing endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used."
default = []
}
variable "elasticloadbalancing_endpoint_private_dns_enabled" {
description = "Whether or not to associate a private hosted zone with the specified VPC for Elastic Load Balancing endpoint"
default = false
}
variable "enable_sns_endpoint" {
description = "Should be true if you want to provision a SNS endpoint to the VPC"
default = false
}
variable "sns_endpoint_security_group_ids" {
description = "The ID of one or more security groups to associate with the network interface for SNS endpoint"
default = []
}
variable "sns_endpoint_subnet_ids" {
description = "The ID of one or more subnets in which to create a network interface for SNS endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used."
default = []
}
variable "sns_endpoint_private_dns_enabled" {
description = "Whether or not to associate a private hosted zone with the specified VPC for SNS endpoint"
default = false
}
variable "enable_events_endpoint" {
description = "Should be true if you want to provision a CloudWatch Events endpoint to the VPC"
default = false
}
variable "events_endpoint_security_group_ids" {
description = "The ID of one or more security groups to associate with the network interface for CloudWatch Events endpoint"
default = []
}
variable "events_endpoint_subnet_ids" {
description = "The ID of one or more subnets in which to create a network interface for CloudWatch Events endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used."
default = []
}
variable "events_endpoint_private_dns_enabled" {
description = "Whether or not to associate a private hosted zone with the specified VPC for CloudWatch Events endpoint"
default = false
}
variable "enable_monitoring_endpoint" {
description = "Should be true if you want to provision a CloudWatch Monitoring endpoint to the VPC"
default = false
}
variable "monitoring_endpoint_security_group_ids" {
description = "The ID of one or more security groups to associate with the network interface for CloudWatch Monitoring endpoint"
default = []
}
variable "monitoring_endpoint_subnet_ids" {
description = "The ID of one or more subnets in which to create a network interface for CloudWatch Monitoring endpoint. Only a single subnet within an AZ is supported. If omitted, private subnets will be used."
default = []
}
variable "monitoring_endpoint_private_dns_enabled" {
description = "Whether or not to associate a private hosted zone with the specified VPC for CloudWatch Monitoring endpoint"
default = false
}
variable "map_public_ip_on_launch" {
description = "Should be false if you do not want to auto-assign public IP on launch"
default = true
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment