UNPKG

@pulumi/aws

Version:

A Pulumi package for creating and managing Amazon Web Services (AWS) cloud resources.

665 lines (664 loc) • 29.6 kB
import * as pulumi from "@pulumi/pulumi"; import * as inputs from "../types/input"; import * as outputs from "../types/output"; /** * Manages an Amazon OpenSearch Domain. * * ## Elasticsearch vs. OpenSearch * * Amazon OpenSearch Service is the successor to Amazon Elasticsearch Service and supports OpenSearch and legacy Elasticsearch OSS (up to 7.10, the final open source version of the software). * * OpenSearch Domain configurations are similar in many ways to Elasticsearch Domain configurations. However, there are important differences including these: * * * OpenSearch has `engineVersion` while Elasticsearch has `elasticsearchVersion` * * Versions are specified differently - _e.g._, `Elasticsearch_7.10` with OpenSearch vs. `7.10` for Elasticsearch. * * `instanceType` argument values end in `search` for OpenSearch vs. `elasticsearch` for Elasticsearch (_e.g._, `t2.micro.search` vs. `t2.micro.elasticsearch`). * * The AWS-managed service-linked role for OpenSearch is called `AWSServiceRoleForAmazonOpenSearchService` instead of `AWSServiceRoleForAmazonElasticsearchService` for Elasticsearch. * * There are also some potentially unexpected similarities in configurations: * * * ARNs for both are prefaced with `arn:aws:es:`. * * Both OpenSearch and Elasticsearch use assume role policies that refer to the `Principal` `Service` as `es.amazonaws.com`. * * IAM policy actions, such as those you will find in `accessPolicies`, are prefaced with `es:` for both. * * ## Example Usage * * ### Basic Usage * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const example = new aws.opensearch.Domain("example", { * domainName: "example", * engineVersion: "Elasticsearch_7.10", * clusterConfig: { * instanceType: "r4.large.search", * }, * tags: { * Domain: "TestDomain", * }, * }); * ``` * * ### Access Policy * * > See also: `aws.opensearch.DomainPolicy` resource * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const config = new pulumi.Config(); * const domain = config.get("domain") || "tf-test"; * const current = aws.getRegion({}); * const currentGetCallerIdentity = aws.getCallerIdentity({}); * const example = Promise.all([current, currentGetCallerIdentity]).then(([current, currentGetCallerIdentity]) => aws.iam.getPolicyDocument({ * statements: [{ * effect: "Allow", * principals: [{ * type: "*", * identifiers: ["*"], * }], * actions: ["es:*"], * resources: [`arn:aws:es:${current.region}:${currentGetCallerIdentity.accountId}:domain/${domain}/*`], * conditions: [{ * test: "IpAddress", * variable: "aws:SourceIp", * values: ["66.193.100.22/32"], * }], * }], * })); * const exampleDomain = new aws.opensearch.Domain("example", { * domainName: domain, * accessPolicies: example.then(example => example.json), * }); * ``` * * ### Log publishing to CloudWatch Logs * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const exampleLogGroup = new aws.cloudwatch.LogGroup("example", {name: "example"}); * const example = aws.iam.getPolicyDocument({ * statements: [{ * effect: "Allow", * principals: [{ * type: "Service", * identifiers: ["es.amazonaws.com"], * }], * actions: [ * "logs:PutLogEvents", * "logs:PutLogEventsBatch", * "logs:CreateLogStream", * ], * resources: ["arn:aws:logs:*"], * }], * }); * const exampleLogResourcePolicy = new aws.cloudwatch.LogResourcePolicy("example", { * policyName: "example", * policyDocument: example.then(example => example.json), * }); * const exampleDomain = new aws.opensearch.Domain("example", {logPublishingOptions: [{ * cloudwatchLogGroupArn: exampleLogGroup.arn, * logType: "INDEX_SLOW_LOGS", * }]}); * ``` * * ### VPC based OpenSearch * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const config = new pulumi.Config(); * const vpc = config.requireObject<any>("vpc"); * const domain = config.get("domain") || "tf-test"; * const example = aws.ec2.getVpc({ * tags: { * Name: vpc, * }, * }); * const exampleGetSubnets = example.then(example => aws.ec2.getSubnets({ * filters: [{ * name: "vpc-id", * values: [example.id], * }], * tags: { * Tier: "private", * }, * })); * const current = aws.getRegion({}); * const currentGetCallerIdentity = aws.getCallerIdentity({}); * const exampleSecurityGroup = new aws.ec2.SecurityGroup("example", { * name: `${vpc}-opensearch-${domain}`, * description: "Managed by Pulumi", * vpcId: example.then(example => example.id), * ingress: [{ * fromPort: 443, * toPort: 443, * protocol: "tcp", * cidrBlocks: [example.then(example => example.cidrBlock)], * }], * }); * const exampleServiceLinkedRole = new aws.iam.ServiceLinkedRole("example", {awsServiceName: "opensearchservice.amazonaws.com"}); * const exampleGetPolicyDocument = Promise.all([current, currentGetCallerIdentity]).then(([current, currentGetCallerIdentity]) => aws.iam.getPolicyDocument({ * statements: [{ * effect: "Allow", * principals: [{ * type: "*", * identifiers: ["*"], * }], * actions: ["es:*"], * resources: [`arn:aws:es:${current.region}:${currentGetCallerIdentity.accountId}:domain/${domain}/*`], * }], * })); * const exampleDomain = new aws.opensearch.Domain("example", { * domainName: domain, * engineVersion: "OpenSearch_1.0", * clusterConfig: { * instanceType: "m4.large.search", * zoneAwarenessEnabled: true, * }, * vpcOptions: { * subnetIds: [ * exampleGetSubnets.then(exampleGetSubnets => exampleGetSubnets.ids?.[0]), * exampleGetSubnets.then(exampleGetSubnets => exampleGetSubnets.ids?.[1]), * ], * securityGroupIds: [exampleSecurityGroup.id], * }, * advancedOptions: { * "rest.action.multi.allow_explicit_index": "true", * }, * accessPolicies: exampleGetPolicyDocument.then(exampleGetPolicyDocument => exampleGetPolicyDocument.json), * tags: { * Domain: "TestDomain", * }, * }, { * dependsOn: [exampleServiceLinkedRole], * }); * ``` * * ### Enabling fine-grained access control on an existing domain * * This example shows two configurations: one to create a domain without fine-grained access control and the second to modify the domain to enable fine-grained access control. For more information, see [Enabling fine-grained access control](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/fgac.html). * * ### First apply * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const example = new aws.opensearch.Domain("example", { * domainName: "ggkitty", * engineVersion: "Elasticsearch_7.1", * clusterConfig: { * instanceType: "r5.large.search", * }, * advancedSecurityOptions: { * enabled: false, * anonymousAuthEnabled: true, * internalUserDatabaseEnabled: true, * masterUserOptions: { * masterUserName: "example", * masterUserPassword: "Barbarbarbar1!", * }, * }, * encryptAtRest: { * enabled: true, * }, * domainEndpointOptions: { * enforceHttps: true, * tlsSecurityPolicy: "Policy-Min-TLS-1-2-2019-07", * }, * nodeToNodeEncryption: { * enabled: true, * }, * ebsOptions: { * ebsEnabled: true, * volumeSize: 10, * }, * }); * ``` * * ### Second apply * * Notice that the only change is `advanced_security_options.0.enabled` is now set to `true`. * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const example = new aws.opensearch.Domain("example", { * domainName: "ggkitty", * engineVersion: "Elasticsearch_7.1", * clusterConfig: { * instanceType: "r5.large.search", * }, * advancedSecurityOptions: { * enabled: true, * anonymousAuthEnabled: true, * internalUserDatabaseEnabled: true, * masterUserOptions: { * masterUserName: "example", * masterUserPassword: "Barbarbarbar1!", * }, * }, * encryptAtRest: { * enabled: true, * }, * domainEndpointOptions: { * enforceHttps: true, * tlsSecurityPolicy: "Policy-Min-TLS-1-2-2019-07", * }, * nodeToNodeEncryption: { * enabled: true, * }, * ebsOptions: { * ebsEnabled: true, * volumeSize: 10, * }, * }); * ``` * * ## Import * * Using `pulumi import`, import OpenSearch domains using the `domain_name`. For example: * * ```sh * $ pulumi import aws:opensearch/domain:Domain example domain_name * ``` */ export declare class Domain extends pulumi.CustomResource { /** * Get an existing Domain resource's state with the given name, ID, and optional extra * properties used to qualify the lookup. * * @param name The _unique_ name of the resulting resource. * @param id The _unique_ provider ID of the resource to lookup. * @param state Any extra arguments used during the lookup. * @param opts Optional settings to control the behavior of the CustomResource. */ static get(name: string, id: pulumi.Input<pulumi.ID>, state?: DomainState, opts?: pulumi.CustomResourceOptions): Domain; /** * Returns true if the given object is an instance of Domain. This is designed to work even * when multiple copies of the Pulumi SDK have been loaded into the same process. */ static isInstance(obj: any): obj is Domain; /** * IAM policy document specifying the access policies for the domain. */ readonly accessPolicies: pulumi.Output<string>; /** * Key-value string pairs to specify advanced configuration options. Note that the values for these configuration options must be strings (wrapped in quotes) or they may be wrong and cause a perpetual diff, causing the provider to want to recreate your OpenSearch domain on every apply. */ readonly advancedOptions: pulumi.Output<{ [key: string]: string; }>; /** * Configuration block for [fine-grained access control](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/fgac.html). Detailed below. */ readonly advancedSecurityOptions: pulumi.Output<outputs.opensearch.DomainAdvancedSecurityOptions>; /** * Configuration block for parameters required to enable all machine learning features. Detailed below. */ readonly aimlOptions: pulumi.Output<outputs.opensearch.DomainAimlOptions>; /** * ARN of the domain. */ readonly arn: pulumi.Output<string>; /** * Configuration block for the Auto-Tune options of the domain. Detailed below. */ readonly autoTuneOptions: pulumi.Output<outputs.opensearch.DomainAutoTuneOptions>; /** * Configuration block for the cluster of the domain. Detailed below. */ readonly clusterConfig: pulumi.Output<outputs.opensearch.DomainClusterConfig>; /** * Configuration block for authenticating dashboard with Cognito. Detailed below. */ readonly cognitoOptions: pulumi.Output<outputs.opensearch.DomainCognitoOptions | undefined>; /** * Domain-specific endpoint for Dashboard without https scheme. */ readonly dashboardEndpoint: pulumi.Output<string>; /** * V2 domain endpoint for Dashboard that works with both IPv4 and IPv6 addresses, without https scheme. */ readonly dashboardEndpointV2: pulumi.Output<string>; /** * Configuration block for domain endpoint HTTP(S) related options. Detailed below. */ readonly domainEndpointOptions: pulumi.Output<outputs.opensearch.DomainDomainEndpointOptions>; /** * Dual stack hosted zone ID for the domain. */ readonly domainEndpointV2HostedZoneId: pulumi.Output<string>; /** * Unique identifier for the domain. */ readonly domainId: pulumi.Output<string>; /** * Name of the domain. * * The following arguments are optional: */ readonly domainName: pulumi.Output<string>; /** * Configuration block for EBS related options, may be required based on chosen [instance size](https://aws.amazon.com/opensearch-service/pricing/). Detailed below. */ readonly ebsOptions: pulumi.Output<outputs.opensearch.DomainEbsOptions>; /** * Configuration block for encrypt at rest options. Only available for [certain instance types](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/encryption-at-rest.html). Detailed below. */ readonly encryptAtRest: pulumi.Output<outputs.opensearch.DomainEncryptAtRest>; /** * Domain-specific endpoint used to submit index, search, and data upload requests. */ readonly endpoint: pulumi.Output<string>; /** * V2 domain endpoint that works with both IPv4 and IPv6 addresses, used to submit index, search, and data upload requests. */ readonly endpointV2: pulumi.Output<string>; /** * Either `Elasticsearch_X.Y` or `OpenSearch_X.Y` to specify the engine version for the Amazon OpenSearch Service domain. For example, `OpenSearch_1.0` or `Elasticsearch_7.9`. * See [Creating and managing Amazon OpenSearch Service domains](http://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomains). * Defaults to the lastest version of OpenSearch. */ readonly engineVersion: pulumi.Output<string>; /** * Configuration block for enabling and managing IAM Identity Center integration within a domain. Detailed below. */ readonly identityCenterOptions: pulumi.Output<outputs.opensearch.DomainIdentityCenterOptions | undefined>; /** * The IP address type for the endpoint. Valid values are `ipv4` and `dualstack`. */ readonly ipAddressType: pulumi.Output<string>; /** * Configuration block for publishing slow and application logs to CloudWatch Logs. This block can be declared multiple times, for each log_type, within the same resource. Detailed below. */ readonly logPublishingOptions: pulumi.Output<outputs.opensearch.DomainLogPublishingOption[] | undefined>; /** * Configuration block for node-to-node encryption options. Detailed below. */ readonly nodeToNodeEncryption: pulumi.Output<outputs.opensearch.DomainNodeToNodeEncryption>; /** * Configuration to add Off Peak update options. ([documentation](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/off-peak.html)). Detailed below. */ readonly offPeakWindowOptions: pulumi.Output<outputs.opensearch.DomainOffPeakWindowOptions>; /** * Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration. */ readonly region: pulumi.Output<string>; /** * 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 setting irrelevant. For domains running earlier versions, OpenSearch takes daily automated snapshots. */ readonly snapshotOptions: pulumi.Output<outputs.opensearch.DomainSnapshotOptions | undefined>; /** * Software update options for the domain. Detailed below. */ readonly softwareUpdateOptions: pulumi.Output<outputs.opensearch.DomainSoftwareUpdateOptions>; /** * Map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. */ readonly tags: pulumi.Output<{ [key: string]: string; } | undefined>; /** * Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. */ readonly tagsAll: pulumi.Output<{ [key: string]: string; }>; /** * Configuration block for VPC related options. Adding or removing this configuration forces a new resource ([documentation](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html)). Detailed below. */ readonly vpcOptions: pulumi.Output<outputs.opensearch.DomainVpcOptions | undefined>; /** * Create a Domain resource with the given unique name, arguments, and options. * * @param name The _unique_ name of the resource. * @param args The arguments to use to populate this resource's properties. * @param opts A bag of options that control this resource's behavior. */ constructor(name: string, args?: DomainArgs, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering Domain resources. */ export interface DomainState { /** * IAM policy document specifying the access policies for the domain. */ accessPolicies?: pulumi.Input<string>; /** * Key-value string pairs to specify advanced configuration options. Note that the values for these configuration options must be strings (wrapped in quotes) or they may be wrong and cause a perpetual diff, causing the provider to want to recreate your OpenSearch domain on every apply. */ advancedOptions?: pulumi.Input<{ [key: string]: pulumi.Input<string>; }>; /** * Configuration block for [fine-grained access control](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/fgac.html). Detailed below. */ advancedSecurityOptions?: pulumi.Input<inputs.opensearch.DomainAdvancedSecurityOptions>; /** * Configuration block for parameters required to enable all machine learning features. Detailed below. */ aimlOptions?: pulumi.Input<inputs.opensearch.DomainAimlOptions>; /** * ARN of the domain. */ arn?: pulumi.Input<string>; /** * Configuration block for the Auto-Tune options of the domain. Detailed below. */ autoTuneOptions?: pulumi.Input<inputs.opensearch.DomainAutoTuneOptions>; /** * Configuration block for the cluster of the domain. Detailed below. */ clusterConfig?: pulumi.Input<inputs.opensearch.DomainClusterConfig>; /** * Configuration block for authenticating dashboard with Cognito. Detailed below. */ cognitoOptions?: pulumi.Input<inputs.opensearch.DomainCognitoOptions>; /** * Domain-specific endpoint for Dashboard without https scheme. */ dashboardEndpoint?: pulumi.Input<string>; /** * V2 domain endpoint for Dashboard that works with both IPv4 and IPv6 addresses, without https scheme. */ dashboardEndpointV2?: pulumi.Input<string>; /** * Configuration block for domain endpoint HTTP(S) related options. Detailed below. */ domainEndpointOptions?: pulumi.Input<inputs.opensearch.DomainDomainEndpointOptions>; /** * Dual stack hosted zone ID for the domain. */ domainEndpointV2HostedZoneId?: pulumi.Input<string>; /** * Unique identifier for the domain. */ domainId?: pulumi.Input<string>; /** * Name of the domain. * * The following arguments are optional: */ domainName?: pulumi.Input<string>; /** * Configuration block for EBS related options, may be required based on chosen [instance size](https://aws.amazon.com/opensearch-service/pricing/). Detailed below. */ ebsOptions?: pulumi.Input<inputs.opensearch.DomainEbsOptions>; /** * Configuration block for encrypt at rest options. Only available for [certain instance types](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/encryption-at-rest.html). Detailed below. */ encryptAtRest?: pulumi.Input<inputs.opensearch.DomainEncryptAtRest>; /** * Domain-specific endpoint used to submit index, search, and data upload requests. */ endpoint?: pulumi.Input<string>; /** * V2 domain endpoint that works with both IPv4 and IPv6 addresses, used to submit index, search, and data upload requests. */ endpointV2?: pulumi.Input<string>; /** * Either `Elasticsearch_X.Y` or `OpenSearch_X.Y` to specify the engine version for the Amazon OpenSearch Service domain. For example, `OpenSearch_1.0` or `Elasticsearch_7.9`. * See [Creating and managing Amazon OpenSearch Service domains](http://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomains). * Defaults to the lastest version of OpenSearch. */ engineVersion?: pulumi.Input<string>; /** * Configuration block for enabling and managing IAM Identity Center integration within a domain. Detailed below. */ identityCenterOptions?: pulumi.Input<inputs.opensearch.DomainIdentityCenterOptions>; /** * The IP address type for the endpoint. Valid values are `ipv4` and `dualstack`. */ ipAddressType?: pulumi.Input<string>; /** * Configuration block for publishing slow and application logs to CloudWatch Logs. This block can be declared multiple times, for each log_type, within the same resource. Detailed below. */ logPublishingOptions?: pulumi.Input<pulumi.Input<inputs.opensearch.DomainLogPublishingOption>[]>; /** * Configuration block for node-to-node encryption options. Detailed below. */ nodeToNodeEncryption?: pulumi.Input<inputs.opensearch.DomainNodeToNodeEncryption>; /** * Configuration to add Off Peak update options. ([documentation](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/off-peak.html)). Detailed below. */ offPeakWindowOptions?: pulumi.Input<inputs.opensearch.DomainOffPeakWindowOptions>; /** * Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration. */ region?: pulumi.Input<string>; /** * 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 setting irrelevant. For domains running earlier versions, OpenSearch takes daily automated snapshots. */ snapshotOptions?: pulumi.Input<inputs.opensearch.DomainSnapshotOptions>; /** * Software update options for the domain. Detailed below. */ softwareUpdateOptions?: pulumi.Input<inputs.opensearch.DomainSoftwareUpdateOptions>; /** * Map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. */ tags?: pulumi.Input<{ [key: string]: pulumi.Input<string>; }>; /** * Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. */ tagsAll?: pulumi.Input<{ [key: string]: pulumi.Input<string>; }>; /** * Configuration block for VPC related options. Adding or removing this configuration forces a new resource ([documentation](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html)). Detailed below. */ vpcOptions?: pulumi.Input<inputs.opensearch.DomainVpcOptions>; } /** * The set of arguments for constructing a Domain resource. */ export interface DomainArgs { /** * IAM policy document specifying the access policies for the domain. */ accessPolicies?: pulumi.Input<string>; /** * Key-value string pairs to specify advanced configuration options. Note that the values for these configuration options must be strings (wrapped in quotes) or they may be wrong and cause a perpetual diff, causing the provider to want to recreate your OpenSearch domain on every apply. */ advancedOptions?: pulumi.Input<{ [key: string]: pulumi.Input<string>; }>; /** * Configuration block for [fine-grained access control](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/fgac.html). Detailed below. */ advancedSecurityOptions?: pulumi.Input<inputs.opensearch.DomainAdvancedSecurityOptions>; /** * Configuration block for parameters required to enable all machine learning features. Detailed below. */ aimlOptions?: pulumi.Input<inputs.opensearch.DomainAimlOptions>; /** * Configuration block for the Auto-Tune options of the domain. Detailed below. */ autoTuneOptions?: pulumi.Input<inputs.opensearch.DomainAutoTuneOptions>; /** * Configuration block for the cluster of the domain. Detailed below. */ clusterConfig?: pulumi.Input<inputs.opensearch.DomainClusterConfig>; /** * Configuration block for authenticating dashboard with Cognito. Detailed below. */ cognitoOptions?: pulumi.Input<inputs.opensearch.DomainCognitoOptions>; /** * Configuration block for domain endpoint HTTP(S) related options. Detailed below. */ domainEndpointOptions?: pulumi.Input<inputs.opensearch.DomainDomainEndpointOptions>; /** * Name of the domain. * * The following arguments are optional: */ domainName?: pulumi.Input<string>; /** * Configuration block for EBS related options, may be required based on chosen [instance size](https://aws.amazon.com/opensearch-service/pricing/). Detailed below. */ ebsOptions?: pulumi.Input<inputs.opensearch.DomainEbsOptions>; /** * Configuration block for encrypt at rest options. Only available for [certain instance types](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/encryption-at-rest.html). Detailed below. */ encryptAtRest?: pulumi.Input<inputs.opensearch.DomainEncryptAtRest>; /** * Either `Elasticsearch_X.Y` or `OpenSearch_X.Y` to specify the engine version for the Amazon OpenSearch Service domain. For example, `OpenSearch_1.0` or `Elasticsearch_7.9`. * See [Creating and managing Amazon OpenSearch Service domains](http://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomains). * Defaults to the lastest version of OpenSearch. */ engineVersion?: pulumi.Input<string>; /** * Configuration block for enabling and managing IAM Identity Center integration within a domain. Detailed below. */ identityCenterOptions?: pulumi.Input<inputs.opensearch.DomainIdentityCenterOptions>; /** * The IP address type for the endpoint. Valid values are `ipv4` and `dualstack`. */ ipAddressType?: pulumi.Input<string>; /** * Configuration block for publishing slow and application logs to CloudWatch Logs. This block can be declared multiple times, for each log_type, within the same resource. Detailed below. */ logPublishingOptions?: pulumi.Input<pulumi.Input<inputs.opensearch.DomainLogPublishingOption>[]>; /** * Configuration block for node-to-node encryption options. Detailed below. */ nodeToNodeEncryption?: pulumi.Input<inputs.opensearch.DomainNodeToNodeEncryption>; /** * Configuration to add Off Peak update options. ([documentation](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/off-peak.html)). Detailed below. */ offPeakWindowOptions?: pulumi.Input<inputs.opensearch.DomainOffPeakWindowOptions>; /** * Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration. */ region?: pulumi.Input<string>; /** * 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 setting irrelevant. For domains running earlier versions, OpenSearch takes daily automated snapshots. */ snapshotOptions?: pulumi.Input<inputs.opensearch.DomainSnapshotOptions>; /** * Software update options for the domain. Detailed below. */ softwareUpdateOptions?: pulumi.Input<inputs.opensearch.DomainSoftwareUpdateOptions>; /** * Map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. */ tags?: pulumi.Input<{ [key: string]: pulumi.Input<string>; }>; /** * Configuration block for VPC related options. Adding or removing this configuration forces a new resource ([documentation](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html)). Detailed below. */ vpcOptions?: pulumi.Input<inputs.opensearch.DomainVpcOptions>; }