Commit 32f853f4 authored by Erez Tamam's avatar Erez Tamam Committed by GitHub

feat: Add support for `dns_options` on VPC endpoints (#1023)

* add dns_options dynamic block

* use fmt to format doc

* add example for complete

* fix condition to a better approach

* add interface chek

* add empty brackets for default values

* fix: Increase provider MSV to support, correct looping logic

---------
Co-authored-by: default avatarBryant Biggs <bryantbiggs@gmail.com>
parent acadfc42
repos: repos:
- repo: https://github.com/antonbabenko/pre-commit-terraform - repo: https://github.com/antonbabenko/pre-commit-terraform
rev: v1.81.0 rev: v1.86.0
hooks: hooks:
- id: terraform_fmt - id: terraform_fmt
- id: terraform_validate - id: terraform_validate
...@@ -23,7 +23,7 @@ repos: ...@@ -23,7 +23,7 @@ repos:
- '--args=--only=terraform_standard_module_structure' - '--args=--only=terraform_standard_module_structure'
- '--args=--only=terraform_workspace_remote' - '--args=--only=terraform_workspace_remote'
- repo: https://github.com/pre-commit/pre-commit-hooks - repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0 rev: v4.5.0
hooks: hooks:
- id: check-merge-conflict - id: check-merge-conflict
- id: end-of-file-fixer - id: end-of-file-fixer
...@@ -256,13 +256,13 @@ Full contributing [guidelines are covered here](.github/contributing.md). ...@@ -256,13 +256,13 @@ Full contributing [guidelines are covered here](.github/contributing.md).
| Name | Version | | Name | Version |
|------|---------| |------|---------|
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 | | <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.0 | | <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.20 |
## Providers ## Providers
| Name | Version | | Name | Version |
|------|---------| |------|---------|
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.0 | | <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.20 |
## Modules ## Modules
......
...@@ -22,13 +22,13 @@ Note that this example may create resources which can cost money (AWS Elastic IP ...@@ -22,13 +22,13 @@ Note that this example may create resources which can cost money (AWS Elastic IP
| Name | Version | | Name | Version |
|------|---------| |------|---------|
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 | | <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.0 | | <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.20 |
## Providers ## Providers
| Name | Version | | Name | Version |
|------|---------| |------|---------|
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.0 | | <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.20 |
## Modules ## Modules
......
...@@ -102,8 +102,12 @@ module "vpc_endpoints" { ...@@ -102,8 +102,12 @@ module "vpc_endpoints" {
endpoints = { endpoints = {
s3 = { s3 = {
service = "s3" service = "s3"
tags = { Name = "s3-vpc-endpoint" } private_dns_enabled = true
dns_options = {
private_dns_only_for_inbound_resolver_endpoint = false
}
tags = { Name = "s3-vpc-endpoint" }
}, },
dynamodb = { dynamodb = {
service = "dynamodb" service = "dynamodb"
......
...@@ -4,7 +4,7 @@ terraform { ...@@ -4,7 +4,7 @@ terraform {
required_providers { required_providers {
aws = { aws = {
source = "hashicorp/aws" source = "hashicorp/aws"
version = ">= 5.0" version = ">= 5.20"
} }
} }
} }
...@@ -30,13 +30,13 @@ Note that this example may create resources which can cost money (AWS Elastic IP ...@@ -30,13 +30,13 @@ Note that this example may create resources which can cost money (AWS Elastic IP
| Name | Version | | Name | Version |
|------|---------| |------|---------|
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 | | <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.0 | | <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.20 |
## Providers ## Providers
| Name | Version | | Name | Version |
|------|---------| |------|---------|
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.0 | | <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.20 |
## Modules ## Modules
......
...@@ -4,7 +4,7 @@ terraform { ...@@ -4,7 +4,7 @@ terraform {
required_providers { required_providers {
aws = { aws = {
source = "hashicorp/aws" source = "hashicorp/aws"
version = ">= 5.0" version = ">= 5.20"
} }
} }
} }
...@@ -20,13 +20,13 @@ Note that this example may create resources which can cost money (AWS Elastic IP ...@@ -20,13 +20,13 @@ Note that this example may create resources which can cost money (AWS Elastic IP
| Name | Version | | Name | Version |
|------|---------| |------|---------|
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 | | <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.0 | | <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.20 |
## Providers ## Providers
| Name | Version | | Name | Version |
|------|---------| |------|---------|
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.0 | | <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.20 |
## Modules ## Modules
......
...@@ -4,7 +4,7 @@ terraform { ...@@ -4,7 +4,7 @@ terraform {
required_providers { required_providers {
aws = { aws = {
source = "hashicorp/aws" source = "hashicorp/aws"
version = ">= 5.0" version = ">= 5.20"
} }
} }
} }
...@@ -20,13 +20,13 @@ Note that this example may create resources which can cost money (AWS Elastic IP ...@@ -20,13 +20,13 @@ Note that this example may create resources which can cost money (AWS Elastic IP
| Name | Version | | Name | Version |
|------|---------| |------|---------|
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 | | <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.0 | | <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.20 |
## Providers ## Providers
| Name | Version | | Name | Version |
|------|---------| |------|---------|
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.0 | | <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.20 |
## Modules ## Modules
......
...@@ -4,7 +4,7 @@ terraform { ...@@ -4,7 +4,7 @@ terraform {
required_providers { required_providers {
aws = { aws = {
source = "hashicorp/aws" source = "hashicorp/aws"
version = ">= 5.0" version = ">= 5.20"
} }
} }
} }
...@@ -25,13 +25,13 @@ Note that this example may create resources which can cost money (AWS Elastic IP ...@@ -25,13 +25,13 @@ Note that this example may create resources which can cost money (AWS Elastic IP
| Name | Version | | Name | Version |
|------|---------| |------|---------|
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 | | <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.0 | | <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.20 |
## Providers ## Providers
| Name | Version | | Name | Version |
|------|---------| |------|---------|
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.0 | | <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.20 |
## Modules ## Modules
......
...@@ -4,7 +4,7 @@ terraform { ...@@ -4,7 +4,7 @@ terraform {
required_providers { required_providers {
aws = { aws = {
source = "hashicorp/aws" source = "hashicorp/aws"
version = ">= 5.0" version = ">= 5.20"
} }
} }
} }
...@@ -22,7 +22,7 @@ Run `terraform destroy` when you don't need these resources. ...@@ -22,7 +22,7 @@ Run `terraform destroy` when you don't need these resources.
| Name | Version | | Name | Version |
|------|---------| |------|---------|
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 | | <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.0 | | <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.20 |
## Providers ## Providers
......
...@@ -4,7 +4,7 @@ terraform { ...@@ -4,7 +4,7 @@ terraform {
required_providers { required_providers {
aws = { aws = {
source = "hashicorp/aws" source = "hashicorp/aws"
version = ">= 5.0" version = ">= 5.20"
} }
} }
} }
...@@ -24,13 +24,13 @@ Note that this example may create resources which can cost money (AWS Elastic IP ...@@ -24,13 +24,13 @@ Note that this example may create resources which can cost money (AWS Elastic IP
| Name | Version | | Name | Version |
|------|---------| |------|---------|
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 | | <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.0 | | <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.20 |
## Providers ## Providers
| Name | Version | | Name | Version |
|------|---------| |------|---------|
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.0 | | <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.20 |
## Modules ## Modules
......
...@@ -4,7 +4,7 @@ terraform { ...@@ -4,7 +4,7 @@ terraform {
required_providers { required_providers {
aws = { aws = {
source = "hashicorp/aws" source = "hashicorp/aws"
version = ">= 5.0" version = ">= 5.20"
} }
} }
} }
...@@ -24,13 +24,13 @@ Note that this example may create resources which can cost money (AWS Elastic IP ...@@ -24,13 +24,13 @@ Note that this example may create resources which can cost money (AWS Elastic IP
| Name | Version | | Name | Version |
|------|---------| |------|---------|
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 | | <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.0 | | <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.20 |
## Providers ## Providers
| Name | Version | | Name | Version |
|------|---------| |------|---------|
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.0 | | <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.20 |
## Modules ## Modules
......
...@@ -4,7 +4,7 @@ terraform { ...@@ -4,7 +4,7 @@ terraform {
required_providers { required_providers {
aws = { aws = {
source = "hashicorp/aws" source = "hashicorp/aws"
version = ">= 5.0" version = ">= 5.20"
} }
} }
} }
...@@ -22,13 +22,13 @@ Note that this example may create resources which can cost money (AWS Elastic IP ...@@ -22,13 +22,13 @@ Note that this example may create resources which can cost money (AWS Elastic IP
| Name | Version | | Name | Version |
|------|---------| |------|---------|
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 | | <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.0 | | <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.20 |
## Providers ## Providers
| Name | Version | | Name | Version |
|------|---------| |------|---------|
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.0 | | <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.20 |
## Modules ## Modules
......
...@@ -4,7 +4,7 @@ terraform { ...@@ -4,7 +4,7 @@ terraform {
required_providers { required_providers {
aws = { aws = {
source = "hashicorp/aws" source = "hashicorp/aws"
version = ">= 5.0" version = ">= 5.20"
} }
} }
} }
...@@ -22,13 +22,13 @@ Note that this example may create resources which can cost money (AWS Elastic IP ...@@ -22,13 +22,13 @@ Note that this example may create resources which can cost money (AWS Elastic IP
| Name | Version | | Name | Version |
|------|---------| |------|---------|
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 | | <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.0 | | <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.20 |
## Providers ## Providers
| Name | Version | | Name | Version |
|------|---------| |------|---------|
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.0 | | <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.20 |
## Modules ## Modules
......
...@@ -4,7 +4,7 @@ terraform { ...@@ -4,7 +4,7 @@ terraform {
required_providers { required_providers {
aws = { aws = {
source = "hashicorp/aws" source = "hashicorp/aws"
version = ">= 5.0" version = ">= 5.20"
} }
} }
} }
...@@ -26,13 +26,13 @@ Note that this example may create resources which can cost money (AWS Elastic IP ...@@ -26,13 +26,13 @@ Note that this example may create resources which can cost money (AWS Elastic IP
| Name | Version | | Name | Version |
|------|---------| |------|---------|
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 | | <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.0 | | <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.20 |
## Providers ## Providers
| Name | Version | | Name | Version |
|------|---------| |------|---------|
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.0 | | <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.20 |
## Modules ## Modules
......
...@@ -4,7 +4,7 @@ terraform { ...@@ -4,7 +4,7 @@ terraform {
required_providers { required_providers {
aws = { aws = {
source = "hashicorp/aws" source = "hashicorp/aws"
version = ">= 5.0" version = ">= 5.20"
} }
} }
} }
...@@ -24,14 +24,14 @@ Note that this example may create resources which can cost money (AWS Elastic IP ...@@ -24,14 +24,14 @@ Note that this example may create resources which can cost money (AWS Elastic IP
| Name | Version | | Name | Version |
|------|---------| |------|---------|
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 | | <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.0 | | <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.20 |
| <a name="requirement_random"></a> [random](#requirement\_random) | >= 2.0 | | <a name="requirement_random"></a> [random](#requirement\_random) | >= 2.0 |
## Providers ## Providers
| Name | Version | | Name | Version |
|------|---------| |------|---------|
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.0 | | <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.20 |
| <a name="provider_random"></a> [random](#provider\_random) | >= 2.0 | | <a name="provider_random"></a> [random](#provider\_random) | >= 2.0 |
## Modules ## Modules
......
...@@ -4,7 +4,7 @@ terraform { ...@@ -4,7 +4,7 @@ terraform {
required_providers { required_providers {
aws = { aws = {
source = "hashicorp/aws" source = "hashicorp/aws"
version = ">= 5.0" version = ">= 5.20"
} }
random = { random = {
......
...@@ -56,13 +56,13 @@ module "endpoints" { ...@@ -56,13 +56,13 @@ module "endpoints" {
| Name | Version | | Name | Version |
|------|---------| |------|---------|
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 | | <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.0 | | <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.20 |
## Providers ## Providers
| Name | Version | | Name | Version |
|------|---------| |------|---------|
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.0 | | <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.20 |
## Modules ## Modules
......
...@@ -34,6 +34,15 @@ resource "aws_vpc_endpoint" "this" { ...@@ -34,6 +34,15 @@ resource "aws_vpc_endpoint" "this" {
policy = try(each.value.policy, null) policy = try(each.value.policy, null)
private_dns_enabled = try(each.value.service_type, "Interface") == "Interface" ? try(each.value.private_dns_enabled, null) : null private_dns_enabled = try(each.value.service_type, "Interface") == "Interface" ? try(each.value.private_dns_enabled, null) : null
dynamic "dns_options" {
for_each = try([each.value.dns_options], [])
content {
dns_record_ip_type = try(each.value.dns_options.dns_record_ip_type, null)
private_dns_only_for_inbound_resolver_endpoint = try(each.value.private_dns_only_for_inbound_resolver_endpoint, null)
}
}
tags = merge(var.tags, try(each.value.tags, {})) tags = merge(var.tags, try(each.value.tags, {}))
timeouts { timeouts {
......
...@@ -4,7 +4,7 @@ terraform { ...@@ -4,7 +4,7 @@ terraform {
required_providers { required_providers {
aws = { aws = {
source = "hashicorp/aws" source = "hashicorp/aws"
version = ">= 5.0" version = ">= 5.20"
} }
} }
} }
...@@ -4,7 +4,7 @@ terraform { ...@@ -4,7 +4,7 @@ terraform {
required_providers { required_providers {
aws = { aws = {
source = "hashicorp/aws" source = "hashicorp/aws"
version = ">= 5.0" version = ">= 5.20"
} }
} }
} }
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