{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://schemas.apievangelist.com/amazon-opensearch-service/domain-definition", "title": "Amazon OpenSearch Service Domain Definition", "description": "Schema defining the structure of an Amazon OpenSearch Service domain resource, including cluster configuration, storage options, access policies, encryption settings, and VPC configuration.", "type": "object", "required": [ "DomainName" ], "properties": { "DomainId": { "type": "string", "description": "The unique identifier for the OpenSearch domain." }, "DomainName": { "type": "string", "description": "The name of the OpenSearch domain.", "minLength": 3, "maxLength": 28, "pattern": "^[a-z][a-z0-9-]+$" }, "ARN": { "type": "string", "description": "The Amazon Resource Name of the domain." }, "Created": { "type": "boolean", "description": "Whether the domain creation is complete." }, "Deleted": { "type": "boolean", "description": "Whether the domain is being deleted." }, "Endpoint": { "type": "string", "description": "The domain endpoint used to submit index, search, and data upload requests." }, "Endpoints": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Map of VPC endpoints for the domain." }, "EngineVersion": { "type": "string", "description": "The version of OpenSearch or Elasticsearch running on the domain." }, "ClusterConfig": { "$ref": "#/$defs/ClusterConfig" }, "EBSOptions": { "$ref": "#/$defs/EBSOptions" }, "AccessPolicies": { "type": "string", "description": "IAM access policy as a JSON-formatted string." }, "SnapshotOptions": { "type": "object", "properties": { "AutomatedSnapshotStartHour": { "type": "integer", "minimum": 0, "maximum": 23, "description": "The time in UTC format when the service takes a daily automated snapshot." } } }, "VPCOptions": { "$ref": "#/$defs/VPCOptions" }, "EncryptionAtRestOptions": { "type": "object", "properties": { "Enabled": { "type": "boolean", "description": "Whether encryption at rest is enabled." }, "KmsKeyId": { "type": "string", "description": "The KMS key ID for encryption at rest." } } }, "NodeToNodeEncryptionOptions": { "type": "object", "properties": { "Enabled": { "type": "boolean", "description": "Whether node-to-node encryption is enabled." } } }, "AdvancedOptions": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Key-value pairs for advanced configuration options." }, "LogPublishingOptions": { "type": "object", "additionalProperties": { "$ref": "#/$defs/LogPublishingOption" }, "description": "Log publishing options for the domain." }, "DomainEndpointOptions": { "type": "object", "properties": { "EnforceHTTPS": { "type": "boolean", "description": "Whether to require HTTPS for all traffic to the domain." }, "TLSSecurityPolicy": { "type": "string", "enum": [ "Policy-Min-TLS-1-0-2019-07", "Policy-Min-TLS-1-2-2019-07", "Policy-Min-TLS-1-2-PFS-2023-10" ], "description": "The minimum TLS security policy." }, "CustomEndpointEnabled": { "type": "boolean" }, "CustomEndpoint": { "type": "string" }, "CustomEndpointCertificateArn": { "type": "string" } } }, "AutoTuneOptions": { "type": "object", "properties": { "State": { "type": "string", "enum": [ "ENABLED", "DISABLED", "ENABLE_IN_PROGRESS", "DISABLE_IN_PROGRESS", "DISABLED_AND_ROLLBACK_SCHEDULED", "DISABLED_AND_ROLLBACK_IN_PROGRESS", "DISABLED_AND_ROLLBACK_COMPLETE", "DISABLED_AND_ROLLBACK_ERROR", "ERROR" ] }, "DesiredState": { "type": "string", "enum": [ "ENABLED", "DISABLED" ] } } }, "tags": { "type": "array", "items": { "$ref": "#/$defs/Tag" }, "description": "Tags associated with the domain." } }, "$defs": { "ClusterConfig": { "type": "object", "description": "Container for the cluster configuration of an OpenSearch domain.", "properties": { "InstanceType": { "type": "string", "description": "The instance type for data nodes." }, "InstanceCount": { "type": "integer", "minimum": 1, "description": "The number of data nodes in the cluster." }, "DedicatedMasterEnabled": { "type": "boolean", "description": "Whether dedicated master nodes are enabled." }, "DedicatedMasterType": { "type": "string", "description": "The instance type for dedicated master nodes." }, "DedicatedMasterCount": { "type": "integer", "description": "The number of dedicated master nodes." }, "ZoneAwarenessEnabled": { "type": "boolean", "description": "Whether zone awareness is enabled." }, "WarmEnabled": { "type": "boolean", "description": "Whether UltraWarm storage is enabled." }, "WarmType": { "type": "string", "description": "The instance type for UltraWarm nodes." }, "WarmCount": { "type": "integer", "description": "The number of UltraWarm nodes." }, "ColdStorageOptions": { "type": "object", "properties": { "Enabled": { "type": "boolean" } } } } }, "EBSOptions": { "type": "object", "description": "Container for EBS-based storage configuration.", "properties": { "EBSEnabled": { "type": "boolean", "description": "Whether EBS-based storage is enabled." }, "VolumeType": { "type": "string", "enum": [ "standard", "gp2", "gp3", "io1" ], "description": "The type of EBS volume." }, "VolumeSize": { "type": "integer", "description": "The size of the EBS volume in GiB." }, "Iops": { "type": "integer", "description": "The baseline I/O performance for the EBS volume." }, "Throughput": { "type": "integer", "description": "The throughput for gp3 volumes in MiB/s." } } }, "VPCOptions": { "type": "object", "description": "Container for VPC configuration options.", "properties": { "SubnetIds": { "type": "array", "items": { "type": "string" }, "description": "A list of subnet IDs for VPC endpoints." }, "SecurityGroupIds": { "type": "array", "items": { "type": "string" }, "description": "A list of security group IDs for VPC endpoints." } } }, "LogPublishingOption": { "type": "object", "properties": { "CloudWatchLogsLogGroupArn": { "type": "string", "description": "The ARN of the CloudWatch Logs group." }, "Enabled": { "type": "boolean", "description": "Whether log publishing is enabled." } } }, "Tag": { "type": "object", "required": [ "Key", "Value" ], "properties": { "Key": { "type": "string", "description": "The tag key.", "minLength": 1, "maxLength": 128 }, "Value": { "type": "string", "description": "The tag value.", "maxLength": 256 } } } } }