import * as core from "@terrascript/core"; export interface DomainEndpointOptionsArgs extends core.SchemaArgs { customEndpoint?: string | core.StringOut; customEndpointCertificateArn?: string | core.StringOut; customEndpointEnabled?: boolean | core.BooleanOut; enforceHttps?: boolean | core.BooleanOut; tlsSecurityPolicy?: string | core.StringOut; } export class DomainEndpointOptions extends core.Schema { @core.attr(String) public customEndpoint?: string | core.StringOut; @core.attr(String) public customEndpointCertificateArn?: string | core.StringOut; @core.attr(Boolean) public customEndpointEnabled?: boolean | core.BooleanOut; @core.attr(Boolean) public enforceHttps?: boolean | core.BooleanOut; @core.attr(String, { computed: true }) public tlsSecurityPolicy?: string | core.StringOut; } export interface EncryptAtRestArgs extends core.SchemaArgs { enabled: boolean | core.BooleanOut; kmsKeyId?: string | core.StringOut; } export class EncryptAtRest extends core.Schema { @core.attr(Boolean) public enabled!: boolean | core.BooleanOut; @core.attr(String, { computed: true }) public kmsKeyId?: string | core.StringOut; } export interface ZoneAwarenessConfigArgs extends core.SchemaArgs { availabilityZoneCount?: number | core.NumberOut; } export class ZoneAwarenessConfig extends core.Schema { @core.attr(Number) public availabilityZoneCount?: number | core.NumberOut; } export interface ColdStorageOptionsArgs extends core.SchemaArgs { enabled?: boolean | core.BooleanOut; } export class ColdStorageOptions extends core.Schema { @core.attr(Boolean, { computed: true }) public enabled?: boolean | core.BooleanOut; } export interface ClusterConfigArgs extends core.SchemaArgs { coldStorageOptions?: ColdStorageOptions; dedicatedMasterCount?: number | core.NumberOut; dedicatedMasterEnabled?: boolean | core.BooleanOut; dedicatedMasterType?: string | core.StringOut; instanceCount?: number | core.NumberOut; instanceType?: string | core.StringOut; warmCount?: number | core.NumberOut; warmEnabled?: boolean | core.BooleanOut; warmType?: string | core.StringOut; zoneAwarenessConfig?: ZoneAwarenessConfig; zoneAwarenessEnabled?: boolean | core.BooleanOut; } export class ClusterConfig extends core.Schema { @core.attr(ColdStorageOptions, { computed: true }) public coldStorageOptions?: ColdStorageOptions; @core.attr(Number) public dedicatedMasterCount?: number | core.NumberOut; @core.attr(Boolean) public dedicatedMasterEnabled?: boolean | core.BooleanOut; @core.attr(String) public dedicatedMasterType?: string | core.StringOut; @core.attr(Number) public instanceCount?: number | core.NumberOut; @core.attr(String) public instanceType?: string | core.StringOut; @core.attr(Number) public warmCount?: number | core.NumberOut; @core.attr(Boolean) public warmEnabled?: boolean | core.BooleanOut; @core.attr(String) public warmType?: string | core.StringOut; @core.attr(ZoneAwarenessConfig) public zoneAwarenessConfig?: ZoneAwarenessConfig; @core.attr(Boolean) public zoneAwarenessEnabled?: boolean | core.BooleanOut; } export interface EbsOptionsArgs extends core.SchemaArgs { ebsEnabled: boolean | core.BooleanOut; iops?: number | core.NumberOut; throughput?: number | core.NumberOut; volumeSize?: number | core.NumberOut; volumeType?: string | core.StringOut; } export class EbsOptions extends core.Schema { @core.attr(Boolean) public ebsEnabled!: boolean | core.BooleanOut; @core.attr(Number) public iops?: number | core.NumberOut; @core.attr(Number, { computed: true }) public throughput?: number | core.NumberOut; @core.attr(Number) public volumeSize?: number | core.NumberOut; @core.attr(String, { computed: true }) public volumeType?: string | core.StringOut; } export interface NodeToNodeEncryptionArgs extends core.SchemaArgs { enabled: boolean | core.BooleanOut; } export class NodeToNodeEncryption extends core.Schema { @core.attr(Boolean) public enabled!: boolean | core.BooleanOut; } export interface LogPublishingOptionsArgs extends core.SchemaArgs { cloudwatchLogGroupArn: string | core.StringOut; enabled?: boolean | core.BooleanOut; logType: string | core.StringOut; } export class LogPublishingOptions extends core.Schema { @core.attr(String) public cloudwatchLogGroupArn!: string | core.StringOut; @core.attr(Boolean) public enabled?: boolean | core.BooleanOut; @core.attr(String) public logType!: string | core.StringOut; } export interface MasterUserOptionsArgs extends core.SchemaArgs { masterUserArn?: string | core.StringOut; masterUserName?: string | core.StringOut; masterUserPassword?: string | core.StringOut; } export class MasterUserOptions extends core.Schema { @core.attr(String) public masterUserArn?: string | core.StringOut; @core.attr(String) public masterUserName?: string | core.StringOut; @core.attr(String) public masterUserPassword?: string | core.StringOut; } export interface AdvancedSecurityOptionsArgs extends core.SchemaArgs { enabled: boolean | core.BooleanOut; internalUserDatabaseEnabled?: boolean | core.BooleanOut; masterUserOptions?: MasterUserOptions; } export class AdvancedSecurityOptions extends core.Schema { @core.attr(Boolean) public enabled!: boolean | core.BooleanOut; @core.attr(Boolean) public internalUserDatabaseEnabled?: boolean | core.BooleanOut; @core.attr(MasterUserOptions) public masterUserOptions?: MasterUserOptions; } export interface SnapshotOptionsArgs extends core.SchemaArgs { automatedSnapshotStartHour: number | core.NumberOut; } export class SnapshotOptions extends core.Schema { @core.attr(Number) public automatedSnapshotStartHour!: number | core.NumberOut; } export interface CognitoOptionsArgs extends core.SchemaArgs { enabled?: boolean | core.BooleanOut; identityPoolId: string | core.StringOut; roleArn: string | core.StringOut; userPoolId: string | core.StringOut; } export class CognitoOptions extends core.Schema { @core.attr(Boolean) public enabled?: boolean | core.BooleanOut; @core.attr(String) public identityPoolId!: string | core.StringOut; @core.attr(String) public roleArn!: string | core.StringOut; @core.attr(String) public userPoolId!: string | core.StringOut; } export interface DurationArgs extends core.SchemaArgs { unit: string | core.StringOut; value: number | core.NumberOut; } export class Duration extends core.Schema { @core.attr(String) public unit!: string | core.StringOut; @core.attr(Number) public value!: number | core.NumberOut; } export interface MaintenanceScheduleArgs extends core.SchemaArgs { cronExpressionForRecurrence: string | core.StringOut; duration: Duration; startAt: string | core.StringOut; } export class MaintenanceSchedule extends core.Schema { @core.attr(String) public cronExpressionForRecurrence!: string | core.StringOut; @core.attr(Duration) public duration!: Duration; @core.attr(String) public startAt!: string | core.StringOut; } export interface AutoTuneOptionsArgs extends core.SchemaArgs { desiredState: string | core.StringOut; maintenanceSchedule?: | core.Array | core.ArrayOut; rollbackOnDisable?: string | core.StringOut; } export class AutoTuneOptions extends core.Schema { @core.attr(String) public desiredState!: string | core.StringOut; @core.attr(MaintenanceSchedule, { computed: true, kind: "array" }) public maintenanceSchedule?: | core.Array | core.ArrayOut; @core.attr(String, { computed: true }) public rollbackOnDisable?: string | core.StringOut; } export interface VpcOptionsArgs extends core.SchemaArgs { availabilityZones: core.Array | core.ArrayOut; securityGroupIds?: core.Array | core.ArrayOut; subnetIds?: core.Array | core.ArrayOut; vpcId: string | core.StringOut; } export class VpcOptions extends core.Schema { @core.attr(String, { computed: true, kind: "array" }) public availabilityZones!: core.Array | core.ArrayOut; @core.attr(String, { kind: "array" }) public securityGroupIds?: core.Array | core.ArrayOut; @core.attr(String, { kind: "array" }) public subnetIds?: core.Array | core.ArrayOut; @core.attr(String, { computed: true }) public vpcId!: string | core.StringOut; } export interface DomainArgs extends core.ResourceArgs { /** * (Optional) IAM policy document specifying the access policies for the domain. */ accessPolicies?: string | core.StringOut; /** * (Optional) Key-value string pairs to specify advanced configuration options. Note that the values fo * r these configuration options must be strings (wrapped in quotes) or they may be wrong and cause a p * erpetual diff, causing Terraform to want to recreate your OpenSearch domain on every apply. */ advancedOptions?: core.Map | core.MapOut; /** * (Optional) Configuration block for [fine-grained access control](https://docs.aws.amazon.com/opensea * rch-service/latest/developerguide/fgac.html). Detailed below. */ advancedSecurityOptions?: AdvancedSecurityOptions; /** * (Optional) Configuration block for the Auto-Tune options of the domain. Detailed below. */ autoTuneOptions?: AutoTuneOptions; /** * (Optional) Configuration block for the cluster of the domain. Detailed below. */ clusterConfig?: ClusterConfig; /** * (Optional) Configuration block for authenticating Kibana with Cognito. Detailed below. */ cognitoOptions?: CognitoOptions; /** * (Optional) Configuration block for domain endpoint HTTP(S) related options. Detailed below. */ domainEndpointOptions?: DomainEndpointOptions; /** * (Required) Name of the domain. */ domainName: string | core.StringOut; /** * (Optional) Configuration block for EBS related options, may be required based on chosen [instance si * ze](https://aws.amazon.com/opensearch-service/pricing/). Detailed below. */ ebsOptions?: EbsOptions; /** * (Optional) Configuration block for encrypt at rest options. Only available for [certain instance typ * es](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/encryption-at-rest.html). D * etailed below. */ encryptAtRest?: EncryptAtRest; /** * (Optional) Either `Elasticsearch_X.Y` or `OpenSearch_X.Y` to specify the engine version for the Amaz * on OpenSearch Service domain. For example, `OpenSearch_1.0` or `Elasticsearch_7.9`. See [Creating an * d managing Amazon OpenSearch Service domains](http://docs.aws.amazon.com/opensearch-service/latest/d * eveloperguide/createupdatedomains.html#createdomains). Defaults to `OpenSearch_1.1`. */ engineVersion?: string | core.StringOut; /** * (Optional) Configuration block for publishing slow and application logs to CloudWatch Logs. This blo * ck can be declared multiple times, for each log_type, within the same resource. Detailed below. */ logPublishingOptions?: | core.Array | core.ArrayOut; /** * (Optional) Configuration block for node-to-node encryption options. Detailed below. */ nodeToNodeEncryption?: NodeToNodeEncryption; /** * (Optional) Configuration block for snapshot related options. Detailed below. DEPRECATED. For domains * running OpenSearch 5.3 and later, Amazon OpenSearch takes hourly automated snapshots, making this s * etting irrelevant. For domains running earlier versions, OpenSearch takes daily automated snapshots. */ snapshotOptions?: SnapshotOptions; /** * (Optional) Map of tags to assign to the resource. If configured with a provider [`default_tags` conf * iguration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-conf * iguration-block) present, tags with matching keys will overwrite those defined at the provider-level * . */ tags?: core.Map | core.MapOut; /** * Map of tags assigned to the resource, including those inherited from the provider [`default_tags` co * nfiguration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-co * nfiguration-block). */ tagsAll?: core.Map | core.MapOut; /** * (Optional) Configuration block for VPC related options. Adding or removing this configuration forces * a new resource ([documentation](https://docs.aws.amazon.com/opensearch-service/latest/developerguid * e/vpc.html)). Detailed below. */ vpcOptions?: VpcOptions; } export class Domain extends core.Resource { /** * (Optional) IAM policy document specifying the access policies for the domain. */ @core.attr(String, { computed: true }) public accessPolicies?: string | core.StringOut; /** * (Optional) Key-value string pairs to specify advanced configuration options. Note that the values fo * r these configuration options must be strings (wrapped in quotes) or they may be wrong and cause a p * erpetual diff, causing Terraform to want to recreate your OpenSearch domain on every apply. */ @core.attr(String, { computed: true, kind: "map" }) public advancedOptions?: | core.Map | core.MapOut; /** * (Optional) Configuration block for [fine-grained access control](https://docs.aws.amazon.com/opensea * rch-service/latest/developerguide/fgac.html). Detailed below. */ @core.attr(AdvancedSecurityOptions, { computed: true }) public advancedSecurityOptions?: AdvancedSecurityOptions; /** * ARN of the domain. */ @core.attr(String, { computed: true }) public arn!: string | core.StringOut; /** * (Optional) Configuration block for the Auto-Tune options of the domain. Detailed below. */ @core.attr(AutoTuneOptions, { computed: true }) public autoTuneOptions?: AutoTuneOptions; /** * (Optional) Configuration block for the cluster of the domain. Detailed below. */ @core.attr(ClusterConfig, { computed: true }) public clusterConfig?: ClusterConfig; /** * (Optional) Configuration block for authenticating Kibana with Cognito. Detailed below. */ @core.attr(CognitoOptions) public cognitoOptions?: CognitoOptions; /** * (Optional) Configuration block for domain endpoint HTTP(S) related options. Detailed below. */ @core.attr(DomainEndpointOptions, { computed: true }) public domainEndpointOptions?: DomainEndpointOptions; /** * Unique identifier for the domain. */ @core.attr(String, { computed: true }) public domainId!: string | core.StringOut; /** * (Required) Name of the domain. */ @core.attr(String) public domainName!: string | core.StringOut; /** * (Optional) Configuration block for EBS related options, may be required based on chosen [instance si * ze](https://aws.amazon.com/opensearch-service/pricing/). Detailed below. */ @core.attr(EbsOptions, { computed: true }) public ebsOptions?: EbsOptions; /** * (Optional) Configuration block for encrypt at rest options. Only available for [certain instance typ * es](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/encryption-at-rest.html). D * etailed below. */ @core.attr(EncryptAtRest, { computed: true }) public encryptAtRest?: EncryptAtRest; /** * Domain-specific endpoint used to submit index, search, and data upload requests. */ @core.attr(String, { computed: true }) public endpoint!: string | core.StringOut; /** * (Optional) Either `Elasticsearch_X.Y` or `OpenSearch_X.Y` to specify the engine version for the Amaz * on OpenSearch Service domain. For example, `OpenSearch_1.0` or `Elasticsearch_7.9`. See [Creating an * d managing Amazon OpenSearch Service domains](http://docs.aws.amazon.com/opensearch-service/latest/d * eveloperguide/createupdatedomains.html#createdomains). Defaults to `OpenSearch_1.1`. */ @core.attr(String) public engineVersion?: string | core.StringOut; @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * Domain-specific endpoint for kibana without https scheme. */ @core.attr(String, { computed: true }) public kibanaEndpoint!: string | core.StringOut; /** * (Optional) Configuration block for publishing slow and application logs to CloudWatch Logs. This blo * ck can be declared multiple times, for each log_type, within the same resource. Detailed below. */ @core.attr(LogPublishingOptions, { kind: "array" }) public logPublishingOptions?: | core.Array | core.ArrayOut; /** * (Optional) Configuration block for node-to-node encryption options. Detailed below. */ @core.attr(NodeToNodeEncryption, { computed: true }) public nodeToNodeEncryption?: NodeToNodeEncryption; /** * (Optional) Configuration block for snapshot related options. Detailed below. DEPRECATED. For domains * running OpenSearch 5.3 and later, Amazon OpenSearch takes hourly automated snapshots, making this s * etting irrelevant. For domains running earlier versions, OpenSearch takes daily automated snapshots. */ @core.attr(SnapshotOptions) public snapshotOptions?: SnapshotOptions; /** * (Optional) Map of tags to assign to the resource. If configured with a provider [`default_tags` conf * iguration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-conf * iguration-block) present, tags with matching keys will overwrite those defined at the provider-level * . */ @core.attr(String, { kind: "map" }) public tags?: core.Map | core.MapOut; /** * Map of tags assigned to the resource, including those inherited from the provider [`default_tags` co * nfiguration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-co * nfiguration-block). */ @core.attr(String, { computed: true, kind: "map" }) public tagsAll?: core.Map | core.MapOut; /** * (Optional) Configuration block for VPC related options. Adding or removing this configuration forces * a new resource ([documentation](https://docs.aws.amazon.com/opensearch-service/latest/developerguid * e/vpc.html)). Detailed below. */ @core.attr(VpcOptions) public vpcOptions?: VpcOptions; constructor(name: string, args?: DomainArgs) { super(name, "aws_opensearch_domain", args); } public override getNamespace(): string { return "aws_opensearch"; } }