【アップデート】TerraformでEC2の汎用SSD「gp3」が利用可能になりました!

待望のgp3がTerraformで利用可能になりました!
2021.02.05

こんにちは!コンサル部のinomaso(@inomasosan)です。

Terraformで、AWS re:Invent 2020にて発表された新しい汎用SSD「gp3」が利用可能になりました! 2021/1/22のAWSプロバイダーv3.25.0のアップデートで対応したようです。

この記事で学べること

gp3の概要と、Terraformでのコードの書き方。

gp3 is 何?

AWS re:Invent 2020で発表された新しいEBSボリュームタイプです。
gp2と比較した場合、主なメリットは以下となります。

  • 1GBあたりのストレージ料金は20%程度安い。
  • 3,000IOPSまで無料かつ、ベースラインとして保証される。
  • スループットは125MB/秒まで無料かつ、ベースラインとして保証される。

gp2はボリュームサイズに応じてIOPSが上昇します。
例えば、gp2で8GBのEBSを作成した場合、ベースラインパフォーマンスは100IOPSとなりますので、gp3で8GBのストレージを作成した方がコスト・性能共に優れております。

gp3の詳細は、弊社のre:Inventに関するレポートを読んで頂けますと幸いです。

やってみる

1. 環境

今回実行した環境は以下の通りです。

  • macOS Catalina 10.15.7
  • Terraform 0.14.6
  • AWSプロバイダー 3.25.0

2. コード

リージョンやバージョン設定

リソース作成先のリージョンや、各種バージョンを指定します。 AWSプロバイダーのバージョンは3.25.0以上に設定しました。

provider "aws" {
  # 東京リージョン
  region = "ap-northeast-1"
}

terraform {
  # Terraformバージョン指定
  required_version = "0.14.6"

  # AWSプロバイダーバージョン指定
  required_providers {
    aws = {
      source = "hashicorp/aws"
      version = ">= 3.25.0"
    }
  }
}

EC2インスタンス

EC2のEBSボリュームタイプをgp3にします。

resource "aws_instance" "ec2" {
    # Amazon Linux2
    ami = "ami-0992fc94ca0f1415a"
    # インスタンスタイプ
    instance_type = "t3.micro"
    # キーペア
    key_name = "aws-ssh-key"
    # サブネット
    subnet_id = aws_subnet.sub_pub_1a.id
    # セキュリティグループ
    vpc_security_group_ids = [aws_security_group.ec2.id]
    # EBS最適化を有効
    ebs_optimized = "true"

    # EBSのルートボリューム設定
    root_block_device {
        # ボリュームサイズ(GiB)
        volume_size = 8
        # ボリュームタイプ
        volume_type = "gp3"
        # GP3のIOPS
        iops = 3000
        # GP3のスループット
        throughput = 125
        # EC2終了時に削除
        delete_on_termination = true

        # EBSのNameタグ
        tags = {
            Name = "gp3-dev-ec2"
        }
    }

    # EC2のNameタグ
    tags = {
        Name = "gp3-dev-ec2"
    }
}

確認してみる

AWSマネージメントコンソールで、gp3が想定通りに作成されたことを確認できました。

まとめ

Terraformでgp3を利用可能になったので、EC2構築が捗りそうです。
この記事が、どなたかのお役に立てば幸いです。それでは!

参考

Resource: aws_instance