{"id":14957902,"url":"https://github.com/idealo/terraform-aws-opensearch","last_synced_at":"2025-04-05T11:09:03.288Z","repository":{"id":40367860,"uuid":"434506409","full_name":"idealo/terraform-aws-opensearch","owner":"idealo","description":"Terraform module to provision an OpenSearch cluster with SAML authentication.","archived":false,"fork":false,"pushed_at":"2024-11-13T13:25:19.000Z","size":91,"stargazers_count":68,"open_issues_count":2,"forks_count":56,"subscribers_count":15,"default_branch":"main","last_synced_at":"2025-03-29T10:07:13.307Z","etag":null,"topics":["aws","opensearch","terraform","terraform-module"],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/idealo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-12-03T07:35:30.000Z","updated_at":"2025-01-21T14:41:09.000Z","dependencies_parsed_at":"2024-01-19T19:40:41.739Z","dependency_job_id":"6594679e-bf2e-4aae-b472-e8597bc06edd","html_url":"https://github.com/idealo/terraform-aws-opensearch","commit_stats":{"total_commits":80,"total_committers":14,"mean_commits":5.714285714285714,"dds":"0.38749999999999996","last_synced_commit":"687ba3e360065697179d4549d335d5109cb57607"},"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idealo%2Fterraform-aws-opensearch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idealo%2Fterraform-aws-opensearch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idealo%2Fterraform-aws-opensearch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idealo%2Fterraform-aws-opensearch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/idealo","download_url":"https://codeload.github.com/idealo/terraform-aws-opensearch/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247325693,"owners_count":20920714,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","opensearch","terraform","terraform-module"],"created_at":"2024-09-24T13:15:47.881Z","updated_at":"2025-04-05T11:09:03.251Z","avatar_url":"https://github.com/idealo.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AWS OpenSearch Terraform Module\n\nTerraform module to provision an OpenSearch cluster with SAML authentication.\n\n## Prerequisites\n\n- A [hosted zone](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingHostedZone.html) to route traffic to your OpenSearch domain\n- An [entityID and metadata XML](https://aws.amazon.com/de/blogs/security/configure-saml-single-sign-on-for-kibana-with-ad-fs-on-amazon-elasticsearch-service/) from your SAML identity provider (in case `saml_enabled = true`)\n\n## Features\n\n- Create an AWS OpenSearch cluster with SAML authentication\n- All node types with local NVMe for high IO performance are supported\n- Create or manage various OpenSearch resources:\n  - [Index templates](https://opensearch.org/docs/latest/opensearch/index-templates/)\n  - [Indices](https://opensearch.org/docs/latest/opensearch/rest-api/index-apis/create-index/)\n  - [ISM policies](https://opensearch.org/docs/latest/im-plugin/ism/policies/)\n  - [Roles](https://opensearch.org/docs/latest/security-plugin/access-control/users-roles/#create-roles)\n  - [Role mappings](https://opensearch.org/docs/latest/security-plugin/access-control/users-roles/#map-users-to-roles)\n\n## Usage\n\nThis example is using Azure AD as SAML identity provider.\n\n```terraform\nlocals {\n  cluster_name      = \"opensearch\"\n  cluster_domain    = \"example.com\"\n  saml_entity_id    = \"https://sts.windows.net/XXX-XXX-XXX-XXX-XXX/\"\n  saml_metadata_url = \"https://login.microsoftonline.com/XXX-XXX-XXX-XXX-XXX/federationmetadata/2007-06/federationmetadata.xml?appid=YYY-YYY-YYY-YYY-YYY\"\n}\n\ndata \"aws_region\" \"current\" {}\n\ndata \"http\" \"saml_metadata\" {\n  url = local.saml_metadata_url\n}\n\nprovider \"opensearch\" {\n  url                   = module.opensearch.cluster_endpoint\n  aws_region            = data.aws_region.current.name\n  healthcheck           = false\n}\n\nmodule \"opensearch\" {\n  source  = \"idealo/opensearch/aws\"\n  version = \"~\u003e 2.0\"\n\n  cluster_name    = local.cluster_name\n  cluster_domain  = local.cluster_domain\n  cluster_version = \"2.11\"\n\n  saml_entity_id        = local.saml_entity_id\n  saml_metadata_content = data.http.saml_metadata.body\n\n  indices = {\n    example-index-1 = {\n      number_of_shards   = 2\n      number_of_replicas = 1\n    }\n    example-index-2 = {\n      number_of_shards   = 2\n      number_of_replicas = 1\n      mappings = {\n        \"properties\" : {\n          \"id\" : {\n            \"type\" : \"text\"\n          },\n          \"name\" : {\n            \"type\" : \"text\"\n          },\n          \"containerType\" : {\n            \"type\" : \"text\"\n          },\n          \"containerIds\" : {\n            \"type\" : \"text\"\n          },\n          \"synonyms\" : {\n            \"type\" : \"text\"\n          },\n          \"parentEvents\" : {\n            \"type\" : \"text\"\n          },\n          \"valueType\" : {\n            \"type\" : \"text\"\n          }\n        }\n      }\n    }\n  }\n}\n```\n\n## Examples\n\nHere is a working example of using this Terraform module:\n\n- [Complete](https://github.com/idealo/terraform-aws-opensearch/tree/main/examples/complete) - Create an AWS OpenSearch cluster with all necessary resources.\n- [Minimal](https://github.com/idealo/terraform-aws-opensearch/tree/main/examples/minimal) - Create an empty AWS OpenSearch cluster without saml.\n\n\u003c!-- BEGIN_TF_DOCS --\u003e\n## Requirements\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"requirement_terraform\"\u003e\u003c/a\u003e [terraform](#requirement\\_terraform) | \u003e= 1.3.0 |\n| \u003ca name=\"requirement_aws\"\u003e\u003c/a\u003e [aws](#requirement\\_aws) | \u003e= 4.12.0 |\n| \u003ca name=\"requirement_opensearch\"\u003e\u003c/a\u003e [opensearch](#requirement\\_opensearch) | \u003e= 2.0.0 |\n\n## Modules\n\n| Name | Source | Version |\n|------|--------|---------|\n| \u003ca name=\"module_acm\"\u003e\u003c/a\u003e [acm](#module\\_acm) | terraform-aws-modules/acm/aws | ~\u003e 5.0.0 |\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [aws_cloudwatch_log_group.opensearch](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_log_group) | resource |\n| [aws_cloudwatch_log_resource_policy.allow_logging](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_log_resource_policy) | resource |\n| [aws_elasticsearch_domain.opensearch](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/elasticsearch_domain) | resource |\n| [aws_elasticsearch_domain_saml_options.opensearch](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/elasticsearch_domain_saml_options) | resource |\n| [aws_iam_service_linked_role.es](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_service_linked_role) | resource |\n| [aws_route53_record.opensearch](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/route53_record) | resource |\n| [opensearch_composable_index_template.composable_index_template](https://registry.terraform.io/providers/opensearch-project/opensearch/latest/docs/resources/composable_index_template) | resource |\n| [opensearch_index.index](https://registry.terraform.io/providers/opensearch-project/opensearch/latest/docs/resources/index) | resource |\n| [opensearch_index_template.index_template](https://registry.terraform.io/providers/opensearch-project/opensearch/latest/docs/resources/index_template) | resource |\n| [opensearch_ism_policy.ism_policy](https://registry.terraform.io/providers/opensearch-project/opensearch/latest/docs/resources/ism_policy) | resource |\n| [opensearch_role.role](https://registry.terraform.io/providers/opensearch-project/opensearch/latest/docs/resources/role) | resource |\n| [opensearch_roles_mapping.master_user_arn](https://registry.terraform.io/providers/opensearch-project/opensearch/latest/docs/resources/roles_mapping) | resource |\n| [opensearch_roles_mapping.master_user_name](https://registry.terraform.io/providers/opensearch-project/opensearch/latest/docs/resources/roles_mapping) | resource |\n| [opensearch_roles_mapping.role_mapping](https://registry.terraform.io/providers/opensearch-project/opensearch/latest/docs/resources/roles_mapping) | resource |\n| [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | data source |\n| [aws_iam_policy_document.access_policy](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |\n| [aws_iam_policy_document.allow_logging](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |\n| [aws_region.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/region) | data source |\n| [aws_route53_zone.opensearch](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/route53_zone) | data source |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_access_policies\"\u003e\u003c/a\u003e [access\\_policies](#input\\_access\\_policies) | IAM policy document specifying the access policies for the domain. | `string` | `null` | no |\n| \u003ca name=\"input_advanced_options\"\u003e\u003c/a\u003e [advanced\\_options](#input\\_advanced\\_options) | Key-value string pairs to specify advanced configuration options. | `map(string)` | `null` | no |\n| \u003ca name=\"input_advanced_security_options_enabled\"\u003e\u003c/a\u003e [advanced\\_security\\_options\\_enabled](#input\\_advanced\\_security\\_options\\_enabled) | Whether advanced security is enabled. | `bool` | `true` | no |\n| \u003ca name=\"input_advanced_security_options_internal_user_database_enabled\"\u003e\u003c/a\u003e [advanced\\_security\\_options\\_internal\\_user\\_database\\_enabled](#input\\_advanced\\_security\\_options\\_internal\\_user\\_database\\_enabled) | Whether to enable or not internal Kibana user database for ELK OpenDistro security plugin | `bool` | `false` | no |\n| \u003ca name=\"input_advanced_security_options_master_user_name\"\u003e\u003c/a\u003e [advanced\\_security\\_options\\_master\\_user\\_name](#input\\_advanced\\_security\\_options\\_master\\_user\\_name) | Master user username (applicable if advanced\\_security\\_options\\_internal\\_user\\_database\\_enabled set to true) | `string` | `null` | no |\n| \u003ca name=\"input_advanced_security_options_master_user_password\"\u003e\u003c/a\u003e [advanced\\_security\\_options\\_master\\_user\\_password](#input\\_advanced\\_security\\_options\\_master\\_user\\_password) | Master user password (applicable if advanced\\_security\\_options\\_internal\\_user\\_database\\_enabled set to true) | `string` | `null` | no |\n| \u003ca name=\"input_auto_tune_enabled\"\u003e\u003c/a\u003e [auto\\_tune\\_enabled](#input\\_auto\\_tune\\_enabled) | Whether to enable/disable auto-tune | `bool` | `true` | no |\n| \u003ca name=\"input_auto_tune_options\"\u003e\u003c/a\u003e [auto\\_tune\\_options](#input\\_auto\\_tune\\_options) | Configuration block for auto-tune options. The maintenance schedule block is required if rollback\\_on\\_disable is set to DEFAULT\\_ROLLBACK. The start\\_at field must be a time and date in RFC3339 format | \u003cpre\u003eobject({\u003cbr\u003e    maintenance_schedule = optional(list(object({\u003cbr\u003e      start_at = string\u003cbr\u003e      duration = object({\u003cbr\u003e        value = number\u003cbr\u003e      })\u003cbr\u003e      cron_expression_for_recurrence = optional(string)\u003cbr\u003e    })))\u003cbr\u003e    rollback_on_disable = string\u003cbr\u003e  })\u003c/pre\u003e | \u003cpre\u003e{\u003cbr\u003e  \"maintenance_schedule\": [],\u003cbr\u003e  \"rollback_on_disable\": \"NO_ROLLBACK\"\u003cbr\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_availability_zones\"\u003e\u003c/a\u003e [availability\\_zones](#input\\_availability\\_zones) | The number of availability zones for the OpenSearch cluster. Valid values: 1, 2 or 3. | `number` | `3` | no |\n| \u003ca name=\"input_cluster_domain\"\u003e\u003c/a\u003e [cluster\\_domain](#input\\_cluster\\_domain) | The hosted zone name of the OpenSearch cluster. | `string` | n/a | yes |\n| \u003ca name=\"input_cluster_domain_private\"\u003e\u003c/a\u003e [cluster\\_domain\\_private](#input\\_cluster\\_domain\\_private) | Indicates whether to create records in a private (true) or public (false) zone | `bool` | `false` | no |\n| \u003ca name=\"input_cluster_name\"\u003e\u003c/a\u003e [cluster\\_name](#input\\_cluster\\_name) | The name of the OpenSearch cluster. | `string` | `\"opensearch\"` | no |\n| \u003ca name=\"input_cluster_version\"\u003e\u003c/a\u003e [cluster\\_version](#input\\_cluster\\_version) | The version of OpenSearch to deploy. | `string` | `\"2.11\"` | no |\n| \u003ca name=\"input_cognito_options\"\u003e\u003c/a\u003e [cognito\\_options](#input\\_cognito\\_options) | Configuration block for authenticating Kibana with Cognito. | `map(string)` | `{}` | no |\n| \u003ca name=\"input_cognito_options_enabled\"\u003e\u003c/a\u003e [cognito\\_options\\_enabled](#input\\_cognito\\_options\\_enabled) | Whether Amazon Cognito authentication with Kibana is enabled or not. | `bool` | `false` | no |\n| \u003ca name=\"input_composable_index_template_files\"\u003e\u003c/a\u003e [composable\\_index\\_template\\_files](#input\\_composable\\_index\\_template\\_files) | A set of all composable index template files to create. | `set(string)` | `[]` | no |\n| \u003ca name=\"input_composable_index_templates\"\u003e\u003c/a\u003e [composable\\_index\\_templates](#input\\_composable\\_index\\_templates) | A map of all composable index templates to create. | `map(any)` | `{}` | no |\n| \u003ca name=\"input_create_service_role\"\u003e\u003c/a\u003e [create\\_service\\_role](#input\\_create\\_service\\_role) | Indicates whether to create the service-linked role. See https://docs.aws.amazon.com/opensearch-service/latest/developerguide/slr.html | `bool` | `true` | no |\n| \u003ca name=\"input_custom_endpoint\"\u003e\u003c/a\u003e [custom\\_endpoint](#input\\_custom\\_endpoint) | Fully qualified domain for your custom endpoint. If not specified, then it defaults to \u003ccluster\\_name\u003e.\u003ccluster\\_domain\u003e | `string` | `null` | no |\n| \u003ca name=\"input_custom_endpoint_certificate_arn\"\u003e\u003c/a\u003e [custom\\_endpoint\\_certificate\\_arn](#input\\_custom\\_endpoint\\_certificate\\_arn) | The ARN of the custom ACM certificate. | `string` | `\"\"` | no |\n| \u003ca name=\"input_ebs_enabled\"\u003e\u003c/a\u003e [ebs\\_enabled](#input\\_ebs\\_enabled) | Indicates whether attach EBS volumes to the data nodes. | `bool` | `false` | no |\n| \u003ca name=\"input_ebs_iops\"\u003e\u003c/a\u003e [ebs\\_iops](#input\\_ebs\\_iops) | The baseline input/output (I/O) performance of EBS volumes attached to data nodes. | `number` | `3000` | no |\n| \u003ca name=\"input_ebs_throughput\"\u003e\u003c/a\u003e [ebs\\_throughput](#input\\_ebs\\_throughput) | The throughput (in MiB/s) of the EBS volumes attached to data nodes. Valid values are between 125 and 1000. | `number` | `125` | no |\n| \u003ca name=\"input_ebs_volume_size\"\u003e\u003c/a\u003e [ebs\\_volume\\_size](#input\\_ebs\\_volume\\_size) | The size of EBS volumes attached to data nodes (in GiB). | `number` | `10` | no |\n| \u003ca name=\"input_ebs_volume_type\"\u003e\u003c/a\u003e [ebs\\_volume\\_type](#input\\_ebs\\_volume\\_type) | The type of EBS volumes attached to data nodes. | `string` | `\"gp3\"` | no |\n| \u003ca name=\"input_encrypt_at_rest_enabled\"\u003e\u003c/a\u003e [encrypt\\_at\\_rest\\_enabled](#input\\_encrypt\\_at\\_rest\\_enabled) | Configuration block for encrypt at rest options | `bool` | `true` | no |\n| \u003ca name=\"input_encrypt_kms_key_id\"\u003e\u003c/a\u003e [encrypt\\_kms\\_key\\_id](#input\\_encrypt\\_kms\\_key\\_id) | The KMS key ID to encrypt the OpenSearch cluster with. If not specified, then it defaults to using the AWS OpenSearch Service KMS key. | `string` | `\"\"` | no |\n| \u003ca name=\"input_hot_instance_count\"\u003e\u003c/a\u003e [hot\\_instance\\_count](#input\\_hot\\_instance\\_count) | The number of dedicated hot nodes in the cluster. | `number` | `3` | no |\n| \u003ca name=\"input_hot_instance_type\"\u003e\u003c/a\u003e [hot\\_instance\\_type](#input\\_hot\\_instance\\_type) | The type of EC2 instances to run for each hot node. A list of available instance types can you find at https://aws.amazon.com/en/opensearch-service/pricing/#On-Demand_instance_pricing | `string` | `\"r6gd.4xlarge.elasticsearch\"` | no |\n| \u003ca name=\"input_index_files\"\u003e\u003c/a\u003e [index\\_files](#input\\_index\\_files) | A set of all index files to create. | `set(string)` | `[]` | no |\n| \u003ca name=\"input_index_template_files\"\u003e\u003c/a\u003e [index\\_template\\_files](#input\\_index\\_template\\_files) | A set of all index template files to create. | `set(string)` | `[]` | no |\n| \u003ca name=\"input_index_templates\"\u003e\u003c/a\u003e [index\\_templates](#input\\_index\\_templates) | A map of all index templates to create. | `map(any)` | `{}` | no |\n| \u003ca name=\"input_indices\"\u003e\u003c/a\u003e [indices](#input\\_indices) | A map of all indices to create. | \u003cpre\u003emap(object({\u003cbr\u003e    number_of_shards                       = optional(number)\u003cbr\u003e    number_of_replicas                     = optional(number)\u003cbr\u003e    refresh_interval                       = optional(string)\u003cbr\u003e    mappings                               = optional(any, {})\u003cbr\u003e    aliases                                = optional(any, {})\u003cbr\u003e    analysis_analyzer                      = optional(string)\u003cbr\u003e    analysis_char_filter                   = optional(string)\u003cbr\u003e    analysis_filter                        = optional(string)\u003cbr\u003e    analysis_normalizer                    = optional(string)\u003cbr\u003e    analysis_tokenizer                     = optional(string)\u003cbr\u003e    analyze_max_token_count                = optional(string)\u003cbr\u003e    auto_expand_replicas                   = optional(string)\u003cbr\u003e    blocks_metadata                        = optional(bool)\u003cbr\u003e    blocks_read                            = optional(bool)\u003cbr\u003e    blocks_read_only                       = optional(bool)\u003cbr\u003e    blocks_read_only_allow_delete          = optional(bool)\u003cbr\u003e    blocks_write                           = optional(bool)\u003cbr\u003e    codec                                  = optional(string)\u003cbr\u003e    default_pipeline                       = optional(string)\u003cbr\u003e    gc_deletes                             = optional(string)\u003cbr\u003e    highlight_max_analyzed_offset          = optional(string)\u003cbr\u003e    include_type_name                      = optional(string)\u003cbr\u003e    index_similarity_default               = optional(string)\u003cbr\u003e    indexing_slowlog_level                 = optional(string)\u003cbr\u003e    indexing_slowlog_source                = optional(string)\u003cbr\u003e    indexing_slowlog_threshold_index_debug = optional(string)\u003cbr\u003e    indexing_slowlog_threshold_index_info  = optional(string)\u003cbr\u003e    indexing_slowlog_threshold_index_trace = optional(string)\u003cbr\u003e    indexing_slowlog_threshold_index_warn  = optional(string)\u003cbr\u003e    load_fixed_bitset_filters_eagerly      = optional(bool)\u003cbr\u003e    max_docvalue_fields_search             = optional(string)\u003cbr\u003e    max_inner_result_window                = optional(string)\u003cbr\u003e    max_ngram_diff                         = optional(string)\u003cbr\u003e    max_refresh_listeners                  = optional(string)\u003cbr\u003e    max_regex_length                       = optional(string)\u003cbr\u003e    max_rescore_window                     = optional(string)\u003cbr\u003e    max_result_window                      = optional(string)\u003cbr\u003e    max_script_fields                      = optional(string)\u003cbr\u003e    max_shingle_diff                       = optional(string)\u003cbr\u003e    max_terms_count                        = optional(string)\u003cbr\u003e    number_of_routing_shards               = optional(string)\u003cbr\u003e    rollover_alias                         = optional(string)\u003cbr\u003e    routing_allocation_enable              = optional(string)\u003cbr\u003e    routing_partition_size                 = optional(string)\u003cbr\u003e    routing_rebalance_enable               = optional(string)\u003cbr\u003e    search_idle_after                      = optional(string)\u003cbr\u003e    search_slowlog_level                   = optional(string)\u003cbr\u003e    search_slowlog_threshold_fetch_info    = optional(string)\u003cbr\u003e    search_slowlog_threshold_fetch_debug   = optional(string)\u003cbr\u003e    search_slowlog_threshold_fetch_trace   = optional(string)\u003cbr\u003e    search_slowlog_threshold_fetch_warn    = optional(string)\u003cbr\u003e    search_slowlog_threshold_query_debug   = optional(string)\u003cbr\u003e    search_slowlog_threshold_query_info    = optional(string)\u003cbr\u003e    search_slowlog_threshold_query_trace   = optional(string)\u003cbr\u003e    search_slowlog_threshold_query_warn    = optional(string)\u003cbr\u003e    shard_check_on_startup                 = optional(string)\u003cbr\u003e    sort_field                             = optional(string)\u003cbr\u003e    sort_order                             = optional(string)\u003cbr\u003e  }))\u003c/pre\u003e | `{}` | no |\n| \u003ca name=\"input_ism_policies\"\u003e\u003c/a\u003e [ism\\_policies](#input\\_ism\\_policies) | A map of all ISM policies to create. | `map(any)` | `{}` | no |\n| \u003ca name=\"input_ism_policy_files\"\u003e\u003c/a\u003e [ism\\_policy\\_files](#input\\_ism\\_policy\\_files) | A set of all ISM policy files to create. | `set(string)` | `[]` | no |\n| \u003ca name=\"input_log_streams_enabled\"\u003e\u003c/a\u003e [log\\_streams\\_enabled](#input\\_log\\_streams\\_enabled) | Configuration for which log streams to enable sending logs to CloudWatch. | `map(string)` | \u003cpre\u003e{\u003cbr\u003e  \"AUDIT_LOGS\": \"false\",\u003cbr\u003e  \"ES_APPLICATION_LOGS\": \"false\",\u003cbr\u003e  \"INDEX_SLOW_LOGS\": \"false\",\u003cbr\u003e  \"SEARCH_SLOW_LOGS\": \"false\"\u003cbr\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_master_instance_count\"\u003e\u003c/a\u003e [master\\_instance\\_count](#input\\_master\\_instance\\_count) | The number of dedicated master nodes in the cluster. | `number` | `3` | no |\n| \u003ca name=\"input_master_instance_enabled\"\u003e\u003c/a\u003e [master\\_instance\\_enabled](#input\\_master\\_instance\\_enabled) | Indicates whether dedicated master nodes are enabled for the cluster. | `bool` | `true` | no |\n| \u003ca name=\"input_master_instance_type\"\u003e\u003c/a\u003e [master\\_instance\\_type](#input\\_master\\_instance\\_type) | The type of EC2 instances to run for each master node. A list of available instance types can you find at https://aws.amazon.com/en/opensearch-service/pricing/#On-Demand_instance_pricing | `string` | `\"r6gd.large.elasticsearch\"` | no |\n| \u003ca name=\"input_master_user_arn\"\u003e\u003c/a\u003e [master\\_user\\_arn](#input\\_master\\_user\\_arn) | The ARN for the master user of the cluster. If not specified, then it defaults to using the IAM user that is making the request. | `string` | `\"\"` | no |\n| \u003ca name=\"input_node_to_node_encryption_enabled\"\u003e\u003c/a\u003e [node\\_to\\_node\\_encryption\\_enabled](#input\\_node\\_to\\_node\\_encryption\\_enabled) | Configuration block for node-to-node encryption options | `bool` | `true` | no |\n| \u003ca name=\"input_role_files\"\u003e\u003c/a\u003e [role\\_files](#input\\_role\\_files) | A set of all role files to create. | `set(string)` | `[]` | no |\n| \u003ca name=\"input_role_mapping_files\"\u003e\u003c/a\u003e [role\\_mapping\\_files](#input\\_role\\_mapping\\_files) | A set of all role mapping files to create. | `set(string)` | `[]` | no |\n| \u003ca name=\"input_role_mappings\"\u003e\u003c/a\u003e [role\\_mappings](#input\\_role\\_mappings) | A map of all role mappings to create. | `map(any)` | `{}` | no |\n| \u003ca name=\"input_roles\"\u003e\u003c/a\u003e [roles](#input\\_roles) | A map of all roles to create. | `map(any)` | `{}` | no |\n| \u003ca name=\"input_saml_enabled\"\u003e\u003c/a\u003e [saml\\_enabled](#input\\_saml\\_enabled) | Indicates whether to configure SAML for the OpenSearch dashboard. | `bool` | `true` | no |\n| \u003ca name=\"input_saml_entity_id\"\u003e\u003c/a\u003e [saml\\_entity\\_id](#input\\_saml\\_entity\\_id) | The unique Entity ID of the application in SAML Identity Provider. | `string` | `\"\"` | no |\n| \u003ca name=\"input_saml_master_backend_role\"\u003e\u003c/a\u003e [saml\\_master\\_backend\\_role](#input\\_saml\\_master\\_backend\\_role) | This backend role receives full permissions to the cluster, equivalent to a new master role, but can only use those permissions within Dashboards. | `string` | `null` | no |\n| \u003ca name=\"input_saml_master_user_name\"\u003e\u003c/a\u003e [saml\\_master\\_user\\_name](#input\\_saml\\_master\\_user\\_name) | This username receives full permissions to the cluster, equivalent to a new master user, but can only use those permissions within Dashboards. | `string` | `null` | no |\n| \u003ca name=\"input_saml_metadata_content\"\u003e\u003c/a\u003e [saml\\_metadata\\_content](#input\\_saml\\_metadata\\_content) | The metadata of the SAML application in xml format. | `string` | `\"\"` | no |\n| \u003ca name=\"input_saml_roles_key\"\u003e\u003c/a\u003e [saml\\_roles\\_key](#input\\_saml\\_roles\\_key) | Element of the SAML assertion to use for backend roles. | `string` | `\"http://schemas.microsoft.com/ws/2008/06/identity/claims/role\"` | no |\n| \u003ca name=\"input_saml_session_timeout\"\u003e\u003c/a\u003e [saml\\_session\\_timeout](#input\\_saml\\_session\\_timeout) | Duration of a session in minutes after a user logs in. Default is 60. Maximum value is 1,440. | `number` | `60` | no |\n| \u003ca name=\"input_saml_subject_key\"\u003e\u003c/a\u003e [saml\\_subject\\_key](#input\\_saml\\_subject\\_key) | Element of the SAML assertion to use for username. | `string` | `\"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name\"` | no |\n| \u003ca name=\"input_security_group_ids\"\u003e\u003c/a\u003e [security\\_group\\_ids](#input\\_security\\_group\\_ids) | The list of VPC security groups IDs to attach. | `list(string)` | `[]` | no |\n| \u003ca name=\"input_subnet_ids\"\u003e\u003c/a\u003e [subnet\\_ids](#input\\_subnet\\_ids) | The list of VPC subnet IDs to use. | `list(string)` | `[]` | no |\n| \u003ca name=\"input_tags\"\u003e\u003c/a\u003e [tags](#input\\_tags) | A map of tags to add to all resources. | `map(string)` | `{}` | no |\n| \u003ca name=\"input_vpc_enabled\"\u003e\u003c/a\u003e [vpc\\_enabled](#input\\_vpc\\_enabled) | Indicates whether the cluster is running inside a VPC. | `bool` | `false` | no |\n| \u003ca name=\"input_warm_instance_count\"\u003e\u003c/a\u003e [warm\\_instance\\_count](#input\\_warm\\_instance\\_count) | The number of dedicated warm nodes in the cluster. | `number` | `3` | no |\n| \u003ca name=\"input_warm_instance_enabled\"\u003e\u003c/a\u003e [warm\\_instance\\_enabled](#input\\_warm\\_instance\\_enabled) | Indicates whether ultrawarm nodes are enabled for the cluster. | `bool` | `true` | no |\n| \u003ca name=\"input_warm_instance_type\"\u003e\u003c/a\u003e [warm\\_instance\\_type](#input\\_warm\\_instance\\_type) | The type of EC2 instances to run for each warm node. A list of available instance types can you find at https://aws.amazon.com/en/elasticsearch-service/pricing/#UltraWarm_pricing | `string` | `\"ultrawarm1.large.elasticsearch\"` | no |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_cluster_endpoint\"\u003e\u003c/a\u003e [cluster\\_endpoint](#output\\_cluster\\_endpoint) | The endpoint URL of the OpenSearch cluster. |\n| \u003ca name=\"output_cluster_name\"\u003e\u003c/a\u003e [cluster\\_name](#output\\_cluster\\_name) | The name of the OpenSearch cluster. |\n| \u003ca name=\"output_cluster_version\"\u003e\u003c/a\u003e [cluster\\_version](#output\\_cluster\\_version) | The version of the OpenSearch cluster. |\n| \u003ca name=\"output_kibana_endpoint\"\u003e\u003c/a\u003e [kibana\\_endpoint](#output\\_kibana\\_endpoint) | The endpoint URL of the OpenSearch dashboards. |\n\u003c!-- END_TF_DOCS --\u003e\n\n## License\n\nApache 2 Licensed. See [LICENSE](https://github.com/idealo/terraform-aws-opensearch/blob/main/LICENSE) for full details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fidealo%2Fterraform-aws-opensearch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fidealo%2Fterraform-aws-opensearch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fidealo%2Fterraform-aws-opensearch/lists"}