Skip to content

Commit e3385b8

Browse files
committed
feat: Update, test, and validate OpenSearch serverless collection module/example
1 parent a1126cc commit e3385b8

File tree

20 files changed

+548
-253
lines changed

20 files changed

+548
-253
lines changed

examples/collection/README.md

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# AWS OpenSearch Serverless Collection Example
2+
3+
Configuration in this directory creates an AWS OpenSearch serverless collection
4+
5+
## Usage
6+
7+
To run this example you need to execute:
8+
9+
```bash
10+
$ terraform init
11+
$ terraform plan
12+
$ terraform apply
13+
```
14+
15+
Note that this example may create resources which will incur monetary charges on your AWS bill. Run `terraform destroy` when you no longer need these resources.
16+
17+
<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK -->
18+
## Requirements
19+
20+
| Name | Version |
21+
|------|---------|
22+
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
23+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.24 |
24+
25+
## Providers
26+
27+
| Name | Version |
28+
|------|---------|
29+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.24 |
30+
31+
## Modules
32+
33+
| Name | Source | Version |
34+
|------|--------|---------|
35+
| <a name="module_opensearch_collection_disabled"></a> [opensearch\_collection\_disabled](#module\_opensearch\_collection\_disabled) | ../../modules/collection | n/a |
36+
| <a name="module_opensearch_collection_private"></a> [opensearch\_collection\_private](#module\_opensearch\_collection\_private) | ../../modules/collection | n/a |
37+
| <a name="module_opensearch_collection_public"></a> [opensearch\_collection\_public](#module\_opensearch\_collection\_public) | ../../modules/collection | n/a |
38+
| <a name="module_vpc"></a> [vpc](#module\_vpc) | terraform-aws-modules/vpc/aws | ~> 5.0 |
39+
40+
## Resources
41+
42+
| Name | Type |
43+
|------|------|
44+
| [aws_opensearchserverless_vpc_endpoint.example](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/opensearchserverless_vpc_endpoint) | resource |
45+
| [aws_availability_zones.available](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/availability_zones) | data source |
46+
47+
## Inputs
48+
49+
No inputs.
50+
51+
## Outputs
52+
53+
| Name | Description |
54+
|------|-------------|
55+
| <a name="output_opensearch_collection_private_access_policy"></a> [opensearch\_collection\_private\_access\_policy](#output\_opensearch\_collection\_private\_access\_policy) | The JSON policy document of the access policy |
56+
| <a name="output_opensearch_collection_private_access_policy_version"></a> [opensearch\_collection\_private\_access\_policy\_version](#output\_opensearch\_collection\_private\_access\_policy\_version) | The version of the access policy |
57+
| <a name="output_opensearch_collection_private_arn"></a> [opensearch\_collection\_private\_arn](#output\_opensearch\_collection\_private\_arn) | Amazon Resource Name (ARN) of the collection |
58+
| <a name="output_opensearch_collection_private_dashboard_endpoint"></a> [opensearch\_collection\_private\_dashboard\_endpoint](#output\_opensearch\_collection\_private\_dashboard\_endpoint) | Collection-specific endpoint used to access OpenSearch Dashboards |
59+
| <a name="output_opensearch_collection_private_encryption_policy"></a> [opensearch\_collection\_private\_encryption\_policy](#output\_opensearch\_collection\_private\_encryption\_policy) | The JSON policy document of the encryption policy |
60+
| <a name="output_opensearch_collection_private_encryption_policy_version"></a> [opensearch\_collection\_private\_encryption\_policy\_version](#output\_opensearch\_collection\_private\_encryption\_policy\_version) | The version of the encryption policy |
61+
| <a name="output_opensearch_collection_private_endpoint"></a> [opensearch\_collection\_private\_endpoint](#output\_opensearch\_collection\_private\_endpoint) | Collection-specific endpoint used to submit index, search, and data upload requests to an OpenSearch Serverless collection |
62+
| <a name="output_opensearch_collection_private_id"></a> [opensearch\_collection\_private\_id](#output\_opensearch\_collection\_private\_id) | Unique identifier for the collection |
63+
| <a name="output_opensearch_collection_private_kms_key_arn"></a> [opensearch\_collection\_private\_kms\_key\_arn](#output\_opensearch\_collection\_private\_kms\_key\_arn) | The ARN of the Amazon Web Services KMS key used to encrypt the collection |
64+
| <a name="output_opensearch_collection_private_lifecycle_policy"></a> [opensearch\_collection\_private\_lifecycle\_policy](#output\_opensearch\_collection\_private\_lifecycle\_policy) | The JSON policy document of the lifecycle policy |
65+
| <a name="output_opensearch_collection_private_lifecycle_policy_version"></a> [opensearch\_collection\_private\_lifecycle\_policy\_version](#output\_opensearch\_collection\_private\_lifecycle\_policy\_version) | The version of the lifecycle policy |
66+
| <a name="output_opensearch_collection_private_network_policy"></a> [opensearch\_collection\_private\_network\_policy](#output\_opensearch\_collection\_private\_network\_policy) | The JSON policy document of the network policy |
67+
| <a name="output_opensearch_collection_private_network_policy_version"></a> [opensearch\_collection\_private\_network\_policy\_version](#output\_opensearch\_collection\_private\_network\_policy\_version) | The version of the network policy |
68+
| <a name="output_opensearch_collection_public_access_policy"></a> [opensearch\_collection\_public\_access\_policy](#output\_opensearch\_collection\_public\_access\_policy) | The JSON policy document of the access policy |
69+
| <a name="output_opensearch_collection_public_access_policy_version"></a> [opensearch\_collection\_public\_access\_policy\_version](#output\_opensearch\_collection\_public\_access\_policy\_version) | The version of the access policy |
70+
| <a name="output_opensearch_collection_public_arn"></a> [opensearch\_collection\_public\_arn](#output\_opensearch\_collection\_public\_arn) | Amazon Resource Name (ARN) of the collection |
71+
| <a name="output_opensearch_collection_public_dashboard_endpoint"></a> [opensearch\_collection\_public\_dashboard\_endpoint](#output\_opensearch\_collection\_public\_dashboard\_endpoint) | Collection-specific endpoint used to access OpenSearch Dashboards |
72+
| <a name="output_opensearch_collection_public_encryption_policy"></a> [opensearch\_collection\_public\_encryption\_policy](#output\_opensearch\_collection\_public\_encryption\_policy) | The JSON policy document of the encryption policy |
73+
| <a name="output_opensearch_collection_public_encryption_policy_version"></a> [opensearch\_collection\_public\_encryption\_policy\_version](#output\_opensearch\_collection\_public\_encryption\_policy\_version) | The version of the encryption policy |
74+
| <a name="output_opensearch_collection_public_endpoint"></a> [opensearch\_collection\_public\_endpoint](#output\_opensearch\_collection\_public\_endpoint) | Collection-specific endpoint used to submit index, search, and data upload requests to an OpenSearch Serverless collection |
75+
| <a name="output_opensearch_collection_public_id"></a> [opensearch\_collection\_public\_id](#output\_opensearch\_collection\_public\_id) | Unique identifier for the collection |
76+
| <a name="output_opensearch_collection_public_kms_key_arn"></a> [opensearch\_collection\_public\_kms\_key\_arn](#output\_opensearch\_collection\_public\_kms\_key\_arn) | The ARN of the Amazon Web Services KMS key used to encrypt the collection |
77+
| <a name="output_opensearch_collection_public_lifecycle_policy"></a> [opensearch\_collection\_public\_lifecycle\_policy](#output\_opensearch\_collection\_public\_lifecycle\_policy) | The JSON policy document of the lifecycle policy |
78+
| <a name="output_opensearch_collection_public_lifecycle_policy_version"></a> [opensearch\_collection\_public\_lifecycle\_policy\_version](#output\_opensearch\_collection\_public\_lifecycle\_policy\_version) | The version of the lifecycle policy |
79+
| <a name="output_opensearch_collection_public_network_policy"></a> [opensearch\_collection\_public\_network\_policy](#output\_opensearch\_collection\_public\_network\_policy) | The JSON policy document of the network policy |
80+
| <a name="output_opensearch_collection_public_network_policy_version"></a> [opensearch\_collection\_public\_network\_policy\_version](#output\_opensearch\_collection\_public\_network\_policy\_version) | The version of the network policy |
81+
<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK -->
82+
83+
Apache-2.0 Licensed. See [LICENSE](https://github.com/terraform-aws-modules/terraform-aws-opensearch/blob/master/LICENSE).

examples/serverless/main.tf renamed to examples/collection/main.tf

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,40 @@ locals {
2222
# OpenSearch Module
2323
################################################################################
2424

25-
module "opensearch" {
26-
source = "../.."
25+
module "opensearch_collection_public" {
26+
source = "../../modules/collection"
2727

28-
create = false
28+
name = "${local.name}-public"
29+
description = "Example public OpenSearch Serverless collection"
30+
type = "SEARCH"
31+
32+
create_access_policy = true
33+
create_network_policy = true
2934

3035
tags = local.tags
3136
}
3237

33-
module "opensearch_disabled" {
34-
source = "../.."
38+
module "opensearch_collection_private" {
39+
source = "../../modules/collection"
40+
41+
name = "${local.name}-private"
42+
description = "Example private OpenSearch Serverless collection"
43+
type = "SEARCH"
44+
45+
create_access_policy = true
46+
create_network_policy = true
47+
network_policy = {
48+
AllowFromPublic = false
49+
SourceVPCEs = [
50+
aws_opensearchserverless_vpc_endpoint.example.id
51+
]
52+
}
53+
54+
tags = local.tags
55+
}
56+
57+
module "opensearch_collection_disabled" {
58+
source = "../../modules/collection"
3559

3660
create = false
3761
}
@@ -53,3 +77,9 @@ module "vpc" {
5377

5478
tags = local.tags
5579
}
80+
81+
resource "aws_opensearchserverless_vpc_endpoint" "example" {
82+
name = local.name
83+
subnet_ids = module.vpc.private_subnets
84+
vpc_id = module.vpc.vpc_id
85+
}

examples/collection/outputs.tf

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
################################################################################
2+
# OpenSearch Collection
3+
################################################################################
4+
5+
output "opensearch_collection_public_arn" {
6+
description = "Amazon Resource Name (ARN) of the collection"
7+
value = module.opensearch_collection_public.arn
8+
}
9+
10+
output "opensearch_collection_public_endpoint" {
11+
description = "Collection-specific endpoint used to submit index, search, and data upload requests to an OpenSearch Serverless collection"
12+
value = module.opensearch_collection_public.endpoint
13+
}
14+
15+
output "opensearch_collection_public_dashboard_endpoint" {
16+
description = "Collection-specific endpoint used to access OpenSearch Dashboards"
17+
value = module.opensearch_collection_public.dashboard_endpoint
18+
}
19+
20+
output "opensearch_collection_public_kms_key_arn" {
21+
description = "The ARN of the Amazon Web Services KMS key used to encrypt the collection"
22+
value = module.opensearch_collection_public.kms_key_arn
23+
}
24+
25+
output "opensearch_collection_public_id" {
26+
description = "Unique identifier for the collection"
27+
value = module.opensearch_collection_public.id
28+
}
29+
30+
output "opensearch_collection_public_encryption_policy_version" {
31+
description = "The version of the encryption policy"
32+
value = module.opensearch_collection_public.encryption_policy_version
33+
}
34+
35+
output "opensearch_collection_public_encryption_policy" {
36+
description = "The JSON policy document of the encryption policy"
37+
value = module.opensearch_collection_public.encryption_policy
38+
}
39+
40+
output "opensearch_collection_public_network_policy_version" {
41+
description = "The version of the network policy"
42+
value = module.opensearch_collection_public.network_policy_version
43+
}
44+
45+
output "opensearch_collection_public_network_policy" {
46+
description = "The JSON policy document of the network policy"
47+
value = module.opensearch_collection_public.network_policy
48+
}
49+
50+
output "opensearch_collection_public_access_policy_version" {
51+
description = "The version of the access policy"
52+
value = module.opensearch_collection_public.access_policy_version
53+
}
54+
55+
output "opensearch_collection_public_access_policy" {
56+
description = "The JSON policy document of the access policy"
57+
value = module.opensearch_collection_public.access_policy
58+
}
59+
60+
output "opensearch_collection_public_lifecycle_policy_version" {
61+
description = "The version of the lifecycle policy"
62+
value = module.opensearch_collection_public.lifecycle_policy_version
63+
}
64+
65+
output "opensearch_collection_public_lifecycle_policy" {
66+
description = "The JSON policy document of the lifecycle policy"
67+
value = module.opensearch_collection_public.lifecycle_policy
68+
}
69+
70+
################################################################################
71+
# OpenSearch Private Collection
72+
################################################################################
73+
74+
output "opensearch_collection_private_arn" {
75+
description = "Amazon Resource Name (ARN) of the collection"
76+
value = module.opensearch_collection_private.arn
77+
}
78+
79+
output "opensearch_collection_private_endpoint" {
80+
description = "Collection-specific endpoint used to submit index, search, and data upload requests to an OpenSearch Serverless collection"
81+
value = module.opensearch_collection_private.endpoint
82+
}
83+
84+
output "opensearch_collection_private_dashboard_endpoint" {
85+
description = "Collection-specific endpoint used to access OpenSearch Dashboards"
86+
value = module.opensearch_collection_private.dashboard_endpoint
87+
}
88+
89+
output "opensearch_collection_private_kms_key_arn" {
90+
description = "The ARN of the Amazon Web Services KMS key used to encrypt the collection"
91+
value = module.opensearch_collection_private.kms_key_arn
92+
}
93+
94+
output "opensearch_collection_private_id" {
95+
description = "Unique identifier for the collection"
96+
value = module.opensearch_collection_private.id
97+
}
98+
99+
output "opensearch_collection_private_encryption_policy_version" {
100+
description = "The version of the encryption policy"
101+
value = module.opensearch_collection_private.encryption_policy_version
102+
}
103+
104+
output "opensearch_collection_private_encryption_policy" {
105+
description = "The JSON policy document of the encryption policy"
106+
value = module.opensearch_collection_private.encryption_policy
107+
}
108+
109+
output "opensearch_collection_private_network_policy_version" {
110+
description = "The version of the network policy"
111+
value = module.opensearch_collection_private.network_policy_version
112+
}
113+
114+
output "opensearch_collection_private_network_policy" {
115+
description = "The JSON policy document of the network policy"
116+
value = module.opensearch_collection_private.network_policy
117+
}
118+
119+
output "opensearch_collection_private_access_policy_version" {
120+
description = "The version of the access policy"
121+
value = module.opensearch_collection_private.access_policy_version
122+
}
123+
124+
output "opensearch_collection_private_access_policy" {
125+
description = "The JSON policy document of the access policy"
126+
value = module.opensearch_collection_private.access_policy
127+
}
128+
129+
output "opensearch_collection_private_lifecycle_policy_version" {
130+
description = "The version of the lifecycle policy"
131+
value = module.opensearch_collection_private.lifecycle_policy_version
132+
}
133+
134+
output "opensearch_collection_private_lifecycle_policy" {
135+
description = "The JSON policy document of the lifecycle policy"
136+
value = module.opensearch_collection_private.lifecycle_policy
137+
}
File renamed without changes.
File renamed without changes.

examples/serverless/README.md

Lines changed: 0 additions & 65 deletions
This file was deleted.

0 commit comments

Comments
 (0)