AWS OpenSearch Terraform module
Terraform module which creates AWS OpenSearch resources.
Usage
See examples directory for working examples to reference:
module "opensearch" {
source = "terraform-aws-modules/opensearch/aws"
# Domain
advanced_options = {
"rest.action.multi.allow_explicit_index" = "true"
}
advanced_security_options = {
enabled = false
anonymous_auth_enabled = true
internal_user_database_enabled = true
master_user_options = {
master_user_name = "example"
master_user_password = "Barbarbarbar1!"
}
# Optional: JWT authentication and authorization
# jwt_options = {
# enabled = true
# public_key = file("path/to/publickey.pem")
# roles_key = "roles" # Optional, defaults to "roles"
# subject_key = "sub" # Optional, defaults to "sub"
# }
}
auto_tune_options = {
desired_state = "ENABLED"
maintenance_schedule = [
{
start_at = "2028-05-13T07:44:12Z"
cron_expression_for_recurrence = "cron(0 0 ? * 1 *)"
duration = {
value = "2"
unit = "HOURS"
}
}
]
rollback_on_disable = "NO_ROLLBACK"
}
cluster_config = {
instance_count = 3
dedicated_master_enabled = true
dedicated_master_type = "c6g.large.search"
instance_type = "r6g.large.search"
zone_awareness_config = {
availability_zone_count = 3
}
zone_awareness_enabled = true
}
domain_endpoint_options = {
enforce_https = true
tls_security_policy = "Policy-Min-TLS-1-2-2019-07"
}
domain_name = local.name
ebs_options = {
ebs_enabled = true
iops = 3000
throughput = 125
volume_type = "gp3"
volume_size = 20
}
encrypt_at_rest = {
enabled = true
}
engine_version = "OpenSearch_2.11"
log_publishing_options = [
{ log_type = "INDEX_SLOW_LOGS" },
{ log_type = "SEARCH_SLOW_LOGS" },
]
node_to_node_encryption = {
enabled = true
}
software_update_options = {
auto_software_update_enabled = true
}
vpc_options = {
subnet_ids = ["subnet-abcde012", "subnet-bcde012a", "subnet-fghi345a"]
}
# VPC endpoint
vpc_endpoints = {
one = {
subnet_ids = ["subnet-abcde012", "subnet-bcde012a", "subnet-fghi345a"]
}
}
# Access policy
access_policy_statements = [
{
effect = "Allow"
principals = [{
type = "*"
identifiers = ["*"]
}]
actions = ["es:*"]
conditions = [{
test = "IpAddress"
variable = "aws:SourceIp"
values = ["127.0.0.1/32"]
}]
}
]
tags = {
Terraform = "true"
Environment = "dev"
}
}
Examples
Examples codified under the examples are intended to give users references for how to use the module(s) as well as testing/validating changes to the source code of the module. If contributing to the project, please be sure to make any appropriate updates to the relevant examples to allow maintainers to test your changes and to keep the examples up to date for users. Thank you!
License
Apache-2.0 Licensed. See LICENSE.