AWS VPCベースのElasticsearchをTerraformで構築する方法


  1. AWSアカウントのセットアップ: まず、AWSのアカウントを作成し、適切な権限を持つIAMユーザーを作成します。IAMユーザーのアクセスキーとシークレットキーを取得し、TerraformがAWSリソースを作成できるように設定します。

  2. VPCの作成: Terraformを使用して、VPCを作成します。以下は、VPCの設定を記述するTerraformコードの例です。

resource "aws_vpc" "my_vpc" {
  cidr_block       = "10.0.0.0/16"
  instance_tenancy = "default"
}
resource "aws_subnet" "my_subnet" {
  vpc_id                  = aws_vpc.my_vpc.id
  cidr_block              = "10.0.0.0/24"
  availability_zone       = "us-east-1a"
}
  1. Elasticsearchクラスタの作成: 次に、Elasticsearchクラスタを作成します。以下は、TerraformでElasticsearchドメインを作成するためのコード例です。
resource "aws_elasticsearch_domain" "my_es_domain" {
  domain_name           = "my-elasticsearch-domain"
  elasticsearch_version = "7.10"
  cluster_config {
    instance_type  = "t2.small.elasticsearch"
    instance_count = 2
  }
  ebs_options {
    ebs_enabled = true
    volume_size = 10
  }
  access_policies = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:${var.region}:${var.account_id}:domain/my-elasticsearch-domain/*"
    }
  ]
}
EOF
}
  1. セキュリティグループの設定: Elasticsearchクラスタにアクセスするために、適切なセキュリティグループを設定する必要があります。以下は、Terraformでセキュリティグループを作成する例です。
resource "aws_security_group" "my_sg" {
  name        = "elasticsearch-sg"
  description = "Allow inbound access to Elasticsearch cluster"
  ingress {
    from_port   = 443
    to_port     = 443
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}
resource "aws_security_group_rule" "my_sg_rule" {
  security_group_id = aws_security_group.my_sg.id
  type              = "ingress"
  from_port         = 443
  to_port           = 443
  protocol          = "tcp"
  source_security_group_id = aws_security_group.my_sg.id
}

これで、AWSのVPCベースのElasticsearchをTerraformで構築するための基本的な手順とコード例をご紹介しました。これらのステップを実行することで、独自のElasticsearchクラスタをセットアップできます。必要に応じて、他の設定オプションや構成も調整することができます。