{"id":29943265,"url":"https://github.com/sourcefuse/terraform-aws-arc-opensearch","last_synced_at":"2026-02-07T07:32:34.263Z","repository":{"id":88256484,"uuid":"604647145","full_name":"sourcefuse/terraform-aws-arc-opensearch","owner":"sourcefuse","description":"Repo for managing the OpenSearch Terraform Module.","archived":false,"fork":false,"pushed_at":"2025-06-05T07:00:58.000Z","size":4423,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-08-01T05:55:58.859Z","etag":null,"topics":[],"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/sourcefuse.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-02-21T13:59:00.000Z","updated_at":"2025-06-05T07:00:45.000Z","dependencies_parsed_at":"2023-03-13T18:27:43.578Z","dependency_job_id":"5b2eb8dd-9436-4a8c-ba91-920bb44023bc","html_url":"https://github.com/sourcefuse/terraform-aws-arc-opensearch","commit_stats":null,"previous_names":["sourcefuse/terraform-aws-arc-opensearch"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/sourcefuse/terraform-aws-arc-opensearch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sourcefuse%2Fterraform-aws-arc-opensearch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sourcefuse%2Fterraform-aws-arc-opensearch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sourcefuse%2Fterraform-aws-arc-opensearch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sourcefuse%2Fterraform-aws-arc-opensearch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sourcefuse","download_url":"https://codeload.github.com/sourcefuse/terraform-aws-arc-opensearch/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sourcefuse%2Fterraform-aws-arc-opensearch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29189328,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T05:07:31.176Z","status":"ssl_error","status_checked_at":"2026-02-07T05:06:15.227Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2025-08-03T02:14:47.851Z","updated_at":"2026-02-07T07:32:34.258Z","avatar_url":"https://github.com/sourcefuse.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Module Structure](./static/banner.png)\n\n# [terraform-aws-arc-opensearch](https://github.com/sourcefuse/terraform-aws-arc-opensearch)\n\n\u003ca href=\"https://github.com/sourcefuse/terraform-aws-arc-opensearch/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/github/release/sourcefuse/terraform-aws-arc-opensearch.svg?style=for-the-badge\" alt=\"Latest Release\"/\u003e\u003c/a\u003e \u003ca href=\"https://github.com/sourcefuse/terraform-aws-arc-opensearch/commits\"\u003e\u003cimg src=\"https://img.shields.io/github/last-commit/sourcefuse/terraform-aws-arc-opensearch.svg?style=for-the-badge\" alt=\"Last Updated\"/\u003e\u003c/a\u003e ![Terraform](https://img.shields.io/badge/terraform-%235835CC.svg?style=for-the-badge\u0026logo=terraform\u0026logoColor=white) ![GitHub Actions](https://img.shields.io/badge/github%20actions-%232671E5.svg?style=for-the-badge\u0026logo=githubactions\u0026logoColor=white)\n\n[![Quality gate](https://sonarcloud.io/api/project_badges/quality_gate?project=sourcefuse_terraform-aws-arc-opensearch)](https://sonarcloud.io/summary/new_code?id=sourcefuse_terraform-aws-arc-opensearch)\n\n[![Known Vulnerabilities](https://github.com/sourcefuse/terraform-aws-arc-opensearch/actions/workflows/snyk.yaml/badge.svg)](https://github.com/sourcefuse/terraform-aws-arc-opensearch/actions/workflows/snyk.yaml)\n## Overview\nTerraform module for Amazon OpenSearch provides a flexible and scalable way to deploy and manage OpenSearch clusters, with support for both serverless and managed (provisioned) deployment options.\n\n## Usage\n\nSee the `example/vpc` folder for a working module example.\n\n```hcl\n################################################################################\n## opensearch\n################################################################################\nmodule \"opensearch\" {\n  source                       = \"sourcefuse/arc-opensearch/aws\"\n  version                      = \"0.1.2\"\n  namespace                    = var.namespace\n  environment                  = var.environment\n  name                         = var.name\n  engine_version               = var.engine_version\n  instance_type                = var.instance_type\n  instance_count               = var.instance_count\n  enable_vpc_options           = true\n  vpc_id                       = data.aws_vpc.default.id\n  subnet_ids                   = local.private_subnet_ids\n  ingress_rules                = local.ingress_rules\n  egress_rules                 = local.egress_rules\n\n  tags = module.tags.tags\n}\n\n################################################################################\n## opensearch serverless\n################################################################################\n module \"opensearch_serverless\" {\n  source                       = \"sourcefuse/arc-opensearch/aws\"\n  version                      = \"0.1.2\"\n  enable_serverless            = true\n  namespace                    = var.namespace\n  environment                  = var.environment\n  name                         = var.name\n  ingress_rules                = local.ingress_rules\n  egress_rules                 = local.egress_rules\n  subnet_ids                   = local.private_subnet_ids\n  vpc_id                       = data.aws_vpc.default.id\n  data_lifecycle_policy_rules  = local.data_lifecycle_policy_rules\n  access_policy_rules          = local.access_policy_rules\n  tags                         = module.tags.tags\n\n}\n\n```\nSee the `example/public` folder if you want your os to be public\n\n```hcl\n################################################################################\n## opensearch\n################################################################################\nmodule \"opensearch\" {\n  source                         = \"sourcefuse/arc-opensearch/aws\"\n  version                        = \"1.0.3\"\n  namespace                      = var.namespace\n  environment                    = var.environment\n  name                           = var.name\n  engine_version                 = var.engine_version\n  instance_type                  = var.instance_type\n  instance_count                 = var.instance_count\n  enable_encrypt_at_rest         = true\n  enable_domain_endpoint_options = true\n  advanced_security_enabled      = true\n\n  tags = module.tags.tags\n}\n\n################################################################################\n## opensearch serverless\n################################################################################\nmodule \"opensearch_serverless\" {\n  source                       = \"sourcefuse/arc-opensearch/aws\"\n  version                      = \"1.0.3\"\n  enable_serverless            = true\n  namespace                    = var.namespace\n  environment                  = var.environment\n  name                         = var.name\n  enable_public_access         = true\n  data_lifecycle_policy_rules  = local.data_lifecycle_policy_rules\n  access_policy_rules          = local.access_policy_rules\n\n  tags = module.tags.tags\n}\n\n```\n\n\u003c!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --\u003e\n## Requirements\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"requirement_terraform\"\u003e\u003c/a\u003e [terraform](#requirement\\_terraform) | \u003e= 1.5.0 |\n| \u003ca name=\"requirement_aws\"\u003e\u003c/a\u003e [aws](#requirement\\_aws) | ~\u003e 5.0 |\n\n## Providers\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"provider_aws\"\u003e\u003c/a\u003e [aws](#provider\\_aws) | 5.74.0 |\n\n## Modules\n\n| Name | Source | Version |\n|------|--------|---------|\n| \u003ca name=\"module_opensearch\"\u003e\u003c/a\u003e [opensearch](#module\\_opensearch) | ./modules/opensearch-domain | n/a |\n| \u003ca name=\"module_opensearch_serverless\"\u003e\u003c/a\u003e [opensearch\\_serverless](#module\\_opensearch\\_serverless) | ./modules/opensearch-serverless | n/a |\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | 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) | Custom access policy for OpenSearch domain. If empty, default policy will be used | `string` | `\"\"` | no |\n| \u003ca name=\"input_access_policy_rules\"\u003e\u003c/a\u003e [access\\_policy\\_rules](#input\\_access\\_policy\\_rules) | List of rules for the access policy. | \u003cpre\u003elist(object({\u003cbr\u003e    resource_type = string\u003cbr\u003e    resource      = list(string)\u003cbr\u003e    permissions   = list(string)\u003cbr\u003e    principal     = optional(list(string), [])\u003cbr\u003e  }))\u003c/pre\u003e | `[]` | no |\n| \u003ca name=\"input_advanced_security_enabled\"\u003e\u003c/a\u003e [advanced\\_security\\_enabled](#input\\_advanced\\_security\\_enabled) | Enable advanced security options (fine-grained access control) | `bool` | `false` | no |\n| \u003ca name=\"input_anonymous_auth_enabled\"\u003e\u003c/a\u003e [anonymous\\_auth\\_enabled](#input\\_anonymous\\_auth\\_enabled) | Enable anonymous authentication | `bool` | `false` | no |\n| \u003ca name=\"input_auto_software_update_enabled\"\u003e\u003c/a\u003e [auto\\_software\\_update\\_enabled](#input\\_auto\\_software\\_update\\_enabled) | Enable automatic software updates for OpenSearch | `bool` | `false` | no |\n| \u003ca name=\"input_auto_tune_cron_expression\"\u003e\u003c/a\u003e [auto\\_tune\\_cron\\_expression](#input\\_auto\\_tune\\_cron\\_expression) | Cron expression for Auto-Tune maintenance schedule | `string` | `\"0 1 * * ?\"` | no |\n| \u003ca name=\"input_auto_tune_desired_state\"\u003e\u003c/a\u003e [auto\\_tune\\_desired\\_state](#input\\_auto\\_tune\\_desired\\_state) | Desired state of Auto-Tune | `string` | `\"ENABLED\"` | no |\n| \u003ca name=\"input_auto_tune_duration_unit\"\u003e\u003c/a\u003e [auto\\_tune\\_duration\\_unit](#input\\_auto\\_tune\\_duration\\_unit) | Duration unit for Auto-Tune maintenance | `string` | `\"HOURS\"` | no |\n| \u003ca name=\"input_auto_tune_duration_value\"\u003e\u003c/a\u003e [auto\\_tune\\_duration\\_value](#input\\_auto\\_tune\\_duration\\_value) | Duration value for Auto-Tune maintenance | `number` | `1` | no |\n| \u003ca name=\"input_auto_tune_start_at\"\u003e\u003c/a\u003e [auto\\_tune\\_start\\_at](#input\\_auto\\_tune\\_start\\_at) | Start time for Auto-Tune maintenance | `string` | `\"2024-10-23T01:00:00Z\"` | no |\n| \u003ca name=\"input_availability_zone_count\"\u003e\u003c/a\u003e [availability\\_zone\\_count](#input\\_availability\\_zone\\_count) | The number of availability zones to use for zone awareness. | `number` | `2` | no |\n| \u003ca name=\"input_cognito_identity_pool_id\"\u003e\u003c/a\u003e [cognito\\_identity\\_pool\\_id](#input\\_cognito\\_identity\\_pool\\_id) | Cognito Identity Pool ID | `string` | `\"\"` | no |\n| \u003ca name=\"input_cognito_user_pool_id\"\u003e\u003c/a\u003e [cognito\\_user\\_pool\\_id](#input\\_cognito\\_user\\_pool\\_id) | Cognito User Pool ID | `string` | `\"\"` | no |\n| \u003ca name=\"input_create_access_policy\"\u003e\u003c/a\u003e [create\\_access\\_policy](#input\\_create\\_access\\_policy) | Flag to determine if access policy should be created. | `bool` | `true` | no |\n| \u003ca name=\"input_create_data_lifecycle_policy\"\u003e\u003c/a\u003e [create\\_data\\_lifecycle\\_policy](#input\\_create\\_data\\_lifecycle\\_policy) | Flag to determine if data lifecycle policy should be created. | `bool` | `true` | no |\n| \u003ca name=\"input_create_encryption_policy\"\u003e\u003c/a\u003e [create\\_encryption\\_policy](#input\\_create\\_encryption\\_policy) | Flag to determine if encryption policy should be created. | `bool` | `true` | no |\n| \u003ca name=\"input_custom_certificate_arn\"\u003e\u003c/a\u003e [custom\\_certificate\\_arn](#input\\_custom\\_certificate\\_arn) | ARN of the ACM certificate for the custom endpoint | `string` | `\"\"` | no |\n| \u003ca name=\"input_custom_hostname\"\u003e\u003c/a\u003e [custom\\_hostname](#input\\_custom\\_hostname) | Custom domain name for the OpenSearch endpoint | `string` | `\"\"` | no |\n| \u003ca name=\"input_data_lifecycle_policy_rules\"\u003e\u003c/a\u003e [data\\_lifecycle\\_policy\\_rules](#input\\_data\\_lifecycle\\_policy\\_rules) | Data lifecycle policy rules for the indices. | \u003cpre\u003elist(object({\u003cbr\u003e    indexes   = list(string)\u003cbr\u003e    retention = string\u003cbr\u003e  }))\u003c/pre\u003e | \u003cpre\u003e[\u003cbr\u003e  {\u003cbr\u003e    \"indexes\": [\u003cbr\u003e      \"*\"\u003cbr\u003e    ],\u003cbr\u003e    \"retention\": \"Unlimited\"\u003cbr\u003e  }\u003cbr\u003e]\u003c/pre\u003e | no |\n| \u003ca name=\"input_dedicated_master_count\"\u003e\u003c/a\u003e [dedicated\\_master\\_count](#input\\_dedicated\\_master\\_count) | Number of dedicated master instances | `number` | `3` | no |\n| \u003ca name=\"input_dedicated_master_enabled\"\u003e\u003c/a\u003e [dedicated\\_master\\_enabled](#input\\_dedicated\\_master\\_enabled) | Whether dedicated master is enabled | `bool` | `false` | no |\n| \u003ca name=\"input_dedicated_master_type\"\u003e\u003c/a\u003e [dedicated\\_master\\_type](#input\\_dedicated\\_master\\_type) | Instance type for the dedicated master node | `string` | `\"m5.large.search\"` | no |\n| \u003ca name=\"input_description\"\u003e\u003c/a\u003e [description](#input\\_description) | A description for the OpenSearch collection. | `string` | `\"OpenSearch collection domain for logs and search\"` | no |\n| \u003ca name=\"input_ebs_enabled\"\u003e\u003c/a\u003e [ebs\\_enabled](#input\\_ebs\\_enabled) | Whether EBS is enabled for the domain | `bool` | `true` | no |\n| \u003ca name=\"input_egress_rules\"\u003e\u003c/a\u003e [egress\\_rules](#input\\_egress\\_rules) | A list of egress rules for the security group. | \u003cpre\u003elist(object({\u003cbr\u003e    from_port   = number\u003cbr\u003e    to_port     = number\u003cbr\u003e    protocol    = string\u003cbr\u003e    cidr_blocks = list(string)\u003cbr\u003e  }))\u003c/pre\u003e | `[]` | no |\n| \u003ca name=\"input_enable_auto_tune\"\u003e\u003c/a\u003e [enable\\_auto\\_tune](#input\\_enable\\_auto\\_tune) | Enable Auto-Tune for the domain | `bool` | `false` | no |\n| \u003ca name=\"input_enable_cognito_options\"\u003e\u003c/a\u003e [enable\\_cognito\\_options](#input\\_enable\\_cognito\\_options) | Enable Cognito authentication for the OpenSearch domain | `bool` | `false` | no |\n| \u003ca name=\"input_enable_custom_endpoint\"\u003e\u003c/a\u003e [enable\\_custom\\_endpoint](#input\\_enable\\_custom\\_endpoint) | Enable custom domain endpoint | `bool` | `false` | no |\n| \u003ca name=\"input_enable_domain_endpoint_options\"\u003e\u003c/a\u003e [enable\\_domain\\_endpoint\\_options](#input\\_enable\\_domain\\_endpoint\\_options) | Enable custom domain endpoint options for the OpenSearch domain. | `bool` | `false` | no |\n| \u003ca name=\"input_enable_encrypt_at_rest\"\u003e\u003c/a\u003e [enable\\_encrypt\\_at\\_rest](#input\\_enable\\_encrypt\\_at\\_rest) | Enable encryption at rest for the OpenSearch domain. | `bool` | `false` | no |\n| \u003ca name=\"input_enable_off_peak_window_options\"\u003e\u003c/a\u003e [enable\\_off\\_peak\\_window\\_options](#input\\_enable\\_off\\_peak\\_window\\_options) | Enable off-peak window options for the domain | `bool` | `false` | no |\n| \u003ca name=\"input_enable_public_access\"\u003e\u003c/a\u003e [enable\\_public\\_access](#input\\_enable\\_public\\_access) | Enable public access for the OpenSearch collection. If false, private access will be used. | `bool` | `false` | no |\n| \u003ca name=\"input_enable_serverless\"\u003e\u003c/a\u003e [enable\\_serverless](#input\\_enable\\_serverless) | Enable OpenSearch Serverless. If true, creates the serverless module; if false, creates the standard module. | `bool` | `false` | no |\n| \u003ca name=\"input_enable_snapshot_options\"\u003e\u003c/a\u003e [enable\\_snapshot\\_options](#input\\_enable\\_snapshot\\_options) | Enable snapshot options for the domain | `bool` | `false` | no |\n| \u003ca name=\"input_enable_vpc_options\"\u003e\u003c/a\u003e [enable\\_vpc\\_options](#input\\_enable\\_vpc\\_options) | Enable VPC options for the OpenSearch domain. | `bool` | `false` | no |\n| \u003ca name=\"input_enable_zone_awareness\"\u003e\u003c/a\u003e [enable\\_zone\\_awareness](#input\\_enable\\_zone\\_awareness) | Enable zone awareness for the OpenSearch domain. | `bool` | `false` | no |\n| \u003ca name=\"input_encrypt_at_rest_enabled\"\u003e\u003c/a\u003e [encrypt\\_at\\_rest\\_enabled](#input\\_encrypt\\_at\\_rest\\_enabled) | Enable encryption at rest | `bool` | `true` | no |\n| \u003ca name=\"input_enforce_https\"\u003e\u003c/a\u003e [enforce\\_https](#input\\_enforce\\_https) | Force HTTPS on the OpenSearch endpoint | `bool` | `true` | no |\n| \u003ca name=\"input_engine_version\"\u003e\u003c/a\u003e [engine\\_version](#input\\_engine\\_version) | OpenSearch or Elasticsearch engine version | `string` | `\"OpenSearch_1.0\"` | no |\n| \u003ca name=\"input_environment\"\u003e\u003c/a\u003e [environment](#input\\_environment) | Name of the environment, i.e. dev, stage, prod | `string` | n/a | yes |\n| \u003ca name=\"input_ingress_rules\"\u003e\u003c/a\u003e [ingress\\_rules](#input\\_ingress\\_rules) | A list of ingress rules for the security group. | \u003cpre\u003elist(object({\u003cbr\u003e    from_port   = number\u003cbr\u003e    to_port     = number\u003cbr\u003e    protocol    = string\u003cbr\u003e    cidr_blocks = list(string)\u003cbr\u003e  }))\u003c/pre\u003e | `[]` | no |\n| \u003ca name=\"input_instance_count\"\u003e\u003c/a\u003e [instance\\_count](#input\\_instance\\_count) | Number of instances in the cluster | `number` | `2` | no |\n| \u003ca name=\"input_instance_type\"\u003e\u003c/a\u003e [instance\\_type](#input\\_instance\\_type) | Instance type for the OpenSearch domain | `string` | `\"m5.large.search\"` | no |\n| \u003ca name=\"input_internal_user_database_enabled\"\u003e\u003c/a\u003e [internal\\_user\\_database\\_enabled](#input\\_internal\\_user\\_database\\_enabled) | Enable internal user database for fine-grained access control | `bool` | `true` | no |\n| \u003ca name=\"input_iops\"\u003e\u003c/a\u003e [iops](#input\\_iops) | Provisioned IOPS for the volume | `number` | `null` | no |\n| \u003ca name=\"input_kms_key_id\"\u003e\u003c/a\u003e [kms\\_key\\_id](#input\\_kms\\_key\\_id) | KMS key ID for encryption at rest | `string` | `\"\"` | no |\n| \u003ca name=\"input_log_publishing_enabled\"\u003e\u003c/a\u003e [log\\_publishing\\_enabled](#input\\_log\\_publishing\\_enabled) | Whether to enable the log publishing option. | `bool` | `true` | no |\n| \u003ca name=\"input_log_types\"\u003e\u003c/a\u003e [log\\_types](#input\\_log\\_types) | List of log types to publish to CloudWatch (Valid values: INDEX\\_SLOW\\_LOGS, SEARCH\\_SLOW\\_LOGS, ES\\_APPLICATION\\_LOGS, AUDIT\\_LOGS) | `list(string)` | \u003cpre\u003e[\u003cbr\u003e  \"INDEX_SLOW_LOGS\",\u003cbr\u003e  \"SEARCH_SLOW_LOGS\"\u003cbr\u003e]\u003c/pre\u003e | no |\n| \u003ca name=\"input_master_user_arn\"\u003e\u003c/a\u003e [master\\_user\\_arn](#input\\_master\\_user\\_arn) | The ARN of the IAM role for fine-grained access control. Required if use\\_iam\\_arn\\_as\\_master\\_user is true. | `string` | `\"\"` | no |\n| \u003ca name=\"input_master_user_name\"\u003e\u003c/a\u003e [master\\_user\\_name](#input\\_master\\_user\\_name) | Master user name for OpenSearch | `string` | `\"admin\"` | no |\n| \u003ca name=\"input_name\"\u003e\u003c/a\u003e [name](#input\\_name) | Name of the OpenSearch domain | `string` | n/a | yes |\n| \u003ca name=\"input_namespace\"\u003e\u003c/a\u003e [namespace](#input\\_namespace) | Namespace of the project, i.e. arc | `string` | n/a | yes |\n| \u003ca name=\"input_node_to_node_encryption_enabled\"\u003e\u003c/a\u003e [node\\_to\\_node\\_encryption\\_enabled](#input\\_node\\_to\\_node\\_encryption\\_enabled) | Enable node-to-node encryption | `bool` | `true` | no |\n| \u003ca name=\"input_off_peak_hours\"\u003e\u003c/a\u003e [off\\_peak\\_hours](#input\\_off\\_peak\\_hours) | Off-peak window start time (hours) | `number` | `0` | no |\n| \u003ca name=\"input_off_peak_minutes\"\u003e\u003c/a\u003e [off\\_peak\\_minutes](#input\\_off\\_peak\\_minutes) | Off-peak window start time (minutes) | `number` | `0` | no |\n| \u003ca name=\"input_retention_in_days\"\u003e\u003c/a\u003e [retention\\_in\\_days](#input\\_retention\\_in\\_days) | The number of days to retain log events in the log group | `number` | `7` | no |\n| \u003ca name=\"input_saml_options\"\u003e\u003c/a\u003e [saml\\_options](#input\\_saml\\_options) | Configuration block for SAML options in the OpenSearch domain. | \u003cpre\u003eobject({\u003cbr\u003e    enabled                 = bool\u003cbr\u003e    idp_entity_id           = optional(string)\u003cbr\u003e    idp_metadata_content    = optional(string)\u003cbr\u003e    roles_key               = optional(string)\u003cbr\u003e    session_timeout_minutes = optional(number)\u003cbr\u003e    subject_key             = optional(string)\u003cbr\u003e  })\u003c/pre\u003e | \u003cpre\u003e{\u003cbr\u003e  \"enabled\": false,\u003cbr\u003e  \"idp_entity_id\": null,\u003cbr\u003e  \"idp_metadata_content\": null,\u003cbr\u003e  \"roles_key\": null,\u003cbr\u003e  \"session_timeout_minutes\": null,\u003cbr\u003e  \"subject_key\": null\u003cbr\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_security_group_name\"\u003e\u003c/a\u003e [security\\_group\\_name](#input\\_security\\_group\\_name) | Name for the security group | `string` | `\"\"` | no |\n| \u003ca name=\"input_snapshot_start_hour\"\u003e\u003c/a\u003e [snapshot\\_start\\_hour](#input\\_snapshot\\_start\\_hour) | Start hour for the automated snapshot | `number` | `0` | no |\n| \u003ca name=\"input_subnet_ids\"\u003e\u003c/a\u003e [subnet\\_ids](#input\\_subnet\\_ids) | List of subnet IDs for the OpenSearch domain | `list(string)` | `[]` | no |\n| \u003ca name=\"input_tags\"\u003e\u003c/a\u003e [tags](#input\\_tags) | Tags to apply to resources | `map(string)` | n/a | yes |\n| \u003ca name=\"input_throughput\"\u003e\u003c/a\u003e [throughput](#input\\_throughput) | Provisioned throughput for the volume | `number` | `null` | no |\n| \u003ca name=\"input_tls_security_policy\"\u003e\u003c/a\u003e [tls\\_security\\_policy](#input\\_tls\\_security\\_policy) | TLS security policy for HTTPS endpoints | `string` | `\"Policy-Min-TLS-1-2-PFS-2023-10\"` | no |\n| \u003ca name=\"input_type\"\u003e\u003c/a\u003e [type](#input\\_type) | The type of OpenSearch collection. | `string` | `\"TIMESERIES\"` | no |\n| \u003ca name=\"input_use_iam_arn_as_master_user\"\u003e\u003c/a\u003e [use\\_iam\\_arn\\_as\\_master\\_user](#input\\_use\\_iam\\_arn\\_as\\_master\\_user) | Set to true to use IAM ARN as the master user, false to create a master user. | `bool` | `false` | no |\n| \u003ca name=\"input_use_standby_replicas\"\u003e\u003c/a\u003e [use\\_standby\\_replicas](#input\\_use\\_standby\\_replicas) | Flag to enable or disable standby replicas. | `bool` | `true` | no |\n| \u003ca name=\"input_use_ultrawarm\"\u003e\u003c/a\u003e [use\\_ultrawarm](#input\\_use\\_ultrawarm) | Whether to enable UltraWarm nodes | `bool` | `false` | no |\n| \u003ca name=\"input_volume_size\"\u003e\u003c/a\u003e [volume\\_size](#input\\_volume\\_size) | EBS volume size in GB | `number` | `20` | no |\n| \u003ca name=\"input_volume_type\"\u003e\u003c/a\u003e [volume\\_type](#input\\_volume\\_type) | EBS volume type | `string` | `\"gp2\"` | no |\n| \u003ca name=\"input_vpc_id\"\u003e\u003c/a\u003e [vpc\\_id](#input\\_vpc\\_id) | ID of the VPC for OpenSearch domain | `string` | `null` | no |\n| \u003ca name=\"input_warm_count\"\u003e\u003c/a\u003e [warm\\_count](#input\\_warm\\_count) | Number of UltraWarm instances | `number` | `2` | no |\n| \u003ca name=\"input_warm_type\"\u003e\u003c/a\u003e [warm\\_type](#input\\_warm\\_type) | UltraWarm node instance type | `string` | `\"ultrawarm1.medium.search\"` | no |\n| \u003ca name=\"input_zone_awareness_enabled\"\u003e\u003c/a\u003e [zone\\_awareness\\_enabled](#input\\_zone\\_awareness\\_enabled) | Whether zone awareness is enabled | `bool` | `true` | no |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_opensearch_collection_endpoint\"\u003e\u003c/a\u003e [opensearch\\_collection\\_endpoint](#output\\_opensearch\\_collection\\_endpoint) | The Endpoint of the OpenSearch collection |\n| \u003ca name=\"output_opensearch_domain_arn\"\u003e\u003c/a\u003e [opensearch\\_domain\\_arn](#output\\_opensearch\\_domain\\_arn) | The ARN of the OpenSearch domain. |\n| \u003ca name=\"output_opensearch_domain_endpoint\"\u003e\u003c/a\u003e [opensearch\\_domain\\_endpoint](#output\\_opensearch\\_domain\\_endpoint) | The endpoint of the OpenSearch domain. |\n| \u003ca name=\"output_opensearch_domain_id\"\u003e\u003c/a\u003e [opensearch\\_domain\\_id](#output\\_opensearch\\_domain\\_id) | The unique identifier for the OpenSearch domain. |\n| \u003ca name=\"output_opensearch_serverless_collection_arn\"\u003e\u003c/a\u003e [opensearch\\_serverless\\_collection\\_arn](#output\\_opensearch\\_serverless\\_collection\\_arn) | The ARN of the OpenSearch Serverless collection |\n| \u003ca name=\"output_opensearch_serverless_collection_id\"\u003e\u003c/a\u003e [opensearch\\_serverless\\_collection\\_id](#output\\_opensearch\\_serverless\\_collection\\_id) | The ID of the OpenSearch Serverless collection |\n\u003c!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --\u003e  \n\n## Versioning  \nThis project uses a `.version` file at the root of the repo which the pipeline reads from and does a git tag.  \n\nWhen you intend to commit to `main`, you will need to increment this version. Once the project is merged,\nthe pipeline will kick off and tag the latest git commit.  \n\n## Development\n\n### Prerequisites\n\n- [terraform](https://learn.hashicorp.com/terraform/getting-started/install#installing-terraform)\n- [terraform-docs](https://github.com/segmentio/terraform-docs)\n- [pre-commit](https://pre-commit.com/#install)\n- [golang](https://golang.org/doc/install#install)\n- [golint](https://github.com/golang/lint#installation)\n\n### Configurations\n\n- Configure pre-commit hooks\n  ```sh\n  pre-commit install\n  ```\n\n### Tests\n- Tests are available in `test` directory\n- Configure the dependencies\n  ```sh\n  cd test/\n  go mod init github.com/sourcefuse/terraform-aws-refarch-opensearch\n  go get github.com/gruntwork-io/terratest/modules/terraform\n  ```\n- Now execute the test  \n  ```sh\n  go test -timeout  30m\n  ```\n\n## Authors\n\nThis project is authored by:  \n* SourceFuse ARC Team\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsourcefuse%2Fterraform-aws-arc-opensearch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsourcefuse%2Fterraform-aws-arc-opensearch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsourcefuse%2Fterraform-aws-arc-opensearch/lists"}