Domain
The Domain resource lets you manage AWS Elasticsearch Domains and their configuration settings.
Minimal Example
Section titled “Minimal Example”Create a basic Elasticsearch Domain with essential properties.
import AWS from "alchemy/aws/control";
const elasticsearchDomain = await AWS.Elasticsearch.Domain("myElasticsearchDomain", { DomainName: "my-elasticsearch-domain", ElasticsearchVersion: "7.10", EBSOptions: { EBSEnabled: true, VolumeType: "gp2", VolumeSize: 10 }, VPCOptions: { SubnetIds: ["subnet-0abcd1234efgh5678"], SecurityGroupIds: ["sg-01234abcd567efgh8"] }, Tags: [ { Key: "Environment", Value: "Development" }, { Key: "Project", Value: "SearchService" } ]});
Advanced Configuration
Section titled “Advanced Configuration”Configure an Elasticsearch Domain with advanced security options and logging.
const advancedElasticsearchDomain = await AWS.Elasticsearch.Domain("secureElasticsearchDomain", { DomainName: "secure-elasticsearch-domain", ElasticsearchVersion: "7.10", AdvancedSecurityOptions: { Enabled: true, InternalUserDatabaseEnabled: true, MasterUserOptions: { MasterUserName: "admin", MasterUserPassword: alchemy.secret(process.env.ES_MASTER_PASSWORD!) } }, LogPublishingOptions: { SearchSlowLog: { Enabled: true, CloudWatchLogGroupArn: "arn:aws:logs:us-west-2:123456789012:log-group:/aws/elasticsearch/my-slow-log", LogType: "All" } }});
Using Cognito for Authentication
Section titled “Using Cognito for Authentication”Create an Elasticsearch Domain that uses Amazon Cognito for user authentication.
const cognitoElasticsearchDomain = await AWS.Elasticsearch.Domain("cognitoElasticsearchDomain", { DomainName: "cognito-elasticsearch-domain", ElasticsearchVersion: "7.10", CognitoOptions: { Enabled: true, UserPoolId: "us-west-2_aBcDeFgHi", IdentityPoolId: "us-west-2:12345678-abcd-1234-abcd-1234567890ab", RoleArn: "arn:aws:iam::123456789012:role/CognitoAccessRole" }});
Snapshot Configuration
Section titled “Snapshot Configuration”Configure an Elasticsearch Domain with snapshot options for data backup.
const snapshotElasticsearchDomain = await AWS.Elasticsearch.Domain("snapshotElasticsearchDomain", { DomainName: "snapshot-elasticsearch-domain", ElasticsearchVersion: "7.10", SnapshotOptions: { AutomatedSnapshotStartHour: 0 // Set to midnight UTC }});
Encryption at Rest
Section titled “Encryption at Rest”Create an Elasticsearch Domain with encryption at rest enabled.
const encryptedElasticsearchDomain = await AWS.Elasticsearch.Domain("encryptedElasticsearchDomain", { DomainName: "encrypted-elasticsearch-domain", ElasticsearchVersion: "7.10", EncryptionAtRestOptions: { Enabled: true, KmsKeyId: "arn:aws:kms:us-west-2:123456789012:key/abcd1234-56ef-78gh-90ij-klmnopqrst" }});