Package com.pulumi.aws.elasticsearch
Class Domain
- java.lang.Object
-
- com.pulumi.resources.Resource
-
- com.pulumi.resources.CustomResource
-
- com.pulumi.aws.elasticsearch.Domain
-
public class Domain extends com.pulumi.resources.CustomResourceManages an AWS Elasticsearch Domain. ## Example Usage ### Basic Usage
### Access Policy > See also: `aws.elasticsearch.DomainPolicy` resourcepackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.elasticsearch.Domain; import com.pulumi.aws.elasticsearch.DomainArgs; import com.pulumi.aws.elasticsearch.inputs.DomainClusterConfigArgs; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { var example = new Domain("example", DomainArgs.builder() .clusterConfig(DomainClusterConfigArgs.builder() .instanceType("r4.large.elasticsearch") .build()) .domainName("example") .elasticsearchVersion("7.10") .tags(Map.of("Domain", "TestDomain")) .build()); } }
### Log Publishing to CloudWatch Logspackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.AwsFunctions; import com.pulumi.aws.inputs.GetRegionArgs; import com.pulumi.aws.inputs.GetCallerIdentityArgs; import com.pulumi.aws.elasticsearch.Domain; import com.pulumi.aws.elasticsearch.DomainArgs; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { final var config = ctx.config(); final var domain = config.get("domain").orElse("tf-test"); final var current = AwsFunctions.getRegion(GetRegionArgs.builder() .build()); final var currentGetCallerIdentity = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder() .build()); var example = new Domain("example", DomainArgs.builder() .domainName(domain) .accessPolicies(""" { \"Version\": \"2012-10-17\", \"Statement\": [ { \"Action\": \"es:*\", \"Principal\": \"*\", \"Effect\": \"Allow\", \"Resource\": \"arn:aws:es:%s:%s:domain/%s/*\", \"Condition\": { \"IpAddress\": {\"aws:SourceIp\": [\"66.193.100.22/32\"]} } } ] } ", current.region(),currentGetCallerIdentity.accountId(),domain)) .build()); } }
### VPC based ESpackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.cloudwatch.LogGroup; import com.pulumi.aws.cloudwatch.LogGroupArgs; import com.pulumi.aws.iam.IamFunctions; import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs; import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs; import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs; import com.pulumi.aws.cloudwatch.LogResourcePolicy; import com.pulumi.aws.cloudwatch.LogResourcePolicyArgs; import com.pulumi.aws.elasticsearch.Domain; import com.pulumi.aws.elasticsearch.DomainArgs; import com.pulumi.aws.elasticsearch.inputs.DomainLogPublishingOptionArgs; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { var exampleLogGroup = new LogGroup("exampleLogGroup", LogGroupArgs.builder() .name("example") .build()); final var example = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder() .statements(GetPolicyDocumentStatementArgs.builder() .principals(GetPolicyDocumentStatementPrincipalArgs.builder() .type("Service") .identifiers("es.amazonaws.com") .build()) .effect("Allow") .actions( "logs:PutLogEvents", "logs:PutLogEventsBatch", "logs:CreateLogStream") .resources("arn:aws:logs:*") .build()) .build()); var exampleLogResourcePolicy = new LogResourcePolicy("exampleLogResourcePolicy", LogResourcePolicyArgs.builder() .policyName("example") .policyDocument(example.json()) .build()); var exampleDomain = new Domain("exampleDomain", DomainArgs.builder() .logPublishingOptions(DomainLogPublishingOptionArgs.builder() .cloudwatchLogGroupArn(exampleLogGroup.arn()) .logType("INDEX_SLOW_LOGS") .build()) .build()); } }
## Import Using `pulumi import`, import Elasticsearch domains using the `domainName`. For example: ```sh $ pulumi import aws:elasticsearch/domain:Domain example domain_name ```package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.ec2.Ec2Functions; import com.pulumi.aws.ec2.inputs.GetVpcArgs; import com.pulumi.aws.ec2.inputs.GetSubnetsArgs; import com.pulumi.aws.ec2.inputs.GetSubnetsFilterArgs; import com.pulumi.aws.AwsFunctions; import com.pulumi.aws.inputs.GetRegionArgs; import com.pulumi.aws.inputs.GetCallerIdentityArgs; import com.pulumi.aws.ec2.SecurityGroup; import com.pulumi.aws.ec2.SecurityGroupArgs; import com.pulumi.aws.ec2.inputs.SecurityGroupIngressArgs; import com.pulumi.aws.iam.ServiceLinkedRole; import com.pulumi.aws.iam.ServiceLinkedRoleArgs; import com.pulumi.aws.elasticsearch.Domain; import com.pulumi.aws.elasticsearch.DomainArgs; import com.pulumi.aws.elasticsearch.inputs.DomainClusterConfigArgs; import com.pulumi.aws.elasticsearch.inputs.DomainVpcOptionsArgs; import com.pulumi.resources.CustomResourceOptions; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { final var config = ctx.config(); final var vpc = config.require("vpc"); final var domain = config.get("domain").orElse("tf-test"); final var selected = Ec2Functions.getVpc(GetVpcArgs.builder() .tags(Map.of("Name", vpc)) .build()); final var selectedGetSubnets = Ec2Functions.getSubnets(GetSubnetsArgs.builder() .filters(GetSubnetsFilterArgs.builder() .name("vpc-id") .values(selected.id()) .build()) .tags(Map.of("Tier", "private")) .build()); final var current = AwsFunctions.getRegion(GetRegionArgs.builder() .build()); final var currentGetCallerIdentity = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder() .build()); var es = new SecurityGroup("es", SecurityGroupArgs.builder() .ingress(SecurityGroupIngressArgs.builder() .fromPort(443) .toPort(443) .protocol("tcp") .cidrBlocks(selected.cidrBlock()) .build()) .name(String.format("%s-elasticsearch-%s", vpc,domain)) .description("Managed by Pulumi") .vpcId(selected.id()) .build()); var esServiceLinkedRole = new ServiceLinkedRole("esServiceLinkedRole", ServiceLinkedRoleArgs.builder() .awsServiceName("opensearchservice.amazonaws.com") .build()); var esDomain = new Domain("esDomain", DomainArgs.builder() .clusterConfig(DomainClusterConfigArgs.builder() .instanceType("m4.large.elasticsearch") .zoneAwarenessEnabled(true) .build()) .vpcOptions(DomainVpcOptionsArgs.builder() .subnetIds( selectedGetSubnets.ids()[0], selectedGetSubnets.ids()[1]) .securityGroupIds(es.id()) .build()) .domainName(domain) .elasticsearchVersion("6.3") .advancedOptions(Map.of("rest.action.multi.allow_explicit_index", "true")) .accessPolicies(""" { \t\"Version\": \"2012-10-17\", \t\"Statement\": [ \t\t{ \t\t\t\"Action\": \"es:*\", \t\t\t\"Principal\": \"*\", \t\t\t\"Effect\": \"Allow\", \t\t\t\"Resource\": \"arn:aws:es:%s:%s:domain/%s/*\" \t\t} \t] } ", current.region(),currentGetCallerIdentity.accountId(),domain)) .tags(Map.of("Domain", "TestDomain")) .build(), CustomResourceOptions.builder() .dependsOn(esServiceLinkedRole) .build()); } }
-
-
Constructor Summary
Constructors Constructor Description Domain(java.lang.String name)Domain(java.lang.String name, DomainArgs args)Domain(java.lang.String name, DomainArgs args, com.pulumi.resources.CustomResourceOptions options)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description com.pulumi.core.Output<java.lang.String>accessPolicies()com.pulumi.core.Output<java.util.Map<java.lang.String,java.lang.String>>advancedOptions()com.pulumi.core.Output<DomainAdvancedSecurityOptions>advancedSecurityOptions()com.pulumi.core.Output<java.lang.String>arn()com.pulumi.core.Output<DomainAutoTuneOptions>autoTuneOptions()com.pulumi.core.Output<DomainClusterConfig>clusterConfig()com.pulumi.core.Output<java.util.Optional<DomainCognitoOptions>>cognitoOptions()com.pulumi.core.Output<DomainDomainEndpointOptions>domainEndpointOptions()com.pulumi.core.Output<java.lang.String>domainId()com.pulumi.core.Output<java.lang.String>domainName()com.pulumi.core.Output<DomainEbsOptions>ebsOptions()com.pulumi.core.Output<java.util.Optional<java.lang.String>>elasticsearchVersion()com.pulumi.core.Output<DomainEncryptAtRest>encryptAtRest()com.pulumi.core.Output<java.lang.String>endpoint()static Domainget(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, DomainState state, com.pulumi.resources.CustomResourceOptions options)Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.com.pulumi.core.Output<java.lang.String>kibanaEndpoint()com.pulumi.core.Output<java.util.Optional<java.util.List<DomainLogPublishingOption>>>logPublishingOptions()com.pulumi.core.Output<DomainNodeToNodeEncryption>nodeToNodeEncryption()com.pulumi.core.Output<java.lang.String>region()com.pulumi.core.Output<java.util.Optional<DomainSnapshotOptions>>snapshotOptions()com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>>tags()com.pulumi.core.Output<java.util.Map<java.lang.String,java.lang.String>>tagsAll()com.pulumi.core.Output<java.util.Optional<DomainVpcOptions>>vpcOptions()
-
-
-
Constructor Detail
-
Domain
public Domain(java.lang.String name)
- Parameters:
name- The _unique_ name of the resulting resource.
-
Domain
public Domain(java.lang.String name, @Nullable DomainArgs args)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.
-
Domain
public Domain(java.lang.String name, @Nullable DomainArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.options- A bag of options that control this resource's behavior.
-
-
Method Detail
-
accessPolicies
public com.pulumi.core.Output<java.lang.String> accessPolicies()
- Returns:
- IAM policy document specifying the access policies for the domain.
-
advancedOptions
public com.pulumi.core.Output<java.util.Map<java.lang.String,java.lang.String>> advancedOptions()
- Returns:
- 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 Elasticsearch domain on every apply.
-
advancedSecurityOptions
public com.pulumi.core.Output<DomainAdvancedSecurityOptions> advancedSecurityOptions()
- Returns:
- Configuration block for [fine-grained access control](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/fgac.html). Detailed below.
-
arn
public com.pulumi.core.Output<java.lang.String> arn()
- Returns:
- ARN of the domain.
-
autoTuneOptions
public com.pulumi.core.Output<DomainAutoTuneOptions> autoTuneOptions()
- Returns:
- Configuration block for the Auto-Tune options of the domain. Detailed below.
-
clusterConfig
public com.pulumi.core.Output<DomainClusterConfig> clusterConfig()
- Returns:
- Configuration block for the cluster of the domain. Detailed below.
-
cognitoOptions
public com.pulumi.core.Output<java.util.Optional<DomainCognitoOptions>> cognitoOptions()
- Returns:
- Configuration block for authenticating Kibana with Cognito. Detailed below.
-
domainEndpointOptions
public com.pulumi.core.Output<DomainDomainEndpointOptions> domainEndpointOptions()
- Returns:
- Configuration block for domain endpoint HTTP(S) related options. Detailed below.
-
domainId
public com.pulumi.core.Output<java.lang.String> domainId()
- Returns:
- Unique identifier for the domain.
-
domainName
public com.pulumi.core.Output<java.lang.String> domainName()
- Returns:
- Name of the domain. The following arguments are optional:
-
ebsOptions
public com.pulumi.core.Output<DomainEbsOptions> ebsOptions()
- Returns:
- Configuration block for EBS related options, may be required based on chosen [instance size](https://aws.amazon.com/elasticsearch-service/pricing/). Detailed below.
-
elasticsearchVersion
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> elasticsearchVersion()
- Returns:
- Version of Elasticsearch to deploy. Defaults to `1.5`.
-
encryptAtRest
public com.pulumi.core.Output<DomainEncryptAtRest> encryptAtRest()
- Returns:
- Configuration block for encrypt at rest options. Only available for [certain instance types](http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/aes-supported-instance-types.html). Detailed below.
-
endpoint
public com.pulumi.core.Output<java.lang.String> endpoint()
- Returns:
- Domain-specific endpoint used to submit index, search, and data upload requests.
-
kibanaEndpoint
public com.pulumi.core.Output<java.lang.String> kibanaEndpoint()
- Returns:
- Domain-specific endpoint for kibana without HTTPS scheme.
-
logPublishingOptions
public com.pulumi.core.Output<java.util.Optional<java.util.List<DomainLogPublishingOption>>> logPublishingOptions()
- Returns:
- 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.
-
nodeToNodeEncryption
public com.pulumi.core.Output<DomainNodeToNodeEncryption> nodeToNodeEncryption()
- Returns:
- Configuration block for node-to-node encryption options. Detailed below.
-
region
public com.pulumi.core.Output<java.lang.String> region()
- Returns:
- 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.
-
snapshotOptions
public com.pulumi.core.Output<java.util.Optional<DomainSnapshotOptions>> snapshotOptions()
- Returns:
- Configuration block for snapshot related options. Detailed below. DEPRECATED. For domains running Elasticsearch 5.3 and later, Amazon ES takes hourly automated snapshots, making this setting irrelevant. For domains running earlier versions of Elasticsearch, Amazon ES takes daily automated snapshots.
-
tags
public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>> tags()
- Returns:
- 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.
-
tagsAll
public com.pulumi.core.Output<java.util.Map<java.lang.String,java.lang.String>> tagsAll()
- Returns:
- Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
-
vpcOptions
public com.pulumi.core.Output<java.util.Optional<DomainVpcOptions>> vpcOptions()
- Returns:
- Configuration block for VPC related options. Adding or removing this configuration forces a new resource ([documentation](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-vpc.html#es-vpc-limitations)). Detailed below.
-
get
public static Domain get(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, @Nullable DomainState state, @Nullable com.pulumi.resources.CustomResourceOptions options)
Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.- Parameters:
name- The _unique_ name of the resulting resource.id- The _unique_ provider ID of the resource to lookup.state-options- Optional settings to control the behavior of the CustomResource.
-
-