An open API service indexing awesome lists of open source software.

https://github.com/element84/terraform-aws-stac-server

stac-server Terraform module for AWS
https://github.com/element84/terraform-aws-stac-server

Last synced: 6 months ago
JSON representation

stac-server Terraform module for AWS

Awesome Lists containing this project

README

          

# stac-server Terraform on AWS

An opinionated way of deploying [stac-server](https://github.com/stac-utils/stac-server) on AWS via Terraform. Commonly used in the [FilmDrop Ecosystem](https://github.com/Element84/filmdrop-aws-tf-modules), a suite of open source tools for ingesting, archiving, processing, analyzing and distributing geospatial data in the cloud.

**stac-server Version**

A default version of stac-server is packaged with this module. See the default value of `stac_server_version` in `inputs.tf` for the currently packaged version, and note that it can be overridden. Use caution when overriding the default version; we cannot guarantee the infrastructure deployed by this module will support versions of stac-server that it has not been tested with.

[![CI](https://github.com/Element84/terraform-aws-stac-server/actions/workflows/ci.yml/badge.svg)](https://github.com/Element84/terraform-aws-stac-server/actions/workflows/ci.yml)
[![Release Tests](https://github.com/Element84/terraform-aws-stac-server/actions/workflows/release-tests.yml/badge.svg)](https://github.com/Element84/terraform-aws-stac-server/actions/workflows/release-tests.yml)
[![Snyk Scan](https://github.com/Element84/terraform-aws-stac-server/actions/workflows/snyk-scan.yml/badge.svg)](https://github.com/Element84/terraform-aws-stac-server/actions/workflows/snyk-scan.yml)
[![GitHub Release](https://img.shields.io/github/v/release/Element84/terraform-aws-stac-server?color=2334D058)]() [![License](https://img.shields.io/github/license/Element84/terraform-aws-stac-server?color=2334D058)]()

## General Usage

While this module is most commonly used in conjunction with a FilmDrop deployment, it can be deployed as a standalone STAC server. Prerequisites:

- A VPC in an AWS account which contains at least one private subnet

**Quickstart**

- Clone this repository
- Authenticate to the AWS account you're deploying to
- Install [tfenv](https://github.com/tfutils/tfenv), then use it to install Terraform: `tfenv install`
- This will install the specific Terraform version denoted in `.terraform-version`, which has been explicitly tested with this module. As an alternative to using tfenv, simply install that version of Terraform directly
- Optionally point to a remote Terraform state store, rather than storing state locally. See [/utils/cicd](./utils/cicd) for an S3 example
- Initialize Terraform: `terraform init`
- Edit `default.tfvars`, noting that some var values are invalid placeholders which must be updated
- You're now ready to validate/plan/apply, e.g. `terraform apply -var-file=default.tfvars`

**Example Usages:**

- [/utils/cicd](./utils/cicd) in this repository provides an example used by our CI/CD tests

- [filmdrop-aws-tf-modules](https://github.com/Element84/filmdrop-aws-tf-modules) is a complete working example usage in the core FilmDrop module

## Requirements

| Name | Version |
|------|---------|
| [terraform](#requirement\_terraform) | >= 1.13.0 |
| [archive](#requirement\_archive) | ~> 2.4 |
| [aws](#requirement\_aws) | ~> 6.0 |
| [null](#requirement\_null) | ~> 3.2 |
| [random](#requirement\_random) | ~> 3.5 |

## Modules

No modules.

## Inputs

| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| [additional\_ingest\_sqs\_senders\_arns](#input\_additional\_ingest\_sqs\_senders\_arns) | List of additional principals to grant access to send to the Ingest SQS. This is required to allow STAC API SNS notifications (e.g. earth search's ingest SNS topic) to be able to publish SQS ingest messages to our stac-server for indexing. | `list(string)` | `[]` | no |
| [allow\_explicit\_index](#input\_allow\_explicit\_index) | Allow OpenSearch Explicit Index | `string` | `"true"` | no |
| [api\_lambda](#input\_api\_lambda) | (optional, object) Parameters for the stac-server API Lambda function.
- zip\_filepath: (optional, string) Filepath to a ZIP that implements the
stac-server API Lambda. Path is relative to the root module of this
deployment. Overrides the default ZIP included with this module.
- runtime: (optional, string) Lambda runtime.
- handler: (optional, string) Lambda handler.
- memory\_mb: (optional, number) Lambda max memory (MB).
- timeout\_seconds (optional, number) Lambda timeout (seconds).
- environment\_variables: (optional, map(string)) Custom environment variables
to add to the Lambda. These will be merged with the default environment
variables. Custom variables with the same key will override defaults. |

object({
zip_filepath = optional(string)
runtime = optional(string, "nodejs22.x")
handler = optional(string, "index.handler")
memory_mb = optional(number, 1024)
timeout_seconds = optional(number, 30)
environment_variables = optional(map(string), {})
})
|
{
"environment_variables": {},
"handler": "index.handler",
"memory_mb": 1024,
"runtime": "nodejs22.x",
"timeout_seconds": 30,
"zip_filepath": null
}
| no |
| [api\_method\_authorization\_type](#input\_api\_method\_authorization\_type) | STAC API Gateway method authorization type | `string` | `"NONE"` | no |
| [api\_rest\_type](#input\_api\_rest\_type) | STAC API Gateway type | `string` | `"EDGE"` | no |
| [asset\_proxy\_bucket\_list](#input\_asset\_proxy\_bucket\_list) | Comma-separated list of S3 bucket names to proxy. Required when `ASSET_PROXY_BUCKET_OPTION` is `LIST`.

Example: 'bucket1,bucket2,bucket3' | `string` | `""` | no |
| [asset\_proxy\_bucket\_option](#input\_asset\_proxy\_bucket\_option) | Control which S3 buckets are proxied through the API. See stac-server utils documentation for details.

Options: `NONE` (disabled), `ALL` (all S3 assets), `ALL_BUCKETS_IN_ACCOUNT` (all buckets in AWS account), `LIST` (specific buckets only). | `string` | `"NONE"` | no |
| [asset\_proxy\_url\_expiry](#input\_asset\_proxy\_url\_expiry) | Pre-signed URL expiry time in seconds for proxied assets. | `number` | `300` | no |
| [authorized\_s3\_arns](#input\_authorized\_s3\_arns) | List of S3 bucket ARNs to give GetObject permissions to | `list(string)` | `[]` | no |
| [collection\_to\_index\_mappings](#input\_collection\_to\_index\_mappings) | A JSON object representing collection id to index name mappings if they do not have the same names | `string` | `""` | no |
| [cors\_credentials](#input\_cors\_credentials) | n/a | `bool` | `false` | no |
| [cors\_headers](#input\_cors\_headers) | n/a | `string` | `""` | no |
| [cors\_methods](#input\_cors\_methods) | n/a | `string` | `""` | no |
| [cors\_origin](#input\_cors\_origin) | n/a | `string` | `"*"` | no |
| [custom\_vpce\_id](#input\_custom\_vpce\_id) | If you are managing a VPC Endpoint for API Gateways outside of this module, provide the VPC Endpoint ID here.
This will prevent the module from creating a VPC Endpoint, and will use the provided one instead for
configuring access to the private STAC Server API Gateway. If you have multiple API Gateways which need to
communicate with VPC resources, they can share a central VPC Endpoint rather than creating one per API Gateway.

Should be used in conjunction with api\_rest\_type = "PRIVATE" | `string` | `null` | no |
| [deploy\_local\_stac\_server\_artifacts](#input\_deploy\_local\_stac\_server\_artifacts) | Deploy STAC Server artifacts for local deploy | `bool` | `false` | no |
| [deploy\_stac\_server\_opensearch\_serverless](#input\_deploy\_stac\_server\_opensearch\_serverless) | Deploy FilmDrop Stac-Server with OpenSearch Serverless. If False, Stac-server will be deployed with a classic OpenSearch domain. | `bool` | `false` | no |
| [deploy\_stac\_server\_outside\_vpc](#input\_deploy\_stac\_server\_outside\_vpc) | Deploy FilmDrop Stac-Server resources, including OpenSearch outside VPC. Defaults to false. If False, Stac-server resources will be deployed within the vpc. | `bool` | `false` | no |
| [domain\_alias](#input\_domain\_alias) | Custom domain alias for private API Gateway endpoint | `string` | `""` | no |
| [enable\_collections\_authx](#input\_enable\_collections\_authx) | Enable Collections Authx | `bool` | `false` | no |
| [enable\_filter\_authx](#input\_enable\_filter\_authx) | Enable Filter Authx | `bool` | `false` | no |
| [enable\_ingest\_action\_truncate](#input\_enable\_ingest\_action\_truncate) | Enable Ingest Action Truncate | `string` | `false` | no |
| [enable\_response\_compression](#input\_enable\_response\_compression) | Enable Response Compression | `bool` | `false` | no |
| [enable\_transactions\_extension](#input\_enable\_transactions\_extension) | Enable Transactions Extension | `bool` | `false` | no |
| [ingest\_lambda](#input\_ingest\_lambda) | (optional, object) Parameters for the stac-server ingest Lambda function.
- zip\_filepath: (optional, string) Filepath to a ZIP that implements the
stac-server ingest Lambda. Path is relative to the root module of this
deployment. Overrides the default ZIP included with this module.
- runtime: (optional, string) Lambda runtime.
- handler: (optional, string) Lambda handler.
- memory\_mb: (optional, number) Lambda max memory (MB).
- timeout\_seconds (optional, number) Lambda timeout (seconds).
- environment\_variables: (optional, map(string)) Custom environment variables
to add to the Lambda. These will be merged with the default environment
variables. Custom variables with the same key will override defaults. |
object({
zip_filepath = optional(string)
runtime = optional(string, "nodejs22.x")
handler = optional(string, "index.handler")
memory_mb = optional(number, 512)
timeout_seconds = optional(number, 60)
environment_variables = optional(map(string), {})
})
|
{
"environment_variables": {},
"handler": "index.handler",
"memory_mb": 512,
"runtime": "nodejs22.x",
"timeout_seconds": 60,
"zip_filepath": null
}
| no |
| [ingest\_sns\_topic\_arns](#input\_ingest\_sns\_topic\_arns) | List of additional Ingest SNS topic arns to subscribe to stac server | `list(string)` | `[]` | no |
| [ingest\_sqs\_dlq\_timeout](#input\_ingest\_sqs\_dlq\_timeout) | STAC Ingest SQS Dead Letter Queue Visibility Timeout | `number` | `30` | no |
| [ingest\_sqs\_max\_receive\_count](#input\_ingest\_sqs\_max\_receive\_count) | STAC Ingest SQS Max Receive Count | `number` | `2` | no |
| [ingest\_sqs\_receive\_wait\_time\_seconds](#input\_ingest\_sqs\_receive\_wait\_time\_seconds) | STAC Ingest Receive Wait time | `number` | `5` | no |
| [ingest\_sqs\_timeout](#input\_ingest\_sqs\_timeout) | STAC Ingest SQS Visibility Timeout | `number` | `120` | no |
| [items\_max\_limit](#input\_items\_max\_limit) | Items Max Limit | `number` | `100` | no |
| [log\_level](#input\_log\_level) | Logging level (error, warn, info, http, verbose, debug, silly) | `string` | `"warn"` | no |
| [opensearch\_admin\_username](#input\_opensearch\_admin\_username) | OpenSearch admin username | `string` | `"admin"` | no |
| [opensearch\_advanced\_security\_options\_enabled](#input\_opensearch\_advanced\_security\_options\_enabled) | OpenSearch advanced security options enabled | `bool` | `true` | no |
| [opensearch\_cluster\_availability\_zone\_count](#input\_opensearch\_cluster\_availability\_zone\_count) | The number of Availability Zones to deploy the OpenSearch cluster across.

Constraints:
- Valid values are 2 or 3.
- Only used and enforced when opensearch\_cluster\_zone\_awareness\_enabled is true.
- You must provide at least this many subnets in vpc\_subnet\_ids. | `number` | `3` | no |
| [opensearch\_cluster\_dedicated\_master\_count](#input\_opensearch\_cluster\_dedicated\_master\_count) | Number of dedicated main nodes in the cluster. | `number` | `3` | no |
| [opensearch\_cluster\_dedicated\_master\_enabled](#input\_opensearch\_cluster\_dedicated\_master\_enabled) | OpenSearch Domain dedicated master | `bool` | `false` | no |
| [opensearch\_cluster\_dedicated\_master\_type](#input\_opensearch\_cluster\_dedicated\_master\_type) | OpenSearch Domain dedicated master instance type | `string` | `"m6g.large.search"` | no |
| [opensearch\_cluster\_instance\_count](#input\_opensearch\_cluster\_instance\_count) | The number of data nodes to provision in the OpenSearch cluster.

Constraints:
- If zone\_awareness\_enabled is false: Allowed values are integer >= 1.
- If zone\_awareness\_enabled is true and availability\_zone\_count is 2: Must be an even number >= 2.
- If zone\_awareness\_enabled is true and availability\_zone\_count is 3: Must be a multiple of 3 >= 3. | `number` | `3` | no |
| [opensearch\_cluster\_instance\_type](#input\_opensearch\_cluster\_instance\_type) | OpenSearch Domain instance type.
Examples:
- t3.small.search (entry level, development)
- m6g.large.search (general purpose)
- or2.medium.search (opensearch optimized)

See AWS documentation for full list of supported instance types per region and engine version. | `string` | `"c6g.large.search"` | no |
| [opensearch\_cluster\_zone\_awareness\_enabled](#input\_opensearch\_cluster\_zone\_awareness\_enabled) | Enable Zone Awareness to distribute instances across multiple Availability Zones.

Configuration Rules:
- If true:
- You must set opensearch\_cluster\_instance\_count >= 2.
- You must provided enough subnets in vpc\_subnet\_ids (at least availability\_zone\_count).
- If false:
- You can set opensearch\_cluster\_instance\_count to 1 or more.
- All instances will be placed in the first subnet provided in vpc\_subnet\_ids. | `bool` | `true` | no |
| [opensearch\_domain\_enforce\_https](#input\_opensearch\_domain\_enforce\_https) | OpenSearch Domain enforce https | `bool` | `true` | no |
| [opensearch\_domain\_min\_tls](#input\_opensearch\_domain\_min\_tls) | OpenSearch Domain minimum TLS | `string` | `"Policy-Min-TLS-1-2-2019-07"` | no |
| [opensearch\_ebs\_volume\_size](#input\_opensearch\_ebs\_volume\_size) | OpenSearch EBS volume size | `number` | `35` | no |
| [opensearch\_ebs\_volume\_type](#input\_opensearch\_ebs\_volume\_type) | OpenSearch EBS volume type | `string` | `"gp3"` | no |
| [opensearch\_host](#input\_opensearch\_host) | OpenSearch Host | `string` | `""` | no |
| [opensearch\_internal\_user\_database\_enabled](#input\_opensearch\_internal\_user\_database\_enabled) | OpenSearch internal user database enabled | `bool` | `true` | no |
| [opensearch\_logs](#input\_opensearch\_logs) | Configuration for OpenSearch log publishing to CloudWatch.
This entire variable is optional. If not provided, no logs will be published.

NOTE: This variable only applies to the managed (provisioned) OpenSearch service.
It is NOT supported when `deploy_stac_server_opensearch_serverless` is set to `true`.

You can configure any combination of the following log types (all are optional):
- `ES_APPLICATION_LOGS`: OpenSearch application logs (error, warn, info).
- `INDEX_SLOW_LOGS`: Logs for slow indexing operations.
- `SEARCH_SLOW_LOGS`: Logs for slow search queries.
- `AUDIT_LOGS`: Logs for access and security audits. Tracks user activity and access to the domain.
Warning: Audit logs can be extremely verbose and may result in significant CloudWatch Log ingestion and storage costs. |
object({
ES_APPLICATION_LOGS = optional(object({
enabled = bool
retention_in_days = number
deletion_protection_enabled = optional(bool, false)
}))
INDEX_SLOW_LOGS = optional(object({
enabled = bool
retention_in_days = number
deletion_protection_enabled = optional(bool, false)
}))
SEARCH_SLOW_LOGS = optional(object({
enabled = bool
retention_in_days = number
deletion_protection_enabled = optional(bool, false)
}))
AUDIT_LOGS = optional(object({
enabled = bool
retention_in_days = number
deletion_protection_enabled = bool # required property; audit logs are usually very important
}))
})
| `{}` | no |
| [opensearch\_override\_main\_response\_version](#input\_opensearch\_override\_main\_response\_version) | Newer versions of Elasticsearch forcefully set this, even if it's not defined here in which case Terraform will try to
revert it on every apply. This value does NOT actually change the setting in OpenSearch cluster. See the GitHub issue
linked below. This value is here to appease Terraform only. If Terraform is nagging you with perpetual changes to
override main response version, set this var to the value your cluster currently has or alternatively update your
cluster settings via AWS API to match the default null value set by this module
https://github.com/hashicorp/terraform-provider-aws/issues/27371
https://docs.aws.amazon.com/opensearch-service/latest/APIReference/API_UpgradeDomain.html#opensearchservice-UpgradeDomain-request-AdvancedOptions | `string` | `null` | no |
| [opensearch\_stac\_server\_domain\_name\_override](#input\_opensearch\_stac\_server\_domain\_name\_override) | This optionally overrides the OpenSearch server name. Since this name can't change after the server has been created, it is provided so that any changes to the default name don't require tearing down the server on future TF updates. | `string` | `null` | no |
| [opensearch\_stac\_server\_username](#input\_opensearch\_stac\_server\_username) | OpenSearch stac server username | `string` | `"stac_server"` | no |
| [opensearch\_version](#input\_opensearch\_version) | OpenSearch version for OpenSearch Domain | `string` | `"OpenSearch_2.19"` | no |
| [pre\_hook\_lambda](#input\_pre\_hook\_lambda) | (optional, object) Parameters for the stac-server pre-hook Lambda function.
- zip\_filepath: (optional, string) Filepath to a ZIP that implements the
stac-server auth pre-hook Lambda. Path is relative to the root module of
this deployment. Overrides the default ZIP included with this module.
- runtime: (optional, string) Lambda runtime.
- handler: (optional, string) Lambda handler.
- memory\_mb: (optional, number) Lambda max memory (MB).
- timeout\_seconds (optional, number) Lambda timeout (seconds).
- environment\_variables: (optional, map(string)) Custom environment variables
to add to the Lambda. These will be merged with the default environment
variables. Custom variables with the same key will override defaults. |
object({
zip_filepath = optional(string)
runtime = optional(string, "nodejs22.x")
handler = optional(string, "index.handler")
memory_mb = optional(number, 128)
timeout_seconds = optional(number, 25)
environment_variables = optional(map(string), {})
})
|
{
"environment_variables": {},
"handler": "index.handler",
"memory_mb": 128,
"runtime": "nodejs22.x",
"timeout_seconds": 25,
"zip_filepath": null
}
| no |
| [private\_api\_additional\_security\_group\_ids](#input\_private\_api\_additional\_security\_group\_ids) | Optional list of security group IDs that'll be applied to the VPC interface
endpoints of a PRIVATE-type stac-server API Gateway. These security groups are
in addition to the security groups that allow traffic from the private subnet
CIDR blocks. Only applicable when `var.api_rest_type == PRIVATE`. | `list(string)` | `null` | no |
| [private\_certificate\_arn](#input\_private\_certificate\_arn) | Private Certificate ARN for custom domain alias of private API Gateway endpoint | `string` | `""` | no |
| [project\_name](#input\_project\_name) | Project Name | `string` | n/a | yes |
| [request\_logging\_enabled](#input\_request\_logging\_enabled) | Log all requests to the server | `bool` | `true` | no |
| [reserved\_concurrent\_executions](#input\_reserved\_concurrent\_executions) | STAC ingest lambda reserved concurrent executions (max concurrency) | `number` | `10` | no |
| [stac\_api\_provisioned\_concurrency](#input\_stac\_api\_provisioned\_concurrency) | Number of lambda instances to concurrently provision if desired for faster api response time and no cold start delay | `number` | `0` | no |
| [stac\_api\_rootpath](#input\_stac\_api\_rootpath) | If stac-server has a cloudfront distribution, this should be an empty string.
If stac-server does not have a cloudfront distribution, the api\_rest\_type is
PRIVATE, and you're managing a custom API Gateway domain outside of this module,
this should be an empty string.
If neither is true, the stac\_api\_stage var should be used. | `string` | `""` | no |
| [stac\_api\_stage](#input\_stac\_api\_stage) | STAC API stage | `string` | `"dev"` | no |
| [stac\_api\_stage\_description](#input\_stac\_api\_stage\_description) | STAC API stage description | `string` | `""` | no |
| [stac\_api\_url](#input\_stac\_api\_url) | When the STAC\_API\_URL env var is set, the item/message will have the self link set to the ingested items URL in the API; if not, the self link points to the copy of it in s3. | `string` | `""` | no |
| [stac\_description](#input\_stac\_description) | STAC description | `string` | `"A STAC API using stac-server"` | no |
| [stac\_docs\_url](#input\_stac\_docs\_url) | STAC Documentation URL | `string` | `"https://stac-utils.github.io/stac-server/"` | no |
| [stac\_id](#input\_stac\_id) | STAC identifier | `string` | `"stac-server"` | no |
| [stac\_server\_auth\_pre\_hook\_enabled](#input\_stac\_server\_auth\_pre\_hook\_enabled) | STAC API Pre-Hook Auth Lambda Enabled | `bool` | `false` | no |
| [stac\_server\_post\_hook\_lambda\_arn](#input\_stac\_server\_post\_hook\_lambda\_arn) | STAC API Post-Hook Lambda ARN | `string` | `""` | no |
| [stac\_server\_pre\_hook\_lambda\_arn](#input\_stac\_server\_pre\_hook\_lambda\_arn) | STAC API Pre-Hook Lambda ARN | `string` | `""` | no |
| [stac\_server\_version](#input\_stac\_server\_version) | stac-server version. Leave this null to use the default, prepackaged version of stac-server.

If you need to use a custom version, set this variable to the desired version string *and* set
deploy\_local\_stac\_server\_artifacts = true. Note though that custom versions of stac-server are not
guaranteed to be compatible with this module. | `string` | `"v4.5.0"` | no |
| [stac\_title](#input\_stac\_title) | STAC title | `string` | `"STAC API"` | no |
| [vpc\_cidr\_range](#input\_vpc\_cidr\_range) | CIDR Range for FilmDrop vpc | `string` | n/a | yes |
| [vpc\_id](#input\_vpc\_id) | FilmDrop VPC ID | `string` | n/a | yes |
| [vpc\_security\_group\_ids](#input\_vpc\_security\_group\_ids) | List of security groups in the FilmDrop vpc | `list(string)` | n/a | yes |
| [vpc\_subnet\_ids](#input\_vpc\_subnet\_ids) | List of subnet ids in the FilmDrop vpc | `list(string)` | n/a | yes |
| [vpce\_private\_dns\_enabled](#input\_vpce\_private\_dns\_enabled) | Whether to enable Private DNS on the Interface VPC Endpoint used for the STAC API (execute-api).
Leave false if you rely on VPC endpoint-specific hostnames; set true to resolve the standard API Gateway
hostname to the VPC endpoint from within the VPC. | `bool` | `false` | no |

## Outputs

| Name | Description |
|------|-------------|
| [stac\_server\_api\_domain\_name](#output\_stac\_server\_api\_domain\_name) | n/a |
| [stac\_server\_api\_gateway\_id](#output\_stac\_server\_api\_gateway\_id) | n/a |
| [stac\_server\_api\_lambda\_arn](#output\_stac\_server\_api\_lambda\_arn) | n/a |
| [stac\_server\_api\_lambda\_name](#output\_stac\_server\_api\_lambda\_name) | n/a |
| [stac\_server\_api\_path](#output\_stac\_server\_api\_path) | n/a |
| [stac\_server\_ingest\_lambda\_arn](#output\_stac\_server\_ingest\_lambda\_arn) | n/a |
| [stac\_server\_ingest\_lambda\_name](#output\_stac\_server\_ingest\_lambda\_name) | n/a |
| [stac\_server\_ingest\_queue\_arn](#output\_stac\_server\_ingest\_queue\_arn) | n/a |
| [stac\_server\_ingest\_queue\_url](#output\_stac\_server\_ingest\_queue\_url) | n/a |
| [stac\_server\_ingest\_sns\_topic\_arn](#output\_stac\_server\_ingest\_sns\_topic\_arn) | n/a |
| [stac\_server\_lambda\_iam\_role\_arn](#output\_stac\_server\_lambda\_iam\_role\_arn) | n/a |
| [stac\_server\_name\_prefix](#output\_stac\_server\_name\_prefix) | n/a |
| [stac\_server\_opensearch\_domain](#output\_stac\_server\_opensearch\_domain) | n/a |
| [stac\_server\_opensearch\_endpoint](#output\_stac\_server\_opensearch\_endpoint) | n/a |
| [stac\_server\_opensearch\_name](#output\_stac\_server\_opensearch\_name) | n/a |
| [stac\_server\_post\_ingest\_sns\_topic\_arn](#output\_stac\_server\_post\_ingest\_sns\_topic\_arn) | n/a |